当提供 UTC 时间戳和地球上的 Lat/Lon/Alt 观察者位置时,我想将天空中的五个拉格朗日点 (L1 - L5) 的位置计算为 RA/DEC 或 AZ/EL。我正在查看 pyephem、pyorbital 和 skyfield,但据我所知,他们不支持这一点。如果有人能指出我在 python 中计算这个的参考/代码,那将不胜感激。
PS 如果还不是 pyephem/skyfield/pyorbital 的一部分,我认为这将是一个有趣的添加功能?
当提供 UTC 时间戳和地球上的 Lat/Lon/Alt 观察者位置时,我想将天空中的五个拉格朗日点 (L1 - L5) 的位置计算为 RA/DEC 或 AZ/EL。我正在查看 pyephem、pyorbital 和 skyfield,但据我所知,他们不支持这一点。如果有人能指出我在 python 中计算这个的参考/代码,那将不胜感激。
PS 如果还不是 pyephem/skyfield/pyorbital 的一部分,我认为这将是一个有趣的添加功能?
如果您可以将任意(地心或日心)位置矢量转换为 RA/DEC,则解决方案很简单,因为您可以相对容易地计算拉格朗日点的位置矢量。
如果您有太阳的地心位置矢量Rsun
,您可以执行以下操作:
由于 L1、L2 和 L3 位于太阳-地球线上,它们只是不同比例的Rsun
. 这里有一些很好的近似值,因为太阳的质量比地球的质量大得多(确切的公式要复杂得多):
L1 = Rsun * (m / (3*M))**(1/3)
L2 = -Rsun * (m / (3*M))**(1/3)
L3 = Rsun * (2 + (5*m / (12*M))
质量单位无关紧要,所以我们可以使用地球质量作为单位,这样m == 1
就是地球的质量,M == 333000
也是太阳的质量。
L4 和 L5 点是与太阳和地球等边三角形的角。因此,您可以通过Rsun
围绕轨道平面的法线(通常是黄道坐标系中的 z 轴)旋转 60° 和 –60° 来获得它们。这很简单,伪代码是:
# Get the three components of the original vector
x,y,z = Rsun
# Compute the rotated vector
L4 = [
x * cos(60°) - y * sin(60°),
x * sin(60°) + y * cos(60°),
z
]