這與this question類似,但有相反之處。幾何:找到兩點之間的特定距離
我有兩個地理點(緯度,經度)A和B.假設他們相隔40海里。我想計算A點和B點之間10海里點的座標。我確定這是非常基本的數學運算,但已經過了十年,因爲我不得不這樣做數學(我每天使用的其他類型),所以我卡住了。任何指針將不勝感激。我的這個項目的代碼是用Python編寫的,但是數學不是特定於語言的,所以我並不十分關心 - 我只是想知道公式。
這與this question類似,但有相反之處。幾何:找到兩點之間的特定距離
我有兩個地理點(緯度,經度)A和B.假設他們相隔40海里。我想計算A點和B點之間10海里點的座標。我確定這是非常基本的數學運算,但已經過了十年,因爲我不得不這樣做數學(我每天使用的其他類型),所以我卡住了。任何指針將不勝感激。我的這個項目的代碼是用Python編寫的,但是數學不是特定於語言的,所以我並不十分關心 - 我只是想知道公式。
你有兩個位置矢量(緯度,經度)。從那些你可以計算你的方位從A點到B點(如果你還不知道的話)。藉助方位和距離,您可以計算出新的經度和緯度。
所有你需要知道的數學在這裏被引用:http://www.movable-type.co.uk/scripts/latlong.html。我很少處理這些東西,很高興將鏈接保存在某處(閱讀:打印)。
這是一個很棒的資源。正是我需要的。謝謝!!! – RustyAtMath 2010-08-05 04:59:39
因此,它是這樣的:
x B (x2,y2)
\
\
\
\
x C (x3, y3)
\
\
\
X A (x1,y1)
的方式,我會做,這是第一次發現該行的角度:
angle_A_B = arctan((y2-y1)-(x2-x1))
然後給出A和C之間的距離是已知的(允許稱之爲distance_A_C):
sin(angle_A_B) = delta_x_A_C/distance_A_C
delta_x_A_C = distance_A_C * sin(angle_A_B)
因此
:
x3 = x1+delta_x_A_C
同爲Y3的值:
delta_y_A_C = distance_A_C * cos(angle_A_B)
因此
:
y3 = y1+delta_y_A_C
我可能已經得到了混合,所以如果它不工作改變+
到-
跡象。
這不適用於球體,這是這裏的問題。它找到了「直線」,而不是大圓線。 – ShreevatsaR 2010-08-05 06:15:31
啊,好的。沒有意識到它是字面上的地球表面。 – slebetman 2010-08-05 06:36:02
即使這個解決方案與原始問題不是100%準確的,對我來說也是非常有幫助的。 [這個算法的JS實現](https://gist.github.com/1965850) – fguillen 2012-03-03 12:23:46
我相信Haversine Formula可以在這裏應用。如果它能幫助我用C#,Java和Javascript實現它?
大概由「A和B之間的界限」表示球體上的線,而不是3D空間中的直線(它貫穿球體)?後者可能更容易編碼,並可能足夠接近你的目的? – ShreevatsaR 2010-08-05 04:29:15
是的,球體上的線就是我的意思。直線確實更容易計算;我不完全確定它是否足夠接近(我不知道它會在我所處的相對較短的距離上會產生多大的差異)。 – RustyAtMath 2010-08-05 04:46:09