私はUnityのhaversine式を使って、2つの異なる点(緯度と経度が与えられている)の間の距離を求めようとしています。コードは動作しています(エラーはありません)が、間違った結果が得られます。私は全体の数式に従ったので、数学/コード問題がどこにあるのか本当に分かりません。何か案が?私は、この行が間違っていると思うHaversineの式Unity
public float lat1 = 42.239616f;
public float lat2 = -8.72304f;
public float lon1 = 42.239659f;
public float lon2 = -8.722305f;
void operacion(){
float R = 6371000; // metres
float omega1 = ((lat1/180)*Mathf.PI);
float omega2 = ((lat2/180)*Mathf.PI);
float variacionomega1 = (((lat2 - lat1)/180)*Mathf.PI);
float variacionomega2 = (((lon2 - lon1)/180) * Mathf.PI);
float a = Mathf.Sin(variacionomega1/2) * Mathf.Sin(variacionomega1/2) +
Mathf.Cos(omega1) * Mathf.Cos(omega2) *
Mathf.Sin(variacionomega2/2) * Mathf.Sin(variacionomega2/2);
float c = 2 * Mathf.Atan2(Mathf.Sqrt(a), Mathf.Sqrt(1-a));
float d = R * c;
}
ながらAdilsonの結果はあなたの問題を解決するかもしれませんが、より良い精度のためには '6371000'が' 6372797.560856'になるはずです。 – Programmer
@Programmer答えに感謝します。私はそれがより正確にする必要があるので、アドバイスを取るが、私は与えられた結果と正しい結果の違いが大きいという事実を明確にしたい。 –
まあ、そのコメントは答えていません。 Adilsonの最新の回答を確認してください。それはあなたの問題を解決するはずです。もし私に知らせてくれないなら。 – Programmer