matlab 计算大圆距离,已知两点经纬度计算两点之间的大圆距离
Const r As Double = 6378137 '地球半徑常量
Const PI As Double = 3.1415926 '圓周率常量
Private Type LatLog
lat As Double
log As Double
End Type
'已知兩點經緯度求大圓距離
Private Function GetGroundDistance(latlogA As LatLog, latlogB As LatLog) As Double
w1 = Pers2Act(latlogA.lat)
w2 = Pers2Act(latlogB.lat)
j1 = Pers2Act(latlogA.log)
j2 = Pers2Act(latlogB.log)
alpha = Arccos(Cos(w1) * Cos(w2) * Cos(j1 - j2) + Sin(w1) * Sin(w2))
d = alpha * r
GetGroundDistance = d
End Function
'弧度轉角度
Private Function Act2Pers(act As Double) As Double
Act2Pers = act / PI * 180
End Function
'角度轉弧度
Private Function Pers2Act(pers As Double) As Double
Pers2Act = pers / 180 * PI
End Function
'反余弦函數
Private Function Arccos(x As Double) As Double
Arccos = PI / 2 - Atn(x / Sqr(-x * x + 1))
End Function
'測試
Private Sub MainFunction()
Dim a As LatLog
Dim b As LatLog
a.lat = 45
a.log = 8
b.lat = 45
b.log = 9
Debug.Print GetGroundDistance(a, b)
End Sub
總結
以上是生活随笔為你收集整理的matlab 计算大圆距离,已知两点经纬度计算两点之间的大圆距离的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 管理员密码的php文件,ecshop网站
- 下一篇: dedecms模版php,好织梦-专业d