在我的代码中,我必须在成对的纬度/经度值之间进行大量的距离计算。距离计算函数的优化
代码看起来是这样的:
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