Para una tarea de matemáticas en la escuela, estoy investigando la órbita de la Estación Espacial Internacional alrededor de la Tierra. Entiendo que cuando el movimiento 3D en el espacio se representa en una superficie 2D, la relación no es sinusoidal, sin embargo, he creado el siguiente modelo (simple), que no estoy seguro de que sea el más preciso. A continuación, también puede encontrar mis valores calculados con la fórmula (en rojo), en comparación con los valores reales de una API en línea. ¡Cualquier ayuda para mejorar esto será muy apreciada!
(Esto solo se aplica a una de las curvas (la que se muestra a continuación), ya que la onda se traslada 22,5 grados a la derecha después de cada ciclo).
Mis datos se pueden encontrar en el siguiente documento de Google: https://docs.google.com/spreadsheets/d/1Ac8yQn8ybdtZWK8JyKAOIw46o3UJufAoidR5unjVeHs/edit?usp=sharing
tl; dr: usa una ecuación paramétrica .
Si la Tierra no estuviera girando, entonces tendríamos algo como
donde el radio de la órbita es 1, es y es el período orbital, y es la inclinación de la órbita.
Entonces tendríamos
Si la Tierra está girando entonces
dónde es y es un día sideral (23h, 56m, 4s aproximadamente).
Resolver esto para la longitud en función de la latitud parece un trabajo serio y no estoy seguro de que haya una solución analítica.
En su lugar, puede probar el enfoque de ecuación paramétrica en el que primero crea una tabla oculta de tiempos y luego resuelve para y y trama contra
Aquí hay una trama, no he ajustado o y solo usé valores aproximados para , y pero debería ser suficiente para hacerte mirar.
y represente las condiciones iniciales conocidas de la nave espacial que está tratando de trazar; es el momento en que cruza el ecuador hacia el norte, y es la longitud en la Tierra por debajo de la nave espacial en ese momento.
Aquí hay algunas lecturas adicionales:
Escritura de Python:
import numpy as np
import matplotlib.pyplot as plt
twopi = 2*np.pi
to_degs, to_rads = 180/np.pi, np.pi/180.
omega = twopi/(92*60)
omega_E = twopi/(23*3600 + 56*60 + 4)
time = 60 * np.arange(101.) # 100 minutes
t0 = 1000. # arbitrary, you can fit this later
inc = 51.
const = 1.0 # arbitrary, you can fit this later
x = np.cos(omega * (time-t0))
y = np.sin(omega * (time-t0)) * np.cos(to_rads*inc)
z = np.sin(omega * (time-t0)) * np.sin(to_rads*inc)
lon = np.arctan2(y, x) - omega_E * (time-t0) + const
lat = np.arcsin(z)
if True:
plt.figure()
plt.plot(to_degs*lon, to_degs*lat, '.k')
plt.xlim(-180, 180)
plt.ylim(-60, 60)
#plt.gca().set_aspect('equal')
plt.show()
UH oh
UH oh
UH oh