Когда взойдёт планета: мини-задача

Соберём знания о координатах и времени в практическую задачу: на сколько часов объект поднимается над горизонтом.

Часовой угол восхода/захода — значение $H$, при котором высота объекта равна нулю; объект виден, пока его часовой угол по модулю меньше этого значения.

Постановка задачи

У объекта со склонением $\delta$, наблюдаемого с широты $\varphi$, момент восхода и захода соответствует высоте $h = 0$. Подставив $h = 0$ в формулу перевода координат, получаем условие на часовой угол восхода: $\cos H_0 = -\tan\delta \tan\varphi$. Объект восходит при часовом угле $-H_0$ и заходит при $+H_0$. Полная продолжительность нахождения над горизонтом — $2H_0$ (в градусах), что в часах равно $2H_0 / 15$.

import math

def rise_set(dec_deg, lat_deg):
    """Часовой угол восхода (град) и время над горизонтом (ч).
    Возвращает None, если объект незаходящий или невосходящий."""
    val = -math.tan(math.radians(dec_deg)) * math.tan(math.radians(lat_deg))
    if val < -1:
        return None, "всегда над горизонтом (околополюсный)"
    if val > 1:
        return None, "никогда не восходит"
    H0 = math.degrees(math.acos(val))
    hours_up = 2 * H0 / 15
    return H0, f"над горизонтом {round(hours_up, 2)} ч в сутки"

# Объект склонением +20°, широта наблюдателя 55°
H0, info = rise_set(20.0, 55.0)
print("Часовой угол восхода:", round(H0, 2), "град")
print(info)

Вывод:

Часовой угол восхода: 121.32 град
над горизонтом 16.18 ч в сутки

Как работает под капотом

Формула $\cos H_0 = -\tan\delta \tan\varphi$ — прямое следствие условия $\sin h = 0$ в уравнении перевода координат. Геометрически она говорит: чем выше склонение объекта и чем больше широта наблюдателя, тем дольше объект над горизонтом (для северных объектов в северном полушарии). Если $-\tan\delta\tan\varphi \lt -1$, арккосинус не существует — объект никогда не заходит (околополюсный). Если $\gt 1$ — никогда не восходит. Эти крайние случаи мы обрабатываем явно, иначе math.acos упадёт.

Чтобы найти точное время восхода по часам, к часовому углу восхода добавляют RA объекта и переводят через звёздное время в гражданское — то есть применяют всю цепочку из разделов про время и координаты. Здесь мы остановились на продолжительности видимости, что само по себе полезно для планирования наблюдений.

Частые ошибки

  • Не проверять диапазон $[-1, 1]$ перед acos — для околополюсных объектов программа упадёт.
  • Забыть удвоить $H_0$: над горизонтом объект от $-H_0$ до $+H_0$, то есть $2H_0$.
  • Игнорировать рефракцию атмосферы — реально объект виден чуть дольше (свет загибается у горизонта).

Итог

  • Условие восхода/захода: $\cos H_0 = -\tan\delta \tan\varphi$.
  • Время над горизонтом $= 2H_0 / 15$ часов; крайние случаи — околополюсные и невосходящие объекты.
  • Это применение всей цепочки координаты-время к реальной наблюдательной задаче.
Проверьте себя
1. Какое условие задаёт часовой угол восхода/захода объекта?
Acos H₀ = tan δ · tan φ
Bcos H₀ = -tan δ · tan φ
CH₀ = δ + φ
Dsin H₀ = cos δ
2. Что значит, если -tan δ · tan φ меньше -1?
AОбъект никогда не восходит
BОбъект всегда над горизонтом (околополюсный)
CОшибка в данных
DОбъект на горизонте
3. Как из часового угла восхода H₀ получить время над горизонтом в часах?
AH₀ / 15
B2·H₀ / 15
CH₀ × 15
D2·H₀ × 15