所以我試圖在Unity中使用haversine公式來獲得兩個不同點(緯度和縱向給定)之間的距離。代碼工作(沒有錯誤),但我一直gettting錯誤的結果。我遵循整個公式,所以我不知道數學/代碼問題在哪裏。任何想法?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
@程序員感謝您的回答。我接受建議,因爲它應該使它更精確,但是我想澄清一個事實,即給定結果和正確結果之間的差異是巨大的。 –
那麼它的評論沒有回答。檢查Adilson的更新答案。這應該可以解決你的問題。如果不讓我知道。 – Programmer