任意の緯度と経度に対して、2つの距離が存在する必要があります。1つは時計回りの方向で、もう1つは反時計回りの方向です。それは時々フライトも飛ぶ方法です。
以下のjavascriptは、距離の計算にうまく機能しました。時計回りなのか反時計回りなのかわかりません。(サウスダウンとノースアップを参照)
両方向を見つけるための公式は何でしょうか?
var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad();
var lat1 = lat1.toRad();
var lat2 = lat2.toRad();
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
編集:
2点間の時計回りと反時計回りのパスを計算したいと思います。実際には、フライトは時計回りと反時計回りのパスを使用して同じポイントに到達します。商業上および規制上の理由から、直接パスを使用するだけではありません。
同じポイントへの時計回りと反時計回りのパスを計算する式が必要です。
距離的には、最短の直線経路と最長の直線経路。