Наблюдая за улучшением погоды в своей местности, внезапно задался мыслью о том, что неплохо было бы знать время восхода и заката Солнца. Сказано — сделано. Алгоритм расчета нашелся здесь. Источник алгоритма — Almanac for Computers, 1990, published by Nautical Almanac Office, United States Naval Observatory, Washington, DC 20392

В комментариях к алгоритму также было указано, что он верен для периода с 1980 по 2050 год, и обладает точностью до одной минуты. Точность, впрочем, уменьшается для мест, лежащих на широтах выше 60 градусов северной или южной широты. Выше 80 градусов погрешности в расчете солнечной эклиптики (так, кажется) приводят к еще большим ошибкам (каким — не сказано).

Также для высоких широт зимой и летом солнце может либо никогда не заходить (полярный день) либо никогда не восходить (полярная ночь). В этом случае в результатах указывается продолжительность дня 24 часа либо 00 часов соответственно.

Надо еще рассказать про зенитный угол (zenith angle), который задается параметром «Граница дня/ночи» и оказывает существенное влияние на расчет. Зенит — это линия, направленная из точки на поверхности земли вертикально вверх, а зенитный угол (я не уверен в термине, это калька с английского) — это угол между вертикалью и направлением на центр небесного объекта. В данном случае речь идет о том, какой величины должен быть этот угол, чтобы считать, что солнце уже «совсем» взошло или уже село и день сменился ночью или наоборот.

Если бы Солнце было точкой, а Земля не имела атмосферы, то зенитный угол, определяющий полный закат солнца, был бы равен 90 градусам. Но поскольку Солнце не точка и имеет угловой диаметр, а его свет отражается твердыми частицами в атмосфере, то для того, чтобы верхний край солнечного диска скрылся за горизонтом, его центр должен лежать уже чуть ниже горизонта. При нормальных атмосферных условиях это соответствует углу в 90 градусов 50 минут. Этот угол считается углом «официального» заката солнца.

Но хотя солнце и скрылось за горизонтом, за счет отражения его света от атмосферы все еще довольно светло. Начинается период времени, называемый сумерками. Сумерки делятся на три этапа, и конец каждого из этапов тоже можно взять за точку заката солнца.

Первый этап называется гражданскими сумерками. Это время, когда еще достаточно светло, чтобы работать вне помещения без искусственного освещения. Концу гражданских сумерек соответствует зенитный угол в 96 градусов, после чего начинаются навигационные сумерки.

Навигационные сумерки — это время, когда на воде все еще заметна линия горизонта. Концу навигационных сумерек соответствует зенитный угол в 102 градуса, после чего начинаются астрономические сумерки.

Астрономические сумерки — это время, когда Солнце все еще является источником света и мешает видимости самых слабых звезд. Для обычного наблюдателя это время неотличимо от ночи. Концу астрономических сумерек соответствует момент, когда Солнце полностью прекращает быть источником света, и это зенитный угол в 108 градусов.

Впрочем, как оказалось, реализация алгоритма это еще не все. Дело в том, что алгоритм выдает результат в гринвичском времени. Очевидно, что для большего удобства пользователя надо перевести это время в местное. В идеальном мире часовой пояс можно было бы получить, используя значение долготы места. В самом деле, земной сфероид делится на 24 сферических двуугольника, по меридианам, отстоящим друг от друга на 15 градусов, и часовой пояс вычисляется тривиально.

Но в реальном мире все не так — политические, административные и географические границы придали весьма забавную форму часовым поясам, так что от определения пояса по долготе пришлось отказаться. Вместо этого я добавил в калькулятор дополнительное поле для задания смещения от гринвичского времени.

Тут пришла в голову мысль — почему бы не объединить этот алгоритм со справочником Информация о городах, который используется для калькулятора Расстояние между двумя городами и не сделать еще один калькулятор — расчет времени восхода и заката солнца в городах, с использованием данных из справочника. Координаты городов в нем есть, часовые пояса теперь тоже есть — выбираешь дату и город и получаешь местное время восхода и заката без лишних хлопот.

Правда, надо еще было понять, какое сейчас местное время — зимнее или летнее. Дело в том, что в тех странах, которые используют зимнее и летнее время, смена времени осуществляется по разному. Например, в Новой Зеландии летнее время действует с 30 апреля до последнего воскресенья сентября, а в Ираке — с первой пятницы апреля до последней пятницы октября. В общем, на такие подробности меня уже не хватило, и я немного упростил, использовав правило перехода на зимнее/летнее время, принятое в Европе и в России — с последнего воскресенья марта по последнее воскресенье октября.

Так что для некоторых городов (ну например, для городов Новой Зеландии) местное время в калькуляторе может вычисляться неправильно для марта-апреля и сентября-октября. Но, к слову, далеко не все страны используют зимнее/летнее время. Например, в районе экватора оно совсем и не нужно, так как сезонных изменений в солнечном свете практически не наблюдается. Да и вообще, многим странам такое деление навязывалось искусственно, в их бытность колониями, или, как в случае с Японией, под американской оккупацией (1948-1951). Некоторые страны, как говорится, пробовали, но им не понравилось. На территории бывшего СССР от разного времени уже отказались страны Центральной Азии и Грузия. Мол, люди напрягаются, а экономического эффекта не видно.

Вообще придумали зимнее/летнее время, как я и подозревал, англичане. В 1907 году предложил его некий Вильям Виллет (William Willett).
Англичане вообще славятся придумыванием всяких забавных штук вроде имперской системы мер (см. Перевод мер площади из метрической в английскую систему и обратно) или нестандартных размеров обуви (см. Соответствие размеров обуви), так что ничего удивительного. Но многие страны Европы им последовали в годы Первой Мировой Войны, чтобы экономить что? Неправильно, совсем не электричество — а уголь. Первыми были практичные немцы и их союзники (30 апреля 1916 года), ну а потом подтянулась Великобритания с союзниками и затем нейтральные страны.

Собственно, ниже калькулятор времени восхода и заката в городах (если вашего города в нем нет, зарегистрируйтесь и добавьте его в справочник), а еще ниже — по заданным географическим координатам (для вывода правильного местного времени надо самому ввести смещение от гринвичского).

P.S. По просьбе пользователя (смотри обсуждение статьи ниже) в калькуляторы добавлен расчет времени истинного полудня, т. е. времени, когда солнце солнце имеет наибольшее восхождение. Это время, в общем, не совпадает с 12:00.

Восход и закат солнца по городамCreative Commons Attribution/Share-Alike License 3.0 (Unported)
 
 
 
 
 
 
 
 



Восход и закат солнцаCreative Commons Attribution/Share-Alike License 3.0 (Unported)
°
°