Título lo dice todo, estoy buscando la fórmula para obtener la orientación desde un punto hacia otro en un plano numérico. He encontrado ejemplos de esto para lat/lon alrededor de la tierra pero eso no es exactamente lo que necesito. Gracias
Respuesta
¿Demasiados anuncios?¿Exactamente qué es un "rumbo" para ti? Los rumbos de la brújula suelen citarse con 0° significando hacia el norte y aumentando en sentido horario, mientras que en matemáticas en general la convención es considerar 0° como hacia la derecha, y aumentando en sentido antihorario.
Para un rumbo de brújula, la respuesta convencional es $\tan^{-1}\left(\frac{E_2-E_1}{N_2-N_2}\right)$, donde $(E_1,N_1)$ y $(E_2,N_2)$ son las coordenadas (este, norte) de tus dos puntos. Sin embargo, hay varios puntos a tener en cuenta:
-
Probablemente la función arcotangente te dé valores en radianes, los cuales tendrás que convertir a grados tú mismo.
-
Si los nortes son iguales, terminarás dividiendo por cero. Esto debe tratarse como un caso especial, respondiendo 90° o 270° según corresponda.
-
La fórmula tampoco puede distinguir entre una dirección y su opuesta directa, así que necesitas añadir 180° si $N_2
-
Las direcciones en los cuadrantes noroeste terminarán como números negativos entre $-$90° y 0°; deberás sumar 360° a esos para que parezcan rumbos de brújula ordinarios.
Si estás buscando crear una implementación informática, verifica si tu lenguaje de programación tiene una función atan2
-- se encargará automáticamente de los puntos 2 y 3 para ti. Normalmente debería llamarse como atan2(e2-e1,n2-n1)
, pero he escuchado rumores sobre lenguajes que necesitan que des los argumentos en orden opuesto.