關於已知兩點經緯度求球面最短距離的公式推導


已知兩點經緯度計算球面距離的公式,一搜一大堆,形式如下:

可是至於這個公式為什么是這樣的,今天推導了一下,詳細推導過程如下。首先畫個圖(圖1),要不然空間想象能力差的話容易犯糊塗。首先對圖1做個大致的說明,紅色的半圓表示赤道,藍色的圓弧表示本初子午線(也就是經度為0的子午線)。球最上方是北極點,點A和點B分別為要計算的兩個點,坐標分別為A(jA,wA)和B(jB,wB)。

圖1 示意圖

 

再開始推導之前,我們需要在圖中繪制一些輔助線,便於后面的描述和推導。如圖1所示,A(jA,wA),B(jB,wB)兩點分別為球面上的兩點,坐標為經緯度表示。延A、B兩點分別做垂直於赤道平面的垂線交赤道面為C、D兩點。連接C、D兩點,然后過A做CD的平行線交BD與點E。至此,所有的輔助線繪制完畢。假設地球為一個規則的圓球,半徑為R(其實地球是一個橢球體,赤道的半徑比極地的半徑稍微大一點點)。

第一步:確定已知條件,

 

第二步:在直角和直角中有:

 

第三步:在平面ABCD中,有:

 

第四步:在直角中,使用勾股定理可以得到AB的直線長度。如下:

 

第五步:這里需要引入一個公式(5),就是大名鼎鼎的余弦定理,假設三角形的三個角為A,B,C,則有:

把上面的公式(1)、(2)、(3)、(5)帶入(4)中,然后整理可以得到:

 

最后,通過整理得到AB之間的直線距離為:

第六步:我們已經知道AB的直線距離,那么AB的弧長距離可以先通過計算中對應的圓心角,然后用弧長公式計算出來。這里在依舊使用余弦定理公式(5),經過變形可以得到:

 

把式(6)帶入式(7),化簡得到:

 

最終,我們得到了一個關於圓心角的余弦值的公式:

 

第七步:知道圓心角,計算弧長的公式很簡單,使用半徑乘以圓心角(弧度單位)即可:

 

所以最后我們就得到了球面上AB的距離應該是:

最后使用公式(10)就可以編寫代碼來計算球面上任意兩點間的最短距離了。這里使用的是一個規則的球來代替的橢球的,肯定會有誤差的,一般都用這個公式來進行計算。代碼就不寫了,也就一兩句話就出來了。最后需要注意的就是,需要把經緯度都化成弧度單位。

…………………………………………………華麗的分割線………………………………………………
……………………………………以下內容更新於2013年1月30日…………………………………………

昨天使用立體幾何的知識推導了一下球面兩點的距離公式,發現比較復雜,今天想到一個簡單的方法,使用空間直角坐標系來推導,很方便。首先我們需要建立一個空間坐標系:在赤道平面內,X軸由球心O指向本初子午線,Y軸在赤道平面內垂直於X軸,Z軸垂直於赤道平面朝向北極。還是假設AB兩點的經緯度坐標為:A(jA,wA),B(jB,wB)。由該坐標系的定義以及經緯度的定義可以把上面的AB兩點的坐標轉換為該坐標系中的坐標如下:

 

由兩點距離公式可以得到AB的直線距離為:

 

對於球面上的任意一個點(X,Y,Z),都有:

 

把上面的公式整理就可以得到(下面用到了一個積化和差公式):

 

好了,大功告成,是不是比用立體幾何要簡單的多。接下來就是用上面的弦長和弧長的關系來計算AB的弧長就可以了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM