hel*_*der 5 math geometry geography
如何绘制表示地球平面地图上2点之间最短距离的曲线?
当然,线不是直线,因为地球是弯曲的.(例如,两个机场之间的最短距离是弯曲的.)
编辑:谢谢所有答案的家伙 - 抱歉,我选择解决方案的速度很慢:/
Pau*_*lin 11
我从航空处方集中获得了这类信息.
在这种情况下:
点之间的距离
坐标为{lat1,lon1}和{lat2,lon2}的两点之间的大圆距离d由下式给出:
d=acos(sin(lat1)*sin(lat2)+cos(lat1)*cos(lat2)*cos(lon1-lon2))数学上等效的公式,较少受到短距离舍入误差的影响:
d=2*asin(sqrt((sin((lat1-lat2)/2))^2 + cos(lat1)*cos(lat2)*(sin((lon1-lon2)/2))^2))
和
大圆上的中间点
在前面的部分中,我们在一个大圆上找到了中间点,给出了横穿纬度或经度.在这里,我们找到它们之间的距离(d)的给定分数(lat,lon).假设起始点是(lat1,lon1)和最终点(lat2,lon2),我们希望该点沿着大圆路径的分数f.f = 0是点1.f = 1是点2.这两个点不能是对映的(即lat1 + lat2 = 0和abs(lon1-lon2)= pi)因为那时路径是未定义的.中间纬度和经度由下式给出:
Run Code Online (Sandbox Code Playgroud)A=sin((1-f)*d)/sin(d) B=sin(f*d)/sin(d) x = A*cos(lat1)*cos(lon1) + B*cos(lat2)*cos(lon2) y = A*cos(lat1)*sin(lon1) + B*cos(lat2)*sin(lon2) z = A*sin(lat1) + B*sin(lat2) lat=atan2(z,sqrt(x^2+y^2)) lon=atan2(y,x)