Старый 01.12.2018, 19:06   #1
zer0cat
Собеседник
 
Регистрация: 01.12.2018
Сообщения: 3
zer0cat репутация выше +10
Angry Подскажите алгоритм рассчета лунных суток

Здравствуйте
Задался целью расчета лунных дней. Вроде бы информация не закрыта и информации много, как и готовых скриптов. Но - почему-то у меня все получается с погрешностью 1-2 суток (я сравниваю с онлайн-калькуляторами). Почему так - не знаю, вероятно нужно добавлять географическую составляющую или что.

Вот взять 2 первые ссылки из гугла:
_https://lyna.info/raschyot-lunnogo-dnya-rozhdeniya/
_http://redday.ru/informer/i_moon/225/bl.png

Там везде одинаково, а у меня так не получается.

В общем, посоветуйте скрипт (ЯП любой, я переведу), или нормальный алгоритм, или куда копать, в какую сторону.
zer0cat вне форума   Ответить с цитированием
Старый 01.12.2018, 19:12   #2
Единорог
Единорог
 
Аватар для Единорог
 
Регистрация: 30.03.2009
Сообщения: 66,912
Единорог отключил(а) отображение уровня репутации
По умолчанию

Просто надо определять положение луны относительно Ас.
Восход луны считать методом деления отрезка пополам, например.
Простенький такой численный метод.
Первые сутки на момент новолуния, вторые на первый восход луны и т.п.
Единорог вне форума   Ответить с цитированием
Старый 01.12.2018, 19:19   #3
zer0cat
Собеседник
 
Регистрация: 01.12.2018
Сообщения: 3
zer0cat репутация выше +10
По умолчанию

Цитата:
Сообщение от Единорог
Просто надо определять положение луны относительно Ас.
Восход луны считать методом деления отрезка пополам, например.
А что такое Ас?
И какой отрезок делить пополам?
zer0cat вне форума   Ответить с цитированием
Старый 01.12.2018, 19:25   #4
Единорог
Единорог
 
Аватар для Единорог
 
Регистрация: 30.03.2009
Сообщения: 66,912
Единорог отключил(а) отображение уровня репутации
По умолчанию

Цитата:
Сообщение от zer0cat
А что такое Ас?
И какой отрезок делить пополам?
Ас это пересечение математического горизонта с эклиптикой. На востоке.
Есть тригонометрическая формула для его вычисления.
Отрезок делить между луной и Ас, когда она на восходе, при каком то шаге с нужной погрешностью координаты луны совпадут с координатой Ас.
Это будет начало новых лунных суток. Ну там разные, наверно, можно придумать алгоритмы совпадения луны и Ас, восхода луны.
Естественно вам понадобится вычисление координаты луны и солнца. Солнца для новолуния.
Единорог вне форума   Ответить с цитированием
Старый 01.12.2018, 19:31   #5
zer0cat
Собеседник
 
Регистрация: 01.12.2018
Сообщения: 3
zer0cat репутация выше +10
По умолчанию

Единорог, спасибо. Да, сложно это все.
zer0cat вне форума   Ответить с цитированием
Старый 01.12.2018, 20:01   #6
Единорог
Единорог
 
Аватар для Единорог
 
Регистрация: 30.03.2009
Сообщения: 66,912
Единорог отключил(а) отображение уровня репутации
По умолчанию

Цитата:
Сообщение от zer0cat
Единорог, спасибо. Да, сложно это все.
Здесь специалисты иногда присутсвуют, работают со швейцарскими эфемеридами. Может вам чем помогут.
Единорог вне форума   Ответить с цитированием
Старый 26.12.2018, 01:30   #7
Yuri197
Собеседник
 
Регистрация: 25.12.2018
Сообщения: 5
Yuri197 репутация выше +50
По умолчанию

Вот что написано в мануале к Zet:
Цитата:
Имеются два варианта определения дней Луны:
1) День Луны начинается от восхода Луны или момента новолуния и заканчивается следующим восходом Луны или следующим новолунием. Первый и последний дни Луны могут быть очень короткими. Лунный месяц может содержать от 29 или 30 Лунных дней. Этот вариант использует П.П.Глоба.
2) День Луны определяется по 12-градусному аспекту Солнце-Луна, т.е. первый день Луны начинается в новолуние, следующие дни Луны начинаются, когда угол Солнце-Луна будет кратен 12 градусам. Лунных дней всегда 30. Этот вариант включается флажком "12 градусов".

Соответственно, в первом случае нужно рассчитывать и позиции небесных объектов, и восходы Луны. Во втором случае только позиции небесных объектов.
Новолуние происходит в тот момент, когда Луна входит в точное соединение с Солнцем. Как рассчитать долготу Солнца я написал здесь. Чтобы рассчитать позицию Луны там нужно поменять константу swisseph.SUN на swisseph.MOON.

Время восхода Луны рассчитывается примерно так:

Код:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import swisseph if __name__ == "__main__": year = 1957 month = 10 day = 15 hour = 0 minutes = 0 seconds = 0 lon = 25.1 lat = 58.95 # Высота в метрах. alt = 0.0 # Атмосферное давление в миллибарах. press = 0.0 # Температура в градусах Цельсия. temp = 0.0 # Получение юлианского дня в ut. et_ut = swisseph.utc_to_jd(year, month, day, hour, minutes, seconds, swisseph.GREG_CAL) jd = et_ut[1] # Флаг указывает, что используются швейцарские эфемериды. flag = swisseph.FLG_SWIEPH # Флаг указывает, что рассчитывается восход. rsmi = swisseph.CALC_RISE # Получения значения восхода Луны. result = swisseph.rise_trans(jd, swisseph.MOON, lon, lat, alt, press, temp, rsmi, flag) # Преобразование юлианской даты в UTC. result = swisseph.jdut1_to_utc(result[1][0], swisseph.GREG_CAL) print(result)

Нюанс: флаг rsmi может содержать несколько значений. Возможно еще потребуется их добавить.

Значения alt, press, temp можно указать для пущей точности.

Последний раз редактировалось Yuri197, 26.12.2018 в 01:41.
Yuri197 вне форума   Ответить с цитированием
Ответ


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +1, время: 12:53.


Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© 1995-2024, ARGO