月(lat1, lon1)
と上の2つのポイントの緯度/経度を指定して、haversineの式と同じ結果を与える式を(lat2, lon2)
使用して、2つのポイント間の距離をキロメートルで計算します。
入力
lat1, lon1, lat2, lon2
度(角度)の4つの整数値またはϕ1, λ1, ϕ2, λ2
ラジアン単位の4つの10進数値。
出力
2つのポイント間の距離(キロメートル単位、精度または丸められた整数)。
ハーバーシン式
どこ
r
は球体の半径です(月の半径が1737 kmであると仮定)、ϕ1
ラジアン単位のポイント1の緯度ϕ2
ラジアン単位のポイント2の緯度λ1
ラジアン単位のポイント1の経度λ2
ラジアン単位のポイント2の経度d
2点間の循環距離
(ソース:https : //en.wikipedia.org/wiki/Haversine_formula)
他の可能な式
d = r * acos(sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1))
@milesの式。d = r * acos(cos(ϕ1 - ϕ2) + cos ϕ1 cos ϕ2 (cos(λ2 - λ1) - 1))
@Neilの式。
入力が度であり、出力が丸められた整数である例
42, 9, 50, 2 --> 284
50, 2, 42, 9 --> 284
4, -2, -2, 1 --> 203
77, 8, 77, 8 --> 0
10, 2, 88, 9 --> 2365
ルール
- 入力と出力は、任意の便利な形式で指定できます。
- 入力が度単位かラジアン単位かを回答で指定します。
- 無効な緯度/経度値を処理する必要はありません
- 完全なプログラムまたは機能のいずれかが受け入れられます。関数の場合、出力する代わりに出力を返すことができます。
- 可能であれば、他の人があなたのコードを試すことができるように、オンラインテスト環境へのリンクを含めてください!
- 標準的な抜け穴は禁止されています。
- これはコードゴルフなので、通常のゴルフルールがすべて適用され、最短のコード(バイト単位)が勝ちます。
d = r * acos( sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1) )
どこr = 1737