Dibujo de círculos de cobertura de estaciones terrestres

Estoy tratando de hacer una pequeña aplicación para dibujar círculos de cobertura de estaciones terrestres (antes de que alguien sugiera usar otro software, ¡disfruto haciendo este tipo de cosas yo mismo!)

Ya tengo un código que convierte las coordenadas de latitud y longitud de un punto en la superficie en puntos en un mapa de proyección de Mercator, así que ahora estoy dibujando los 'círculos' alrededor de estos.

También tengo la ecuación para calcular el rango inclinado (distancia máxima entre el satélite y la estación terrestre en la elevación mínima).

Esto es lo que hago actualmente:

  1. Convierte la latitud, longitud y Re de las estaciones terrestres (coords esféricas) a x1, y1, z1 (coords cartesianas)

  2. Convierta el rango de elevación, acimut e inclinación (coordenadas esféricas) a x2, y2, z2 (coords cartesianas) en el marco de referencia centrado en la estación terrestre

  3. Traducir x2,y2,z2 de la parte 2 a centrado en la Tierra (x2+x1, y2+y1, z2+z1) llamemos a estos x3, y3, z3

  4. Gire x3, y3, z3 para alinear con el marco de referencia centrado en la tierra, digamos x4, y4, z4

  5. Convierta x4, y4, z4 en coordenadas esféricas y luego trace la latitud y la longitud que encontré.

En mi opinión, lo anterior debería darme los puntos correctos para trazar, sin embargo, hay un error en alguna parte. Sé que el paso 1 es correcto (la magnitud del vector es Re). Sé que el paso 2 es correcto ya que la magnitud del vector es el rango de inclinación. Pero aquí es donde encontré un problema... Sin embargo, no tengo idea de dónde está el problema.

¿Por qué estás usando Mercator?
Solo la proyección del mapa que elegí. Sin más motivo que el capricho.
¿Cuáles son exactamente los errores que estás recibiendo? ¿Estás teniendo en cuenta los bultos de la Tierra?

Respuestas (1)

Así es como lo resolvería:

Primero, las matemáticas son más fáciles si las coordenadas esféricas adecuadas ( r , θ , ϕ ) se utilizan en lugar de la longitud y la latitud. La diferencia es la latitud es el ángulo desde el ecuador, mientras que ϕ es el ángulo desde el polo norte. Encontrar θ y ϕ de la longitud y la latitud,

θ = Largo
ϕ = 90 Lat
Todos los ángulos están en grados.

  1. Convierta la elevación y el acimut del satélite en ángulos absolutos θ y ϕ . Esto dependerá tanto de la posición del satélite en el cielo como de la ubicación de la estación terrestre.
    ϕ satélite = ϕ estación ( 90 Elev ) porque ( 2 π 360 azim )
    θ satélite = θ estación + ( 90 Elev ) pecado ( 2 π 360 azim )
  2. Convertir el vector entre el centro de la tierra y la estación terrestre, y el vector entre la estación y el satélite a coordenadas cartesianas
    X = Rango porque ( 2 π 360 θ ) pecado ( 2 π 360 ϕ )
    y = Rango pecado ( 2 π 360 θ ) pecado ( 2 π 360 ϕ )
    z = Rango porque ( 2 π 360 ϕ )
    Para el vector desde el centro de la tierra a la estación terrestre, Rango es el radio de la tierra.
  3. Sume los dos vectores, vuelva a convertirlos en coordenadas esféricas y grábelos.
    r = X 2 + y 2 + z 2
    θ = 360 2 π broncearse 1 ( y / X )
    ϕ = 360 2 π porque 1 ( z / r )

¡Disfrutar!

Comenten si cometí algún error
gracias por la respuesta. Creo que hay algunos errores (en el punto 1 tienes dos ecuaciones para phi, una debería ser para theta); ¡incluso con la corrección de esto, mis huellas en el suelo no funcionan del todo!
@SamHallerman ¿Cómo dibujar la cobertura en un mapa plano, ya que no siempre es un círculo?