[英]make bezier curve control points at right place on the map
我想在兩個位置點之間繪制貝塞爾曲線。 我可以根據stackoverflow上的一些答案繪制一些曲線,但是貝塞爾曲線控制點的點在某些情況下是錯誤的,盡管我對貝塞爾曲線使用了相同的簡單公式。
我正在做的是在正確的位置放置兩個貝塞爾曲線控制點,-制作一條始終應該正交於兩個位置之間的直線的線。 -制作兩個貝塞爾曲線控制點(+和-),它們位於正交線上某處的中間,並且位於兩個位置中的每個位置。
但是在某些情況下(兩個位置不在水平或垂直位置),該線不會像下面那樣正交,因為控制點不在正交線上,我想知道latitudeDelta標度和longitudeDelta標度之間是否存在差異,導致問題,但不確定。
和我的計算是這樣的。
const slopeOfLinearLine = (destination.latitude - origin.latitude) / (destination.longitude - origin.longitude)
const slopeOfOrthogonalLine = -1 / slopeOfLinearLine
const x = some x value to move right or left.
const y = slopeOfOrthogonalLine * x
const topOfTriangle = { latitude: midLinearLine.latitude + y, longitude: midLinearLine.longitude + x }
請讓我知道有人對此問題有任何想法。 謝謝!
緯度和經度的單位度數(千米/英里)不同,因此對於通常使用的投影比例,因比例因子f=Cos(latitude)
,地圖是各向異性的。
所以你可以:
1)在屏幕坐標系中生成控制點貝塞爾曲線(像素)
要么
2)使用此頁面上的公式在緯度/經度系統中建立正確的中間垂直線-在大圓弧處找到中間點,在該點找到軸承,找到垂直軸承,在垂直軸承處距中間一定距離處建立點
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.