Voy a intentar hacer una simulación modesta de la libración de la Luna vista desde la Tierra (geocentro), similar a la técnica que he mostrado en esta pregunta . Lo haré en Python y lo renderizaré en Blender.
Estoy familiarizado con la obtención de datos de tipo Efemérides de JPL Horizons y de Skyfield , los cuales utilizan JPL Development Efemérides (por ejemplo, DE405,...), (ver también la página de Efemérides de Horizon y sus enlaces). A partir de ellas genero tablas locales y las interpolo para animaciones y otros cálculos no críticos.
Sé que al menos algunos de los DE contienen movimiento del cuerpo lunar (por ejemplo, en DE405, ¿pero en DE406 viene por separado? También discutido aquí ) como Carga de archivos auxiliares / Cuadros dinámicos , pero sin conocimiento de primera mano de lectura de Spice Kernel directamente, ¿Hay alguna manera de obtener algo cercano a través de Horizons? Por ejemplo, con la posición de una posición fija en la Luna con respecto al Geocentro de la Tierra, o viceversa, además del movimiento de los dos centros, pude reconstruirlo lo suficientemente bien como para obtener una animación bastante precisa. Sin embargo, esto es lo más lejos que he llegado: no sé cómo especificar una posición de latitud/longitud en la Luna.
Podría manipularlo simplemente haciendo girar la luna sobre su eje a una velocidad angular de rotación fija, pero si es posible controlar el movimiento real del cuerpo rígido lunar, eso sería mucho más útil para mí a largo plazo.
Con los archivos de datos de Spice, la biblioteca de Skyfield para Python ahora puede informar la libración lunar como la sublongitud y la sublatitud del punto de la Luna que mira hacia la Tierra. Para tomar un ejemplo de su documentación:
from skyfield.api import PlanetaryConstants, load
ts = load.timescale(builtin=True)
t = ts.utc(2019, 12, 20, 11, 5)
eph = load('de421.bsp')
earth, moon = eph['earth'], eph['moon']
pc = PlanetaryConstants()
pc.read_text(load('moon_080317.tf'))
pc.read_text(load('pck00008.tpc'))
pc.read_binary(load('moon_pa_de421_1900-2050.bpc'))
frame = pc.build_frame_named('MOON_ME_DE421')
p = (earth - moon).at(t)
lat, lon, distance = p.frame_latlon(frame)
lon_degrees = (lon.degrees - 180.0) % 360.0 - 180.0
print('Libration in latitude: {:.3f}'.format(lat.degrees))
print('Libration in longitude: {:.3f}'.format(lon_degrees))
Más documentación está aquí:
https://rhodesmill.org/skyfield/planetary.html#computing-lunar-libration
Voy a saltar y dar una respuesta antes de que Mark Adler salte y te diga que uses Spice en lugar de algunas Efemérides de desarrollo (muy posiblemente obsoletas).
Mi respuesta: usa Spice .
Spice proporciona núcleos para las orientaciones de la Tierra y de la Luna con respecto a la ICRF como funciones del tiempo. A partir de ellos, puede calcular la orientación relativa de la Luna con respecto a la Tierra en cualquier momento.
if (condition) then do_stuff(); endif
se ven en los derivados de Algol. ¿Usando espacios en blanco? Buena suerte integrando su secuencia de comandos de Python que usa espacios y algunas otras secuencias de comandos de Python de personas que usan pestañas. Y buena suerte comunicando su estructura a los discapacitados visuales.@foo{@foo} = (1) x scalar @foo
es bastante alucinante. El hecho de que sepa lo que esto significa y que borre varias líneas de código no significa que todos deban saber lo que eso significa. Todo lo contrario. Perl solo es superado por APL con respecto a los lenguajes de solo escritura. Dicho esto, no me sorprendería ni un poco si hay un módulo perl en algún lugar que proporcione la funcionalidad de Spice.
david hamen
UH oh
david hamen
david hamen
david hamen
GROUP 1050
entrada en el archivo de encabezado ASCII para ese modelo. El modelo no proporciona nutaciones terrestres si el penúltimo (penúltimo o duodécimo) elemento es cero, y no proporciona libraciones lunares del último (decimotercer) elemento es cero.UH oh