1

Skyfield中,如果我有一个来自地球中心的矢量 (x, y, z),我如何将其反向转换为“天球”上的一个点(即赤经和赤纬)?

例如,假设我在环绕地球的望远镜的轨道上有几个点,并且我想计算与轨道垂直的方向的准确 RA 和 Dec - 无论出于何种原因。

在这里可以忽略像差和引力之类的影响——我只是想将 ICRF 中的方向转换为 RA 和 12 月。

在伪代码中:

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
4

1 回答 1

1

令人高兴的是,将 ICRF 中的方向矢量转换为赤经和赤纬完全独立于地球的位置或其他任何东西——这个问题只涉及如何将一些 x、y、z 坐标表示为极坐标,也就是说,这是一个快速的几何问题。

使用天域:

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 数组。

于 2016-04-20T13:37:27.810 回答