球面兩點間的球面距離的計算

來源:互聯網
上載者:User
球面兩點間的球面距離的計算

 

實際上這是一個很簡單的問題,今天之所以把他提出來並作出解決方案,是因為昨天在討論項目的時候,項目lead提出計算地球球面上兩點的球面距離是很難的,實際上是一個很簡單的立體幾何的計算。另一方面,權當作是練習一下C/C++語言,並且鍛煉一下自己的設計能力吧。

 

1.  提出問題

已知球面的兩點,為了方便起見,以經緯度來唯一標識點的位置(相關概念請參照2.相關預備知識),要求計算出它們的球面距離。

 

 

2.  相關預備知識

這兒提到的預備知識是地球的相關知識,如形狀和大小、緯度和經度等相關概念。

(1)形狀和大小:

地球形狀是一個兩極部位略扁的不規則的球體。地球的平均半徑為6371千米,赤道半徑6378千米,極半徑6357千米。赤道周長約為4萬千米。

(2)緯線和緯度、經線和經度

①        緯線:緯線都是圓,也稱為緯線圈,長度不等。赤道最長,由赤道向兩極逐漸縮短,最後成一點。緯線指示東西方向。

②        緯度:赤道是零度緯線。赤道以北的緯度,叫北緯,用“N”作代號;赤道以南的緯度叫南緯,用“S”作代號。北緯、南緯各有90°。

③        經線:也叫子午線。經線是半圓,所有經線長相等。經線指示南北方向。

④        經度:零度經線叫做本初子午線。從本初子午線向東、向西各分作180度,以東的180°屬於東經,用“E”作代號;以西的180°屬於西經,用“W”作代號。

東西180°經線合為一條經線。

用20°W和160°E的經線圈,將地球分為東、西兩個半球。


 

3.  解決方案


 

如,先假設球的半徑為R,所給定的2點為AB兩點,先假設A在北半球,B在南半球。這隻是其中的一種情況,至於其它的情況可以同樣的方法計算出,僅僅是大同小異而已。當然,還有特殊情況也不能忘了哦。

假設球心為點O,那麼最後得到的AOB的弧度乘以球的半徑R即為所求的球面距離。

設經過球的南極和北極的極點的直線為l,分別過點BAl的垂線,設垂點分別為DC

過點C作線BD的平行線,過BCD的平行線,這兩條平行線必定相交,設交點為E,容易證明BDCE是一個矩形。

由於AB點的經緯度已知,所以OBDOAC也已知,設分別為βα,由於半徑R已知,所以|BD| = R * cosβ,|AC| = R * cosα,|OD| = R * sinβ,|OC| = R * sinα

由於點AB的經度已知,所以不難求出ACE的值。所以三角形ACE中不難用餘弦定理求出|AE|的值。

在直角三角形ABE中,容易求出AB的值。此時三角形AOB三條邊都已知,所以AOB也可以用餘弦定理求出來,這樣AB的球面距離也迎刃而解了。

 

呵呵,高一下學期學的立體幾何,現在做起來竟然還有點吃力。本來想今天順便把代碼寫出來,算了,好晚了,明天再寫吧。

睡覺,忽忽!

 

(To be continued)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.