В моем коде я должен сделать много расчетов расстояний между парами значений lat/long.Оптимизация функции вычисления расстояния
код выглядит следующим образом:
double result = Math.Acos(Math.Sin(lat2rad) * Math.Sin(lat1rad)
+ Math.Cos(lat2rad) * Math.Cos(lat1rad) * Math.Cos(lon2rad - lon1rad));
(например, lat2rad широта преобразуется в радианах).
Я определил эту функцию как узкое место в производительности моего приложения. Есть ли способ улучшить это?
(Я не могу использовать справочные таблицы, так как координаты меняются). Я также посмотрел на this question, где предлагается схема поиска, такая как сетка, что может быть возможно.
Спасибо за ваше время! ;-)
Вы должны знать, что этот алгоритм является правильным только в том случае, если вы предполагаете, что Земля является совершенной сферой и различия между приближением и реальным ответом ca n быть довольно значительным (по крайней мере, в моем мире). http://en.wikipedia.org/wiki/WGS84 –
Это правда. Возможно, вам действительно нужно вычислить маршруты большого круга. –
Да, я знаю, но приближение в порядке для моего дела. Насколько я знаю, отклонение больше всего вокруг экватора из-за вращения Земли. – puls200