En mi código tengo que hacer una gran cantidad de cálculos de distancia entre pares de valores lat/long.Optimización de una función de cálculo de distancia
el código es el siguiente:
double result = Math.Acos(Math.Sin(lat2rad) * Math.Sin(lat1rad)
+ Math.Cos(lat2rad) * Math.Cos(lat1rad) * Math.Cos(lon2rad - lon1rad));
(lat2rad por ejemplo, es la latitud convierte en radianes).
He identificado esta función como el cuello de botella de rendimiento de mi aplicación. ¿Hay alguna forma de mejorar esto?
(No puedo usar tablas de búsqueda ya que las coordenadas son variables). También miré this question donde se sugiere un esquema de búsqueda como una grilla, lo que podría ser una posibilidad.
¡Gracias por su tiempo! ;-)
Debe tener en cuenta que este algoritmo solo es correcto si supone que la Tierra es una esfera perfecta y las diferencias entre la aproximación y la respuesta real ca n ser bastante significativo (al menos en mi mundo). http://en.wikipedia.org/wiki/WGS84 –
Eso es verdad. Es posible que realmente necesite calcular rutas de gran círculo. –
Sí, lo sé, pero la aproximación está bien para mi caso. Hasta donde sé, la desviación es mayor alrededor del ecuador debido a la rotación de la tierra. – puls200