Алгоритм расчета фаз луны

Вычисление возраста и фазы луны.

Раз уж у нас имеется калькулятор про Солнце — Восход и закат солнца, то я подумал, что неплохо бы сделать калькулятор и про Луну.

Ну а что вспоминает человек, когда слышит слово «Луна»? — правильно, то, что у нее есть фазы.
И, как правило, именно в полнолуние оборотень превращается в волка.
Значит будем искать фазу Луны.

Как оказалось, довольно много калькуляторов для расчета фазы Луны, которые мне удалось найти в интернете, используют алгоритм, опубликованный Стефаном Шмиттом (Stephen R. Schmitt). Алгоритм описывается, например, здесь.

Идея алгоритма необычайно проста (видимо, потому его все и используют). Заданная дата переводится в Юлианские дни (вот они и пригодились), после чего вычисляется число дней, прошедшее с магической юлианской даты 2451550.1
Это 14:24 6 января 2000 года — и я подозреваю, что это просто начало очередного лунного месяца на момент разработки алгоритма.
Полученная разница в днях делится на продолжительность лунного месяца — 29.530588853, и остаток от деления позволяет определить возраст луны. Где возраст, там и фаза.

Что интересно — у нас различают только четыре положения Луны — новолуние, первая четверть, полнолуние, третья четверть, — тогда как в англоязычной литературе промежутки между этими четырьмя положениями тоже имеют свои названия. Насколько я понял, для них нет еще устоявшихся терминов, поэтому я приведу их здесь в английском варианте.

Промежуток между новолунием и первой четвертью называется Waxing Crescent — если дословно, то «растущий полумесяц»
Промежуток между первой четвертью и полнолунием называется Waxing Gibbous — «растущий горб»
Промежуток между полнолунием и третьей четвертью называется Waning Gibbous — «убывающий горб»
Промежуток между третьей четвертью и новолунием называется Waning Crescent — «убывающий полумесяц»

Читайте также:  Pascal abc простые программы

В калькулятор вводим дату, расчет ведется на 00:00 этой даты по гринвичскому времени.

Все времена в таблице приведены в универсальном (Гринвичском) времени (UTC). Для перевода этого значения в местное поясное время надо прибавить временную поправку (номер часового пояса). Учтите, что при переходе на летнее/зимнее время эта поправка меняется.

В таблице перигеев и апогеев приведено удаление Луны от центра Земли в километрах.

Алгоритмы расчета

Для расчета моментов прохождений Луной перигея и апогея орбиты использована полуаналитическая теория движения Луны ELP 2000-82. Эта теория расчитана на работу в интервале от 1977 до 2022 годов, при этом она гарантирует, что максимальная ошибка рассчитанных моментов времени не превосходит 17.4 с, средняя ошибка менее 4 с, ошибка расстояния от Земли не превышает 12 км в перигее и 6 км в апогее орбиты. Алгоритм расчета взят из книги [1] (глава 48).

Для расчета фаз Луны использован более простой алгоритм из книги [2] (глава 32). Его точность расчетов составляет 2 минуты.

За основу внешнего вида страницы расчета фаз и моментов прохождений был взят Lunar Perigee and Apogee Calculator Джона Уокера.

Литература

[2] Meeus, Jean. Astronomical Formulae for Calculators, 4-th Edition . Richmond: Willmann-Bell, 1988. ISBN 0-943396-22-0. Более простой и менее полный набор алгоритмов расчета. Есть русский перевод 2-го издания этой книги: Ж.Меёс "Астрономические формулы для калькулятора", М., Мир, 1988.

[3] Walker, John. Lunar Perigee and Apogee Calculator. . Калькулятор фаз Луны и моментов прохождения пергея и апогея. Для расчетов используются те же алгоритмы, что и на данной странице. Написан на языке JavaScript. Может работать автономно (в off-line).

[4] Chapront-Touze, Michelle and Jean Chapront. Lunar Tables and Programs from 4000 B.C. to A.D. 8000 . Richmond: Willmann-Bell, 1991. ISBN 0-943396-33-6. В данной книге описывается более точная на длительных интервалах времени теория движения Луны ELP 2000-85, которая обеспечивает точность вычисления координат Луны 0.0004 градуса с 1900 по 2100 годы и 0.0054 градуса с 1500 по 2500 годы. В интервале с 1977 по 2022 годы теория ELP 2000-82 дает более точные результаты.

Читайте также:  Аналитики дота 2 состав

[5] Chapront-Touze, Michelle and Jean Chapront. Lunar solution ELP 2000-82B . Описание полуаналитической теории движения Луны ELP 2000-82. К описанию прилагаются программа на языке FORTRAN и набор таблиц данных (коэффициентов расчета) для вычисления положения Луны согласно этой теории. Описание и программу можно взять в архиве NASA.

Захотелось сделать календарь полнолуний. Но вот только как их высчитывать не знаю. Есть ли какие-нибудь готовые алгоритмы?

1 ответ 1

В PHP кстати уже есть готовая функция easter_day
Такую же функцию можно написать используя Алгоритм Гаусса для расчета Пасхи , а дальше плясать от этого добавляя к первому полнолунию один лунный месяц.
А вот здесь http://nabasice.narod2.ru/ есть готовые программы реализованные на QBasic

Всё ещё ищете ответ? Посмотрите другие вопросы с метками алгоритм календарь или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.1.17.35809

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *