Estoy escribiendo una pieza de software que propaga la órbita de una nave espacial desde una órbita terrestre inicial a una órbita interplanetaria. Mi propagación simple de dos cuerpos funciona bien en una órbita geocéntrica o heliocéntrica. Sin embargo, parece que no puedo manejar la transición correctamente.
Estos son los pasos de esa transición (puedo compartir el código relevante si es útil):
Obtenga la posición eclíptica J200 de la Tierra (a través de https://github.com/soniakeys/meeus/blob/master/planetposition/planetposition.go#L195 ) y calcule la velocidad de la Tierra (a través de ecuaciones en las primeras páginas de Vallado - Fundamentos en Astrodinámica). Tenga en cuenta que la biblioteca "meeus/planetposition" devuelve las posiciones de la eclíptica en L, B, R, que convierto en coordenadas cartesianas (a través de https://en.wikipedia.org/wiki/Ecliptic_coordinate_system#Rectangular_coordinates )
Gire los vectores de radio y velocidad de mi órbita geocéntrica sobre el primer eje y por la inclinación axial de la Tierra (según https://en.wikipedia.org/wiki/Ecliptic_coordinate_system#Converting_Cartesian_vectors )
Agregue los vectores R y V de la nave espacial calculados en el paso 2 a los vectores de radio y velocidad del planeta calculados en el paso 1 (ya que )
Al visualizar ambas trayectorias en Cosmographia, definitivamente puedo decir que el cálculo es incorrecto (ver las dos capturas de pantalla a continuación). He estado atascado en este problema durante algunas horas (alrededor de doce, diría), por lo que cualquier ayuda sería muy apreciada.
Obviamente, podría hacer una matriz de rotación aproximada del eje Z (en relación con la tierra) y estimar la rotación de la tierra como constante con el tiempo, pero eso no es del todo exacto. Puede volver a crear el método computeFixedToICRF de CesiumJS. Es muy de ingeniería inversa y no es una solución completa, pero tratar de hacer estas transformaciones no es trivial, por decir lo menos.
Enlace a la documentación del método ComputeFixedToICRF en cesium: https://cesiumjs.org/Cesium/Build/Documentation/Transforms.html?classFilter=transf#.computeFixedToIcrfMatrix
Hay un paquete llamado satellite.js que también hace una transformación de ECF a ECI aquí: https://github.com/shashwatak/satellite-js/blob/develop/src/transforms.js
UH oh
marca adler
CrisR