Почему прозрачность расчётов важна
Большинство сайтов с панчангой показывают числа, не объясняя их происхождения. Приходится доверять тому, что кто-то за кулисами сделал всё правильно. Мы поступаем иначе: весь расчёт открыт, шаг за шагом, чтобы вы могли следить за ним и поправить нас, если мы ошиблись.
Дело не в желании продемонстрировать технику. Дело в доверии. Когда Раху Калам в Toronto отличается на десять минут от того, что у вашей мамы в Chennai, единственный ответ, который работает, — тот, который можно проследить до точных исходных данных и прозрачной формулы. Иначе вы просто угадываете, а это не годится, когда речь идёт о том, что для вас важно.
Ниже мы разбираем каждый уровень расчёта — от восхода Солнца до дат праздников — с точными алгоритмами и константами. Текст написан так, чтобы его можно было понять без астрономического образования, но с достаточной детализацией для инженера, желающего проверить каждый шаг.
Уровень 1: Солнце, восход, закат, длина дня
Всё начинается с Солнца. Восход и закат определяют световой день, который, в свою очередь, определяет Раху Калам, Ямагандам, Кулигай, Абхиджит Мухуртам и Гоури Панчангам. Ошибка в положении Солнца означает ошибку во всём остальном.
Мы используем NOAA Solar Calculator — тот же алгоритм, который US National Oceanic and Atmospheric Administration применяет в своём публичном калькуляторе. Он вычисляет эклиптическую долготу Солнца, склонение, уравнение времени и часовой угол в момент восхода по юлианскому дню и координатам наблюдателя.
Разобранный пример
Пример: Chennai, 15 января 2026
Вот как рассчитывается восход шаг за шагом:
- Дата
- 15 January 2026
- Юлианский день
- 2,461,056.0
- Юлианский век (t)
- 0.2604
- Средняя долгота Солнца
- 294.96°
- Истинная долгота Солнца
- 295.35°
- Склонение
- −21.07°
- Уравнение времени
- −9.41 min
- Солнечный полдень UTC
- 06:48
- Часовой угол
- 85.78°
- Восход UTC
- 01:05
- Восход по местному времени
- 06:35 IST
Входные данные
Григорианская дата → Юлианский день на полдень UTC
(JD − 2 451 545) / 36 525
280,47 + 36 000,77 × t
Средняя долгота + поправочные члены
Высота Солнца над небесным экватором
Разница между солнечными и средними часами
720 − 4 × долгота − уравнение времени
arccos(cosHA) для зенита 90,833°
Полдень − 4 × часовой угол
UTC + 5:30 (часовой пояс Индии)
Восход в Chennai 15 января 2026 — 06:35 IST, и все дальнейшие расчёты опираются на это число.
Уровень 2: Луна, Мееус, глава 47
Положение Луны принципиально важно для титхи, накшатры, йоги и кираны — четырёх из пяти элементов панчанги, не считая дня недели. Луна движется быстро: около 13° в сутки против примерно 1° у Солнца. Поэтому точная панчанга нуждается в хорошей лунной модели.
Мы используем «Астрономические алгоритмы» Жана Мееуса, глава 47 — полный 60-членный ряд ΣL для эклиптической долготы Луны. Это та же модель, которую применяют серьёзные астрономические альманахи и планетарные программы. Ряд суммирует 60 гармонических членов, моделирующих все известные возмущения лунной орбиты.
Результат — видимая эклиптическая долгота Луны в градусах (0°–360° вдоль зодиака). В сочетании с эклиптической долготой Солнца это даёт титхи (элонгация Луна − Солнце). В сочетании с аянамшей — накшатру (сидерическое положение Луны).
| Элемент | Определение | Формула |
|---|---|---|
| Титхи (1–30) | Угловое расстояние Луны от Солнца ÷ 12° | floor(elongation / 12) + 1 |
| Накшатра (1–27) | Сидерическая долгота Луны ÷ 13°20' | floor(moon_sidereal / 13.333) |
| Йога (1–27) | Сумма сидерических долгот Солнца и Луны ÷ 13°20' | floor((sun_sid + moon_sid) / 13.333) |
| Карана (1–60) | Половина шага титхи: элонгация ÷ 6° | floor(elongation / 6) |
| Ваарам | День недели, астрономия не нужна | JavaScript getDay() |
Уровень 3: Аянамша Лахири (Читрапакша)
Титхи зависит от угла между Солнцем и Луной — он одинаков в любой системе координат. Но накшатра, йога и раши требуют сидерических координат: положений относительно неподвижных звёзд, а не точки весеннего равноденствия.
Разница между тропическим и сидерическим положением называется аянамшей. Мы используем Лахири (Читрапакша) — стандарт, официально принятый правительством Индии в 1956 году и наиболее распространённый в тамильской традиции панчанги. Наша модель линейна и привязана к эпохе J2000.
Разобранный пример
Аянамша Лахири на практике
Формула проста:
- Аянамша при J2000
- 23.864°
- Скорость прецессии
- ~50.29 arcseconds/year
- Аянамша в 2026 году
- ≈24.23°
Начальная точка, 1 января 2000
≈ 1,397° за юлианский век
23,864 + 1,397 × 0,26
Все сидерические положения вычисляются вычитанием этой аянамши из тропической долготы.
Другие системы (KP, Раман, Юктешвар) используют несколько иные значения, но разница менее 2°, что обычно сдвигает границу накшатры лишь в редких случаях.
Уровень 4: Раху Калам и три окна нежелательного времени
Раху Калам, Ямагандам и Кулигай основаны на одном принципе: световой день (от восхода до заката) делится на восемь равных отрезков, и один из них выбирается в зависимости от дня недели. Это чистая арифметика, но точный результат зависит от правильных времён восхода и заката.
| День недели | Раху (отрезок) | Ямагандам | Кулигай |
|---|---|---|---|
| Воскресенье | 8-й отрезок | 5-й отрезок | 7-й отрезок |
| Понедельник | 2-й отрезок | 4-й отрезок | 6-й отрезок |
| Вторник | 7-й отрезок | 3-й отрезок | 5-й отрезок |
| Среда | 5-й отрезок | 2-й отрезок | 4-й отрезок |
| Четверг | 6-й отрезок | 1-й отрезок | 3-й отрезок |
| Пятница | 4-й отрезок | 7-й отрезок | 2-й отрезок |
| Суббота | 3-й отрезок | 6-й отрезок | 1-й отрезок |
Разобранный пример
Пример: Раху Калам в понедельник в Chennai
Восход 06:35, закат 18:01, понедельник использует 2-й отрезок:
- Световой день
- 686 minutes
- Один отрезок
- 85.75 min
- Начало 2-го отрезка
- 06:35 + 85.75 = 08:00
- Конец 2-го отрезка
- 08:00 + 85.75 = 09:26
18:01 − 06:35 = 11ч 26мин
686 / 8 ≈ 1ч 26мин
Восход + 1 × длина отрезка
Начало + длина отрезка
Раху Калам в понедельник в Chennai, январь: приблизительно 08:00–09:26 IST.
Уровень 5: Абхиджит Мухуртам — благоприятное полуденное окно
Абхиджит Мухуртам — это 8-й из 15 равных мухурта-отрезков светового дня, центрированный точно на солнечный полдень. Расчёт прост, но требует точных времён восхода и заката:
- Солнечный полдень = (восход + закат) / 2
- Половина мухурты = (закат − восход) / 30
- Начало Абхиджит = полдень − половина мухурты
- Конец Абхиджит = полдень + половина мухурты
В Chennai в январе (восход 06:35, закат 18:01) это даёт окно Абхиджит приблизительно с 11:55 до 12:41, около 46 минут. В Copenhagen в июне, где дни значительно длиннее, окно длится больше часа.
Уровень 6: Праздники и памятные дни
Праздники используют две совершенно разные системы источников. Крупные фиксированные праздники (Понгал, Дипавали, Тай Понгал, Путанду) формируются редакционно: даты вводятся вручную, сверяются с официальными изданиями календарей, данные охватывают 2026–2029 годы.
Ежемесячные обряды (Амавасай, Пурнами, Экадаши, Прадошам, Шашти, Картигай и др.) вычисляются в реальном времени на основе титхи и накшатры — точно так же, как описано выше. При расчёте всегда используется восход Солнца в Chennai как точка отсчёта, даже если вы находитесь в London. Почему? Потому что дата праздника определяется титхи, действующей на момент восхода в священной земле, а не вашего местного восхода.
Никаких внешних зависимостей — и это сделано намеренно
Весь движок написан на чистом TypeScript. Он не импортирует внешних астрономических библиотек, не обращается к API и не делает запросов к базе данных. Тот же код работает на сервере при сборке страницы и в вашем браузере при выборе нового города. Результат детерминирован: одни и те же входные данные всегда и везде дают один и тот же результат.
Это сделано намеренно. Когда расчёт самодостаточен, нет сервера, который может упасть, нет ключа API, который может истечь, нет изменений у третьих сторон, которые незаметно исказят наши числа. И это означает, что вы или любой другой человек можете проверить каждое число, изучив открытый исходный код.
| Модуль | Алгоритм / источник | Что даёт |
|---|---|---|
| solar.ts | NOAA Solar Calculator | Восход, закат, солнечный полдень, эклиптическая долгота Солнца |
| lunar.ts | Мееус, «Астрономические алгоритмы», гл. 47 (60-членный ряд ΣL) | Эклиптическая долгота Луны, титхи, накшатра, йога, карана |
| lunar.ts | Аянамша Лахири (23.864° + 1.397 × t) | Сидерическое положение для накшатры и йоги |
| windows.ts | Световой день ÷ 8, отрезок по дню недели | Раху Калам, Ямагандам, Кулигай |
| index.ts | (sunrise + sunset) / 2 ± daylight/30 | Абхиджит Мухуртам |
| gowri.ts | 8 отрезков Гоури из светового дня | Гоури Панчангам / Налла Нерам |
| festivals.ts | Титхи/накшатра на восход в Chennai + курируемый набор данных | Даты праздников и обрядов |
| tamilCalendar.ts | Сидерическая долгота Солнца → тамильский месяц | Тамильская дата (Читирай, Вайкаси и др.) |
Что мы не вычисляем — и почему
Этот календарь сосредоточен на том, что поддаётся астрономическим расчётам. Но в мире панчанги есть темы, которые мы намеренно не охватываем вычислениями — либо потому что они требуют субъективных суждений, либо потому что традиции по ним расходятся между школами:
- Одобрение мухурты для свадеб и церемоний — требует интерпретации гороскопа, которую мы не автоматизируем.
- Периоды даши и сила планет — зависят от астрологической традиции, а не от астрономии.
- Храмовые праздники с местными вариациями — определяются традициями отдельных храмов, а не централизованно.
Мы предпочитаем ничего не показывать, чем давать число, за которое не можем поручиться. Это основополагающий принцип всего этого календаря.
