half-versineの定理
yahoo知恵袋で回答した内容をもう一度まとめる。
これは球面三角法における定理で、航海をするときの技術だった。
versineとは、のことで、和算においては矢と呼ばれた。
half-versineは、これの半分で、
つまりのことである。
球面上の2点A,Bに対し、2点を通る大円上での距離を求めたい。
分かっているものは,2地点の緯度、経度、球の半径rである。
大円上の弧ABに対する中心角をとすると、とおける。
ここからに対するhalf-versineを球面三角法における余弦定理を用いて求めることができる。
以下、単位球面上で考える。
球面三角形ABCにおいて、3辺AB,CA,ABの長さをとする。
これらは弧の長さなので、単位球面上において中心角(ラジアン)と一致する。
ここで、弧ABを含む大円と弧ACを含む大円がなす角をとすると、
さて、これをhalf-versineに書き換えると、
から、
これをさっきの2点A,Bに対応させる。A,Bの緯度をそれぞれ,経度をとすると、
なので、
つまり、の表さえあれば が分かり、さらにが求められるということである。
これが求められれば、でAB間の距離が求められる。
実際やってみたところ、
東京とスリジャヤワルダナプラコッテとの距離は、
緯度、経度を小数第1位まで、円周率を3.14で雑に計算した場合でも6853km
国土地理院の楕円体仮定の計算で約6858km
十分実用的だ。
しかし、ちょっと待て。
そもそもから直接求めても良かったんじゃないだろうか。
ほぼ同じ答えでたわ。
half-versineにこだわる理由とは一体…
求めやすかったんだろうか。
wikipediaによると、half-versineを使うことで、それまでのを使わなくて済むようになったことが大きいらしい。
そもそも、の方は、2点間が近すぎるとなどになって使い物にならなかったので、よりの方が都合が良かった。