A站、B站、地心C,三点构成了一个等腰三角形,腰为地球半径。ACOS函数是求反余弦,结果为地心到AB两站的张角弧度C,地球半径R*C就是AB弧线的长度。先假设地球半径为1,还记得余弦定理吗?
cos(C)=(1*1+1*1-c*c)/(2*1*1)=1-c*c/2
其中c就是设地球半径为1时,AB两地的距离。公式里的三个power函数之和就是在计算c*c的。由球坐标与直角坐标之间的换算关系(假设纬度为W,经度J):
x=cos(W)*cos(J)
y=cos(W)*sin(J)
z=sin(W)
c*c就等于(xA-xB)^2+(yA-yB)^2+(zA-zB)^2。
都解释清楚了吧?
上面那段话,我只能说:莫名其妙。
正确的算法:
根号[(地球半径×π×经度差/180)^2+(地球半径×π×纬度差(注意区分南纬和北纬)/180)^2]
翻译的工作就由你自己完成吧。