Функции расчета восхода и заката солнца (22.03.2012). Печать
2012 - Март
22.03.2012 09:56
Save & Share

Пишу этот пост ввиду его дефицитности. Мне потребовалось сделать алгоритм, определяющий, когда восходит и заходит солнце. С поверхностной точки зрения задача стоит тривиальная, но как только начинаешь разбираться - ... ...в общем, программист программиста поймет.

Конечно же, первым делом я пытался облегчить себе задачу настолько, чтобы просто найти функцию в интернете и вставить ее. Но проблема состояла в том, что на Delphi и PHP такая функция есть в свободном доступе, но вот для C попадались нерабочие, а на Visual Basic вообще отсутствовала.

В общем, я смирился. Пришлось писать самому; и дошло даже до того, что я нашел ошибку в Википедии и изучал ряды и преобразования Фурье! Наконец-то мне впервые пригодился матан в реальной жизни.

В общем, исходники я выкладываю. Функция способна определить восход и заход солнца в любой точке мира. Однако моя функция все равно врет в диапазоне [-4;30] минут (не хватает динамического слагаемого в конце формулы). Вы можете повторно изучить минимумы и максимумы расхождения с реальным временем восхода/заката, дописать слагаемое и прислать его мне.

(добавлено 31.03.2012): я добавил в архив исправленный и переписанный вариант функции. Время восхода и заката вычисляется почти идеально; на одну минуту лишь расхождение. И без склонений солнца.

Обновлено ( 24.08.2016 19:10 )