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

2021-06-17 17:23:43 字數 2079 閱讀 2684

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

可是至於這個公式為什麼是這樣的,今天推導了一下,詳細推導過程如下。首先畫個圖(圖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中,有:

第四步:在直角

第五步:這裡需要引入乙個公式(5),就是大名鼎鼎的餘弦定理,假設三角形的三個角為a,b,c,則有:

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

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

第六步:我們已經知道ab的直線距離,那麼ab的弧長距離可以先通過計算

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

最終,我們得到了乙個關於圓心角

第七步:知道圓心角

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

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

…………………………………………………華麗的分割線………………………………………………

……………………………………以下內容更新於2023年1月30日…………………………………………

昨天使用立體幾何的知識推導了一下球面兩點的距離公式,發現比較複雜,今天想到乙個簡單的方法,使用空間直角座標系來推導,很方便。首先我們需要建立乙個空間座標系:在赤道平面內,x軸由球心o指向本初子午線,y軸在赤道平面內垂直於x軸,z軸垂直於赤道平面朝向北極。還是假設ab兩點的經緯度座標為:a(ja,wa),b(jb,wb)。由該座標系的定義以及經緯度的定義可以把上面的ab兩點的座標轉換為該座標系中的座標如下:

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

對於球面上的任意乙個點(x,y,z),都有:

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

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

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

已知兩點經緯度計算球面距離的公式,一搜一大堆,形式如下 可是至於這個公式為什麼是這樣的,今天推導了一下,詳細推導過程如下。首先畫個圖 圖1 要不然空間想象能力差的話容易犯糊塗。首先對圖1做個大致的說明,紅色的半圓表示赤道,藍色的圓弧表示本初子午線 也就是經度為0的子午線 球最上方是北極點,點a和點b...

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

已知兩點經緯度計算球面距離的公式,一搜一大堆,形式如下 可是至於這個公式為什麼是這樣的,今天推導了一下,詳細推導過程如下。首先畫個圖 圖1 要不然空間想象能力差的話容易犯糊塗。首先對圖1做個大致的說明,紅色的半圓表示赤道,藍色的圓弧表示本初子午線 也就是經度為0的子午線 球最上方是北極點,點a和點b...

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

已知兩點經緯度計算球面距離的公式,一搜一大堆,形式如下 可是至於這個公式為什麼是這樣的,今天推導了一下,詳細推導過程如下。首先畫個圖 圖1 要不然空間想象能力差的話容易犯糊塗。首先對圖1做個大致的說明,紅色的半圓表示赤道,藍色的圓弧表示本初子午線 也就是經度為0的子午線 球最上方是北極點,點a和點b...