Преобразовать направление (вектор) в RA и Dec в Skyfield
В Скайфилде, если у меня есть вектор (x, y, z) от центра Земли, как я могу преобразовать его обратно в точку на "Небесной сфере" (т. Е. Правильное Вознесение и Склонение)?
Например, предположим, что у меня есть несколько точек на орбите телескопа вокруг Земли, и я хочу вычислить точное RA и Dec направления, нормального к орбите - по любой причине.
Здесь можно пренебречь такими эффектами, как аберрация и гравитация - я просто хочу изменить направление в ICRF на RA и декабрь.
В псевдокоде:
from skyfield.api import load
import numpy as np
eph = load('de421.bsp')
ts = load.timescale()
now = ts.now()
vec = np.array([3141, 2718, 5820], dtype=float)
nvec = vec / np.sqrt((vec**2).sum()) # normalize for the heck of it
earth = eph['earth']
evec = earth.at(now).vector(vec) # pseudocode
print "It's pointing toward: ", evec.radec() # pseudocode
1 ответ
К счастью, преобразование вектора направления в ICRF в прямое восхождение и склонение полностью не зависит от положения Земли или чего-либо еще - это вопрос, который включает только то, как некоторые координаты x,y,z будут выражаться в виде полярных координат, то есть быстрая проблема геометрии.
Используя Skyfield:
from skyfield.positionlib import ICRF
vec = ICRF([3141, 2718, 5820])
ra, dec, distance = vec.radec()
print(ra)
print(dec)
Какие выводы:
02h 43m 28.94s
+54deg 29' 04.7"
Это даже избавляет от необходимости импортировать NumPy вручную, потому что ICRF
Класс автоматически определяет, был ли ему передан список Python, и автоматически преобразует его в массив NumPy.