簡體   English   中英

在地圖上的正確位置制作貝塞爾曲線控制點

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM