He estado tratando de construir un modelo del sistema solar en un juego. Hasta ahora he logrado colocar cada uno de los planetas en posición utilizando elementos y fórmulas keplerianos de https://ssd.jpl.nasa.gov/?planet_pos Un ejemplo para Júpiter es:
a e I L long.peri. long.node.
AU, AU/Cy rad, rad/Cy deg, deg/Cy deg, deg/Cy deg, deg/Cy deg, deg/Cy
-----------------------------------------------------------------------------------------------------------
Jupiter 5.20288700 0.04838624 1.30439695 34.39644051 14.72847983 100.47390909
-0.00011607 -0.00013253 -0.00183714 3034.74612775 0.21252668 0.20469106
En este punto, quiero agregar varias de las lunas jovianas, sin embargo, el mismo sitio no parece proporcionar el mismo tipo de datos para estas lunas, quizás porque las lunas se comportan de manera diferente. Desafortunadamente, mis matemáticas no son muy buenas; Por lo general, puedo implementar algo que está escrito, pero no tengo los medios para resolverlo por mí mismo.
Para las lunas jovianas, los datos se enumeran en: https://ssd.jpl.nasa.gov/?sat_elem#jupiter Aquí hay un ejemplo para Ganímedes:
Sat. a e w M i node n P Pw Pnode R.A. Dec. Tilt
(km) (deg) (deg) (deg) (deg) (deg/day) (days) (yr) (yr) (deg) (deg) (deg)
Ganymede 1070400. 0.0013 192.417 317.540 0.177 63.552 50.3176072 7.155 63.549 132.654 268.168 64.543 0.068
Aquí afirman que los datos son " Elementos orbitales medios referidos a los planos locales de Laplace ", a diferencia de " Elementos keplerianos para posiciones aproximadas de los planetas principales ".
Si bien los primeros 6 parámetros parecen ser los mismos (a, e, w, M, i, nodo), los elementos keplerianos también tienen "tasas" o derivados de tiempo (según esta publicación: https://space.stackexchange. com/questions/8911/determining-orbital-position-at-a-future-point-in-time ). Los foros proporcionados amablemente por la NASA para los elementos keplerianos se basan en estas tasas.
Si pudiera entender cómo determinar las "tasas" para las lunas jovianas, entonces podría usar la misma fórmula (¿es esto lo correcto?) Me parece que esas tasas son algo que debería poder calcular a partir de los otros datos proporcionados para las lunas, sin embargo, no he podido determinar cómo.
Mi sospecha es que necesito una fórmula diferente para el cálculo usando los planos de Laplace, o necesito calcular esos valores de 'tasa' y usar la misma fórmula que ya tengo.
Estoy tratando de generar coordenadas cartesianas (x, y, z) para cada Luna donde (0,0,0) es el centro de Júpiter, para una fecha/hora dada (típicamente "ahora").
Estoy empezando a preguntarme si estoy ladrando al árbol equivocado en esto. Alguien puede arrojar algo de luz
Un excelente libro de Jean Meeus, "Algoritmos astronómicos", proporciona los cálculos de las posiciones planetarias y las lunas galileanas de Júpiter (Io, Europa, Ganímedes y Calisto). Meeus realmente no explica las matemáticas en gran medida, por lo que es relativamente simple seguirlo como un enfoque formulaico. Utiliza VSOP para las posiciones planetarias y la teoría E5 de Lieske para las lunas (puede obtener una explicación de ambas en Wikipedia). Como beneficio adicional, Meeus muestra cómo realizar cálculos para ambos parámetros con un menor grado de precisión, lo que podría mejorar su velocidad de cálculo. Aunque este libro puede ser un poco denso, es posible que desee leer sobre la diferencia entre "tiempo de efemérides" y "tiempo terrestre", ya que esto también afectará su precisión.
Gracias a las personas que han intentado ayudarme con esto, tanto cuando publiqué la pregunta por primera vez como más tarde.
Con el sólido consejo de @barrycarter en los comentarios, busqué usar la biblioteca SPICE para calcular las posiciones de los diversos cuerpos celestes de interés.
Después de leer un poco y recibir más consejos de NAIF, me encargué de migrar la biblioteca CSPICE, versión 66, para que funcione en iOS (y, en consecuencia, en macOS).
Luego usé la herramienta SPKMERGE para generar archivos de efemérides que contenían solo los datos que necesitaba para mi aplicación. Luego, la aplicación carga esos archivos a través de CSPICE y genera los datos posicionales que necesita.
La versión modificada de la biblioteca CSPICE para iOS ahora está disponible para otros que quieran usarla.
Se puede encontrar en:
usuario21
PKCLsoft
usuario21
PKCLsoft
usuario21
PKCLsoft