A A A A Автор Тема: Расчет поправки времени восхода/захода Луны в зависимости от координат  (Прочитано 1004 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Summer SonАвтор темы

  • Новичок
  • *
  • Сообщений: 7
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Summer Son
Уважаемые форумчане,

В свободное от безделья время решил сделать циферблат для умных часов, хочу добавить отображение времени восхода/захода Луны. "Правильный" итерационный алгоритм расчета восха/захода небесных тел у меня есть, но он слишком сложный для расчета на часах, да и точность в данном случае такая не нужна - отобразить что-то более точно, чем +/- 15 минут не получится (из-за размера элемента и разрешения экрана). В общем, цель - показать примерно, при этом использовать минимальные вычислительные ресурсы.

Вспомнил, как в отрывных календарях приведено время восхода/захода Солнца и Луны, как правило, для столиц. В конце календаря есть листочек с поправками для других городов. Я могу рассчитать заранее время восхода/захода на, скажем, год вперёд, для нулевых координат, а в часах рассчитывать поправку для конкретного местоположения. Если это простой расчёт, конечно. Простой - как, например, добавление лунного месяца к дате известного новолуния для расчета фазы Луны.

Буду благодарен за идеи и подсказки!

Оффлайн xd

  • *****
  • Сообщений: 17 982
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Если есть часы, то должны быть и координаты и нет необходимости считать примерно, с поправками и вот это всё.
Берёте любую книгу по эфемеридной астрономии (Астрономия с персональным компьютером; Астрономия с калькулятором; Астрономический Календарь. Постоянная часть или подобная) и реализуете или адаптируете готовый код.
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Geen

  • *****
  • Сообщений: 12 212
  • Благодарностей: 200
  • Мне нравится этот форум!
    • Сообщения от Geen
но он слишком сложный для расчета на часах
А что это значит? Вам ведь не надо пересчитывать 100 раз в секунду??
Если у тебя есть фонтан, заткни его, дай отдохнуть и фонтану.

А ещё мы любим обсуждать вкус устриц с теми кто их ел...

Оффлайн Summer SonАвтор темы

  • Новичок
  • *
  • Сообщений: 7
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Summer Son
Если есть часы, то должны быть и координаты
Координаты есть, не хочется рассчитывать полностью. Хочется взять табличное значение для текущей даты, сделать с ним и координатами пару арифметических действий и получить приемлемый результат.

А что это значит? Вам ведь не надо пересчитывать 100 раз в секунду??
Да, рассчитываться будет раз в сутки в 00:00 или после запуска часов.
Есть ограничение по времени работы циферблата для прорисовки. Если будет слишком много, велика вероятность что процесс будет убит системой. Пока что полный алгоритм на время работы не проверял, да и не хочу, учитывая следующее: вот используемый мной алгоритм расчета для Солнца https://www.r-bloggers.com/approximate-sunrise-and-sunset-times/
Теперь сравните его с итерационным алгоритмом расчета для небесных тел. И добавьте сюда важность восхода Солнца по сравнению с Луной.
« Последнее редактирование: 17 Авг 2020 [22:10:43] от Summer Son »

Оффлайн xd

  • *****
  • Сообщений: 17 982
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Ну так считайте раз в сутки, но нормально.
Кстати вопрос: а как эта штука поведёт себя в самолёте при длинном перелёте?
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Summer SonАвтор темы

  • Новичок
  • *
  • Сообщений: 7
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Summer Son
Ну так считайте раз в сутки, но нормально.
Это просто циферблат, а не приложение, для него установлено время прорисовки. Рассчет выполняется хоть и раз в сутки, но во время прорисовки, и вот если эта самая прорисовка убьется системой, то данных не будет.
как эта штука поведёт себя в самолёте при длинном перелёте?
Циферблат не имеет разрешения обновлять местоположение, используется последнее известное (которое обновляется, например, во время какой-то спортивной активности).

Оффлайн xd

  • *****
  • Сообщений: 17 982
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Summer SonАвтор темы

  • Новичок
  • *
  • Сообщений: 7
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Summer Son
А расчёт где идёт?
Если я правильно понял вопрос...
В режиме простоя каждую минуту прорисовывается циферблат. Во время прорисовки я могу выполнять какие-то рассчеты (например, координат стрелок на экране), могу считать последнее известное значение местоположения и сделать с ним что-то, например рассчитать восход/заход. Для экономии батареи я рассчитываю один раз в сутки в 00:00 всё, что надо, записываю в переменную и потом каждую минуту просто вывожу на экран данные этой переменной.

Так как вычисления для Луны очень процессоемкие, я хочу максимум вычислений выполнить заранее (на компьютере, на год вперёд, например), результаты их внести в таблицу, а на самих часах рассчитывать лишь поправку. Да, каждый год придется обновлять версию циферблата с новыми данными, но это минимальное неудобство из все вариантов. 3 столбца по 365 строчек в коде + чтение и лёгкий алгоритм несравнимо с нормальным полным расчетом.

Оффлайн Summer SonАвтор темы

  • Новичок
  • *
  • Сообщений: 7
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Summer Son
И так ещё чтобы внести понимание масштаба трагедии вычислений и расхода батареи:
В стоковом циферблате координаты часовой стрелки рассчитываются раз в 12 минут. Т.е. даже такой простой расчёт раз в минуту - роскошь.

Оффлайн xd

  • *****
  • Сообщений: 17 982
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Язык разработки?
Какой процессор, какой бюджет времени?
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Summer SonАвтор темы

  • Новичок
  • *
  • Сообщений: 7
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Summer Son
Язык разработки?
Какой процессор, какой бюджет времени?
Monkey C. Устройства разные, естественно.
Я вообще-то сюда за ответом на первый вопрос, для вопросов по разработке есть профильные форумы, не хочу здесь этим засорять.

Оффлайн xd

  • *****
  • Сообщений: 17 982
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Язык разработки?
Какой процессор, какой бюджет времени?
Monkey C. Устройства разные, естественно.
Я вообще-то сюда за ответом на первый вопрос, для вопросов по разработке есть профильные форумы, не хочу здесь этим засорять.
Совершенно напрасно.

Если память устройства позволяет, то можно сделать предвычисленную сетку значений.
Но честно говоря мне кажется что не настолько малый бюджет времени, чтобы даже честно посчитать было нельзя.
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Summer SonАвтор темы

  • Новичок
  • *
  • Сообщений: 7
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Summer Son
не настолько малый бюджет времени, чтобы даже честно посчитать было нельзя.
Если весь смысл в отображении восхода/захода Луны, то я с Вами согласен, можно. Можно разбить вычисление на несколько этапов и вычислить за, скажем, 5 минут даже.
Но дело в том, что помимо Луны можно нарисовать много другой полезной информации, затрачивая гораздо меньше усилий. Мне просто хочется дополнить времена восх/зах Солнца ещё и Луной, но только если это для Луны, скажем грубо, в 2 раза легче посчитать, чем для Солнца, потому что и польза от этих данных соответствующая. Поэтому либо как-то очень просто, либо никак. Это не главная цель циферблата.

P.S. Да и просто интересно, как на старых отрывных календарях это рассчитывали. Более ого, кажется с изменением широты восход стает раньше, а заход позже, т.е. там нелинейная зависимость.