出発地点の経度、緯度をそれぞれθ、φとし、到着地点の緯度、経度をそれぞれθ’、φ’とします(ラジアン)。Rを地球の半径
(6000km程度?)とするとき、以下のような計算になる。
a = R・cosφ・cosθ
b = R・cosφ・sinθ
c = R・sinφ
d = R・cosφ’・cosθ’
e = R・cosφ’・sinθ’
f = R・sinφ’
g = a・d + b・e + c・f
h = acos(g/R^2)
Dist = R・h
で、Distが求める距離。
ちなみに、角度は全てラジアンに統一する。たとえば経度120度緯度30度の場合は、
θ=π・120/180, φ=π・30/180という変換式で変換される。
なお、acosというのは、cosの逆関数。
計算の内容の概略を説明すると、
地球の中心を原点Oにとり、出発点Aの3次元的位置を(a,b,c)、到着点Bの3次元的位置を(d,e,f)とおいて、
その2点の内積を求める(ad+be+cf)。
その内積があらわすのは、R^2・cos(∠AOB)の値となり。
これをR^2で割れば、cos(∠AOB)が得られるので、∠AOB = acos(cos(∠AOB))となる。
∠AOBがラジアンならば、弧ABの長さはR・∠AOBでで求められる。