在我的代碼中,我必須在成對的緯度/經度值之間進行大量的距離計算。距離計算函數的優化
代碼看起來是這樣的:
double result = Math.Acos(Math.Sin(lat2rad) * Math.Sin(lat1rad)
+ Math.Cos(lat2rad) * Math.Cos(lat1rad) * Math.Cos(lon2rad - lon1rad));
(lat2rad例如是緯度轉換爲弧度)。
我已經確定這個函數是我應用程序的性能瓶頸。有什麼辦法可以改善嗎?
(我不能使用查找表,因爲座標是變化的)。我還查看了this question,其中提出了像網格這樣的查找方案,這可能是一種可能性。
謝謝你的時間! ;-)
您應該意識到,如果您認爲地球是一個完美的球體,並且近似值與真實回答之間的差值ca ñ相當重要(至少在我的世界)。 http://en.wikipedia.org/wiki/WGS84 – 2009-03-05 16:38:43
的確如此。你可能真的需要計算大圓圈路線。 – 2009-03-05 20:00:01
是的,我知道,但近似對我的情況是可以的。據我所知,由於地球自轉,赤道附近的偏差最大。 – puls200 2009-03-06 06:59:22