Вычисление прямого восхождения для двух планет и их разделения с помощью python

Я экспериментирую с библиотекой Python PyEphem для астрономии и пытаюсь воссоздать/понять некоторые из основных вычислений.

Существует функция, называемая разделением, которая, учитывая две планеты и дату/время, вычисляет расстояние (угол) между этими двумя планетами относительно их проекции «x» на плоскость.

Итак, на 2018/01/1 для планет Меркурий и Марс мы имеем:

import ephem
import math

mercury = ephem.Mercury('2018/1/1')
mars = ephem.Mars('2018/1/1')

s1 = ephem.separation(mercury, mars)
print(math.degrees(s1))

Что возвращает

33.792384499568264

Но если бы я хотел вычислить это без функции разделения, то я думаю, что вычисление было бы таким же простым, как «прямое восхождение» 1 минус «прямое восхождение» другого:

math.degrees(mercury.ra) - math.degrees(mars.ra)

Что возвращает

35.114532008671574

Почему углы разные? Поскольку я не включаю широту и долготу наблюдателя, согласно PyEphem все расчеты должны быть геоцентрическими.

Кто-нибудь знаком с вычислениями, выполняемыми PyEphem, или другой библиотекой со встроенными эфемеридами, которая может давать согласованные результаты для разделения?

Ответы (1)

Проблема, похоже, в вашем понимании separationфункции. Вы утверждаете, что

он вычисляет расстояние (угол) между этими двумя планетами относительно их проекции "x" на плоскость.

однако в документации указано

Функция separation()вычисляет угол в градусах между двумя телами, измеряемый их прямым восхождением и склонением.

В общем случае separation() можно измерить угол между любой парой сферических координат , если элементами каждой координаты являются сферическая долгота (угол вокруг сферы), за которой следует сферическая широта (угол выше или ниже экватора). Каждая пара должна быть представлена ​​как последовательность из двух элементов, такая как кортеж или список. Соответствующие пары координат включают прямое восхождение и склонение; гелиоцентрическая долгота и широта; азимут и высота; и даже географическая долгота и широта двух мест на земле.

Это означает, что эта функция вычисляет угловое расстояние между двумя объектами, а не только расстояние в конкретной плоскости. Если вы хотите выполнить тот же расчет (как указано в документации), похоже, вам действительно нужна формула общего углового расстояния .

θ знак равно потому что 1 [ грех ( дельта 1 ) с я н ( дельта 2 ) + потому что ( дельта 1 ) потому что ( дельта 2 ) потому что ( α 1 α 2 ) ]

куда дельта е [ π / 2 , π / 2 ] это склонение, и α е [ 0 , 2 π ] это прямое восхождение.

спасибо, это отличное разъяснение. Действительно, мои знания были неправильными