Положение Солнца на небе
В этой главе мы объединим знания из предыдущих глав и построим полный алгоритм вычисления положения Солнца для заданного места и момента времени.
Входные данные
Для вычисления положения Солнца нам нужны:
- Дата и время (в формате UTC или с известной поправкой часового пояса)
- Географическая широта наблюдателя (\( \phi \))
- Географическая долгота наблюдателя (\( \lambda \))
Шаг 1: Юлианская дата и столетия
Переводим дату в юлианские столетия от эпохи J2000.0:
\[ T = \frac{\text{JD} - 2451545{,}0}{36525} \]
Шаг 2: Средняя долгота и аномалия Солнца
Средняя долгота Солнца (\( L_0 \)):
\[ L_0 = 280{,}46646° + 36000{,}76983° \cdot T + 0{,}0003032° \cdot T^2 \]
Средняя аномалия Солнца (\( M \)):
\[ M = 357{,}52911° + 35999{,}05029° \cdot T - 0{,}0001537° \cdot T^2 \]
Средняя аномалия показывает, где бы находилось Солнце, если бы орбита была круговой. Разница с реальным положением — следствие эллиптичности.
Шаг 3: Уравнение центра
Уравнение центра (\( C \)) — поправка за эллиптичность орбиты:
\[ C = (1{,}9146 - 0{,}004817T) \sin(M) + (0{,}019993 - 0{,}000101T) \sin(2M) + 0{,}00029 \sin(3M) \]
Шаг 4: Истинная и видимая долгота
Истинная долгота Солнца:
\[ L_{\text{true}} = L_0 + C \]
Для повышения точности вводится поправка на нутацию — малые колебания земной оси:
\[ \Omega = 125{,}04 - 1934{,}136 \cdot T \] \[ L_{\text{apparent}} = L_{\text{true}} - 0{,}00569 - 0{,}00478 \sin(\Omega) \]
Шаг 5: Наклон эклиптики
\[ \varepsilon_0 = 23°26’21{,}448’’ - 46{,}815’’ \cdot T - 0{,}00059’’ \cdot T^2 + 0{,}001813’’ \cdot T^3 \]
С учётом нутации:
\[ \varepsilon = \varepsilon_0 + 0{,}00256° \cos(\Omega) \]
Шаг 6: Экваториальные координаты
Склонение Солнца (\( \delta \)):
\[ \sin(\delta) = \sin(\varepsilon) \cdot \sin(L_{\text{apparent}}) \]
Прямое восхождение (\( \alpha \)):
\[ \tan(\alpha) = \frac{\cos(\varepsilon) \cdot \sin(L_{\text{apparent}})}{\cos(L_{\text{apparent}})} \]
Шаг 7: Часовой угол
Среднее звёздное время в Гринвиче (в градусах):
\[ \theta_0 = 280{,}46061837 + 360{,}98564736629 \cdot (\text{JD} - 2451545) \]
Местное звёздное время:
\[ \theta = \theta_0 + \lambda \]
Часовой угол Солнца:
\[ H = \theta - \alpha \]
Шаг 8: Горизонтальные координаты
Высота Солнца над горизонтом (\( h \)):
\[ \sin(h) = \sin(\phi)\sin(\delta) + \cos(\phi)\cos(\delta)\cos(H) \]
Азимут (\( A \)):
\[ \tan(A) = \frac{-\sin(H)}{\tan(\delta)\cos(\phi) - \sin(\phi)\cos(H)} \]
Упрощённый алгоритм для намазов
Для вычисления намазов нам обычно не нужно знать полные горизонтальные координаты в каждый момент. Достаточно определить часовой угол \( H \) для заданной высоты \( h_0 \):
\[ \cos(H_0) = \frac{\sin(h_0) - \sin(\phi)\sin(\delta)}{\cos(\phi)\cos(\delta)} \]
Зная \( H_0 \), мы можем вычислить время события:
- Если \( H_0 > 0 \) — событие после полудня (Солнце на западе)
- Если \( H_0 < 0 \) — событие до полудня (Солнце на востоке)
\[ T_{\text{событие}} = T_{\text{полдень}} \pm \frac{H_0}{15} \text{ (в часах)} \]
Атмосферная рефракция
Атмосфера Земли преломляет свет, из-за чего небесные тела кажутся выше, чем они есть на самом деле. На горизонте рефракция составляет примерно 0,567°.
Для восхода и захода Солнца (когда верхний край касается горизонта):
\[ h_0 = -0{,}833° = -(0{,}567° + 0{,}266°) \]
где 0,266° — видимый угловой радиус Солнца (≈ 16’).
Эта поправка важна: без учёта рефракции время Магриб и восхода будет ошибочным на ≈ 2–3 минуты.