¿Cómo rotar (correctamente) estos datos para que la eclíptica esté en el plano XY?

Cuando se trazan órbitas con el paquete Skyfield de Python , las coordenadas son ICRS baricéntricas . Esto pone el centro de masa del sistema solar en el origen, pero el z ^ El eje está inclinado unos 23° con respecto a la normal a la eclíptica. Creo que el ICRS z ^ el eje coincide con la declinación de +90°, pero ni siquiera estoy seguro de eso.

¿Cuál sería la forma más apropiada de rotar los datos del ICRS para que el plano de la eclíptica (lo que sea que eso signifique exactamente ) coincida con el plano xy?

órbitas

from skyfield.api import load
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

eph = load('de421.bsp')

venus = eph['venus']
earth = eph['earth']
mars  = eph['mars barycenter']

ts = load.timescale()

t  = ts.utc(2016, 1, range(700))

vp = venus.at(t).position.km
ep = earth.at(t).position.km
mp = mars.at(t).position.km

ps = [vp, ep, mp]
hw = max([np.abs(p).max() for p in ps])
size = [-hw, hw]

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection ='3d')
for p in ps:
    x, y, z = p
    ax.plot(x, y, z)
ax.set_xlim(size), ax.set_ylim(size), ax.set_zlim(size)
plt.show()
Ese eje z era el eje norte de la Tierra el 1 de enero de 2000. El eje de la Tierra se ha estado moviendo unos 20 segundos de arco por año desde entonces. La eclíptica es el plano de la órbita de la Tierra alrededor del Sol (o el baricentro del sistema solar), generalmente también a partir del 1 de enero de 2000. Ese avión gira alrededor de 0,5 segundos de arco por año.

Respuestas (1)

Debería poder obtener coordenadas eclípticas con:

x, y, z = venus.at(t).ecliptic_position().km

Aquí está la documentación actual: es un poco breve, así que intentaré agregarles un ejemplo este fin de semana. Verás que también hay un método, en caso de que lo necesites, para la latitud y longitud de la eclíptica:

http://rhodesmill.org/skyfield/api-position.html#skyfield.positionlib.ICRF.ecliptic_position