Dada una línea en la superficie de la tierra, ¿cómo trazo una línea perpendicular a ella?
Disculpas si esta es una pregunta muy simple. Pensé que esta sería una tarea sencilla, pero está resultando contra intuitiva.
Comienzo con la línea azul en la figura a continuación (vea el enlace: todavía no puedo cargar las cifras). Encontré una línea perpendicular calculando el gradiente de la línea azul (m), luego dibujando otra línea (verde) con gradiente -1 / m. Cuando trazo las líneas en Matlab (usando 'trama' y 'eje igual'), se ven perpendiculares, como se esperaba.
Sin embargo, cuando exporto estas líneas a Google Earth (usando el KML Toolbox), ya no se ven perpendiculares (vea el enlace a continuación; la línea más corta es la línea azul de la figura anterior).
Entiendo que suceden cosas extrañas en superficies curvas, pero pensé que las líneas al menos deberían verse perpendiculares localmente. Sospecho que esto tiene algo que ver con la proyección en Google Earth, en particular, el hecho de que las celdas de la cuadrícula parecen tener longitudes laterales más o menos similares, pero el borde longitudinal tiene longitud = 1 grado, mientras que el borde latitudinal tiene longitud = 0.5 la licenciatura.
Entonces, en resumen:
- ¿Es válido mi método para encontrar una línea perpendicular en una superficie curva? (es decir, trazar una línea con gradiente -1 / m)
- en la imagen de Google Earth, ¿las líneas perpendiculares se ven como se espera o está sucediendo algo extraño?
ACTUALIZAR:
Para proporcionar más contexto: estoy mirando datos de radar tomados de un avión. El área multicolor es la 'franja', donde se han registrado observaciones. La línea azul con la que comencé en la explicación anterior es paralela a la franja: esta es la línea de vuelo del avión (el avión se movía en la dirección más o menos sudoeste). El radar mira en la dirección ortogonal a la línea de vuelo, a la izquierda. Estoy tratando de dibujar una línea perpendicular a la línea de vuelo; Esta debería ser la dirección en la que mira el radar, y debería cortar la franja perfectamente. Como puede ver, este no es el caso.
fuente
Respuestas:
Un principio elegante proporciona una respuesta simple:
Esto significa que después de un cambio afinado de coordenadas (que generalmente involucra solo un cambio de escala de una de ellas), podemos usar fórmulas de geometría euclidiana, como el Teorema de Pitágoras para calcular distancias y la fórmula de pendiente recíproca negativa para encontrar perpendiculares.
Con las coordenadas de latitud y longitud en la esfera (lejos de los polos, donde la longitud se vuelve singular), todo lo que tenemos que hacer es reescalar la dirección este-oeste para reflejar la longitud cada vez menor de un grado de longitud a medida que uno se acerca a los polos. Con un modelo esférico de la tierra, esa contracción está dada por el coseno de la latitud. Esto es simplemente un cambio en la relación de aspecto de la trama, nada más.
Esto funciona para regiones que se extienden no más de unos pocos grados de latitud norte-sur y no se acercan a ninguno de los polos.
Por lo tanto, todo lo que tienes que hacer es:
Multiplique todas las longitudes por el coseno de una latitud típica.
Calcule la línea perpendicular.
Deshacer el ajuste de coordenadas.
Por ejemplo, suponga que la trayectoria del avión lo tomó de (lon, lat) = (-78, 40) a (-79, 41). Podemos tomar una latitud típica para estar entre 40 y 41, como 40.5.
Paso 1 Las coordenadas ajustadas son (-78 * cos (40.5), 40) = (-59.31167, 40) y (-79 * cos (40.5), 41) = (-60.07207, 41).
Paso 2 La pregunta propone hacer esto usando un método de pendiente recíproca negativa. Eso sería correcto, pero fallará en algunos casos (donde la pendiente es infinita). Es más general y más poderoso usar aritmética vectorial. Así es como va el cálculo.
El vector de dirección para la trayectoria del vuelo es el desplazamiento desde el principio hasta el final,
Girar cualquier vector (x, y) en ángulo recto en el sentido de las agujas del reloj produce (y, -x), por lo que una dirección perpendicular a la derecha es
Según el teorema de Pitágoras, la longitud de este vector es la raíz cuadrada de la suma de los cuadrados de sus coeficientes,
Movámonos, digamos, 0.2 grados a lo largo de este vector desde el punto de partida del vuelo del avión. El inicio es en (-59.31167, 40) y el desplazamiento es 0.2 / | w | veces w, terminando en
Paso 3 Para deshacer el ajuste, divida las primeras coordenadas de los puntos resultantes por el mismo coseno utilizado en el Paso 1:
Si traza estos puntos usando una relación de aspecto 1: 1, el ángulo parecerá obtuso en lugar de un ángulo recto. Pero si cambia la relación de aspecto a 1: cos (40.5) (aproximadamente 4: 3), el ángulo aparecerá correctamente en 90 grados. Cuando traza los puntos usando cualquier proyección conforme, incluido el Mercator de Google, el ángulo también será correcto.
fuente