緯度/経度の点から線までの距離を取得する必要があります。もちろん、グレートサークルに従う必要があります。
これに関するすばらしい記事をhttp://www.movable-type.co.uk/scripts/latlong.htmlで見つけました。
しかし、コードは正しく機能していません。私が何か間違ったことをしている、または何かが欠けている。これが問題の関数です。必要に応じて、他の機能のリンクを参照してください。
var R = 3961.3
LatLon.crossTrack = function(lat1, lon1, lat2, lon2, lat3, lon3) {
var d13 = LatLon.distHaversine(lat1, lon1, lat3, lon3);
var brng12 = LatLon.bearing(lat1, lon1, lat2, lon2);
var brng13 = LatLon.bearing(lat1, lon1, lat3, lon3);
var dXt = Math.asin(Math.sin(d13/R)*Math.sin(brng13-brng12)) * R;
return dXt;
}
緯度/経度1 = -94.127592、41.81762
lat/lon2 = -94.087257, 41.848202
緯度/経度3 = -94.046875、41.791057
これは 0.865 マイルを報告します。実際の距離は 4.29905 マイルです。
これを修正する方法についての手がかりはありますか?私は数学者ではなく、歯のプログラマーに長けているだけです。