2014-09-04 83 views
1

我有3個緯度和logintude:街道和點之間的距離,如果緯度和logintude

X: 1.000000000 1.000000000

Y: 2.000000000 2.000000000

Z: 3.000000000 3.000000000

我需要計算Z和Z之間的最小距離d。通過X形成的線 - > Y,請幫助,解決我的問題到現在爲止

PHP代碼:

function calc ($a, $ay, $b, $by,$c, $cy) { 
    $a = array($a, $ay, 0);// i use 0 altitude always 
    $b = array($b, $by, 0); 
    $c = array($c, $cy, 0); 
    $ab = array(
     (($a[1] * $b[2]) - ($b[1] * $a[2])), 
     (($a[2] * $b[0]) - ($b[2] * $a[0])), 
     (($a[0] * $b[1]) - ($b[0] * $a[1])) 
    ); 
    $normal = pow(pow($ab[0],2)+pow($ab[1],2)+pow($ab[2],2),0.5); 
    $d = array(
     ($ab[0]/$normal), 
     ($ab[1]/$normal), 
     ($ab[2]/$normal) 
    ); 
    $e_ = (($d[0] * $c[0]) + ($d[1] * $c[1]) + ($d[2] * $c[2])); 
    $e = acos($e_); 
    $res = pi()/2 - $e; 
    $res = $res * 6378.1; 
    return $res; 
} 
+1

最小距離'0'因爲這些點是共線的。 – abiessu 2014-09-04 21:10:24

回答

2

,我們需要在這裏做一些球面幾何學。如果我們只是在飛機上工作,這個問題很容易https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line在一個球體上的事情更加棘手。

首先我們指的是由X - > Y組成的線。我們可能是指一個大圓圈https://en.wikipedia.org/wiki/Great_circle 例如赤道。

假設對於一個時刻,點X,Y分別爲在赤道上,則Z和赤道之間的距離將是正比於Z的緯度來解決這個問題。將旋轉

單程我們的點使得X和Y位於赤道上,然後找到Z的緯度。這樣做的過程是(設置軸,使得x軸通過0,0輸出,y軸是正向的,z軸正北)

  1. 繞z軸旋轉X→X1,Y→Y1,Z→Z1,X1的經度爲零。
  2. 圍繞y軸X1 - > X2,Y1-> Y2,Z1-> Z2旋轉,因此X2的緯度爲零。
  3. 繞Z軸X2-> X3,的Y2> Y3,Z2-> Z3所以Y3的緯度爲零

我們現在已經在赤道上都X3和Y3,可以找到Z3的緯度。實際距離將是地球的半徑* Z3弧度的緯度

好奇地@abiessu評論實際上並不正確,通過1N 1E和2N 2E的大圓不完全貫穿3N 3E。我做了14釐米的距離。


更簡單的方法來計算,這是找到X和Y的叉積,W = X^Y。該載體是垂直於該平面通過X,Y和球體的中心。現在找到點積W。 Z這是在W和Z * len(W)* len(Z)之間的角度。因此,用這兩個長度來劃分點積,給出a和找到pi/2-a平面上Z的傾斜角度。乘以半徑以獲得距離。


以在1N 1E的點的示例採取在單位球面上

一個1.0N 1.0E(0.999695,0.017450,0.017452)

b 2.0N 2.0E(0.998782,0.034878點,0。034899)

Ç3.0N 3.0E(0.997261,0.052264,0.052336)

一個^ B(0.000000,-0.017458,0.017439)

d =單元(^ B)(0.000011,-0.707484 ,0.706730)

d。 Ç0.000022543731833669922

E = ACOS(d C)= 1.570773783063061弧度

PI/2 - E =地球上0.000022543731835522607

0.14378617602014673公里距離與半徑6378.1公里

+0

您能否演示假設0高度的示例的解決方案? – 2014-09-08 20:08:29

+0

最後一節是一個例子。您可以使用知道的答案對各種示例運行相同的過程。舉例來說,赤道上的任何兩點,以及北緯45度的三分之一。距離將是赤道至極點5000公里的一半。 – 2014-09-08 23:17:06

+0

真的thx,aparently解決了我的問題 – 2014-09-09 17:19:19