日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

golang计算任意两点间的方位角

發布時間:2023/12/9 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 golang计算任意两点间的方位角 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

計算任意兩點間的方位角

方位角是從某點的指北經線起,依順時針方向到目標方向線之間的水平夾角(如圖所示θ,可以將其看成是指南針所指示的角度),也即是OPN平面與OPQ平面的所構成的二面角大小。

以北極點N為頂點,N-PQO構成了一個三面角。

二面角N-PQ-O的大小為θ,其平面角為π/2 - φ2;
二面角p-ON-Q的大小為λ2?λ1,其平面角為δ;

由三面角正弦定理可得:

由三面角余弦定理可得:

由此可得:

結合上述在求解兩點間的距離時得到的結果:

可得到:

進而得到方位角:

二面角
從一條直線出發的兩個半平面所組成的圖形,叫做二面角。 這條直線叫做二面角的棱,每個半平面叫做二面角的面。以二面角的公共直線上任意一點為端點,在兩個面內分別作垂直于公共直線的兩條射線,這兩條射線所成的角叫做二面角的平面角。二面角的大小, 可以用它的平面角來度量。

三面角
從一點出發并且不在同一平面內的三條射線,其中每相鄰兩射線可以決定一個平面,這樣的三個平面所圍成的立體圖形叫做三面角。其中,這三條射線叫做三面角的棱,這些射線的公共端點叫做三面角的頂點,相鄰兩棱所夾的平面部分叫做三面角的面,在每個面內兩條棱所形成的角叫做三面角的面角,過每一條棱的兩個面所形成的二面角叫做三面角的二面角。一個三面角可以用它的頂點的字母來表示,例如“三面角S”;或在頂點的字母之后加一短劃,并順次寫上每一條棱上的一個字母,例如“三面角S-ABC”。

工程實現

下面是計算地球上任意兩點間的方位角的工程實現,使用golang語言:

func Radians(x float64) float64 {return x/math.Pi }//地球上任意兩點間的方位角 func Complex(lon1,lat1,lon2,lat2 float64) float64{var numerator = math.Sin(Radians(lon2-lon1)) * math.Cos(Radians(lat2))var denominator = math.Cos(Radians(lat1)) * math.Sin(Radians(lat2))- math.Sin(Radians(lat1)) * math.Cos(Radians(lat2)) * math.Cos(Radians(lon2 - lon1))var x = math.Atan2(math.Abs(numerator), math.Abs(denominator))var result = x// 右象限if lon2 > lon1 {// 第一象限if lat2 > lat1{result = x} else if lat2 < lat1{ // 第四象限result = math.Pi - x}else{result = math.Pi / 2 // 在正x軸上}}else if lon2 < lon1{if lat2 > lat1{// 第二象限result = 2 * math.Pi - x}else if lat2 < lat1{ // 第三象限result = math.Pi + x}else{result = math.Pi * 3 / 2 // 在負x軸上}}else // 同一經度{if lat2 > lat1{ // 在正y軸上result = 0}else if lat2 < lat1{result = math.Pi // 在負y軸中}else{fmt.Println("不應該在同一個地方!")}}return result * 180 / math.Pi }

以上計算公式適用于地球上任意兩點,請注意經緯度分正負值。對于經度來說,東經為正,西經為負;對于緯度來說,北緯為為正,南緯為負。

總結

以上是生活随笔為你收集整理的golang计算任意两点间的方位角的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。