Когда взойдёт планета: мини-задача
Соберём знания о координатах и времени в практическую задачу: на сколько часов объект поднимается над горизонтом.
Часовой угол восхода/захода — значение $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$ часов; крайние случаи — околополюсные и невосходящие объекты.
- Это применение всей цепочки координаты-время к реальной наблюдательной задаче.