Pull to refresh

SunCalc — солнечный калькулятор

Reading time 3 min
Views 219K
Хочу поделиться с вами небольшим, но полезным проектиком, разработанным мной на досуге — солнечным калькулятором SunCalc.



SunCalc показывает на карте для выбранного места и даты траекторию движения солнца и фазы освещённости в течении суток (и еще пару приятных мелочей).

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

Возможности


  • рисует на карте красивый векторный график с положением солнца на рассвете, закате и в выбранное время (жёлтая, оранжевая и красная линия), проекцией траектории солнца (оранжевая дуга) и ее разбросом в течении года (жёлтая область вокруг нее); чем ближе точка на графике к центру круга, тем выше в этот момент солнце над горизонтом
  • по наведении мышкой на линию заката/рассвета показывает соответствующий разброс положений
  • показывает освещённость (темнота, сумерки, дневной свет) цветом на слайдере времени
  • можно посмотреть время не только рассвета и заката, но и 3-х типов сумерек (гражданские, навигационные, астрономические) и полной темноты
  • показывает ссылку на недельный прогноз погоды (облачность, осадки, туман) в выбранном месте
  • умеет определять местоположение (кликните по соответствующему полю -> Detect my location)
  • местоположение также можно выбирать поиском, автоопределением, кликом по карте или перетаскиванием маркера
  • работают пермалинки на конкретное место/время и back/forward в браузере


Для чего эго можно использовать


Во-первых, в чисто бытовых ситуациях. До скольки мне нужно выехать из леса, пока еще хоть что-то видно, если я до сих пор не купил на велик фару? До скольки я смогу вечером загорать перед тем, как пляж накроет тень от скалы справа? В какое время уже не будет слепить прямо в глаза солнце, когда выйду поиграть в футбол на площадку под домом? Какая у квартиры, которую я собираюсь снять, освещённость в течении года? Уже самому не раз пригодилось в подобного рода вопросах.

Во-вторых, любителям фотографии! Включая меня. Часто бывает важно знать, например, когда и сколько длятся сумерки (для ночных пейзажей), в какую сторону садится или откуда восходит солнце (чтобы выбрать удачный ракурс), какое время выбрать для фотосессии какого-то объекта так, чтобы не пришлось фотографировать против солнца или он не попал полностью в тень соседнего здания, и т.д.

В-третьих, для общего образования и удовлетворения природной любознательности. Почему в Австралии зимой жарче, чем летом? Что на самом деле такое белые ночи и в каких городах и когда они наблюдаются? Что насчёт полярного дня и ночи? Как меняется траектория солнца от севера к югу? Сколько минут идёт рассвет от Москвы до Киева? И т.д.

Немного деталей реализации


  • весь код приложения выполняется на стороне браузера
  • для карты и поиска используется Google Maps API v3
  • для векторной графики на карте — библиотека Raphaёl
  • для определения местоположения — W3C Geolocation API, Google Gears или Google IP Geolocation
  • используется jQuery и несколько компонентов jQuery UI (Slider для времени, Datepicker для даты и Dialog для окошка приветствия)
  • для deep linking и ajax history используется плагин jQuery Address
  • между сессиями состояние сохраняется в печеньках
  • для прогноза погоды на удивление самым подходящим оказался Wolfram Alpha
  • для идей по улучшению заведена страничка на сервисе UserIdea/Reformal (который уже освещался его авторами на Хабре)


Что планируется в будущем


  • сделать мобильную версию для браузеров iPhone и Android
  • добавить опцию отображения времени в локальном часовом поясе
  • добавить слайдер для дней года, аналогичный слайдеру времени
  • подчистить и выложить на гитхабе вычислительную часть кода
  • написать для Хабра хорошую статью о нюансах разработки подобного приложения


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

update: извините за проблемы с хостингом, проект временно переехал на другой сервер — теперь вроде всё хорошо.
Tags:
Hubs:
+97
Comments 81
Comments Comments 81

Articles