Pull to refresh

Звездное небо на Canvas

Website developmentJavaScriptVector graphicsCanvas
В этой статье я хочу более подробно рассказать о примере Starry Sky (Звездное Небо), реализованном с помощью скриптов dbcartajs (о них написано в предыдущей статье). Он включает в себя идеи других «звездных» проектов, которые были портированы на JavaScript. Рассмотрим их подробнее. Алгоритм формирования звездного неба был позаимствован из проекта Marble KDE (плагин stars), расчет положения планет построен на основе замечательной статьи шведского астронома Поля Шлетера, модель движения космических аппаратов SGP4/SDP4 предоставлена модулем satellite-js, формулы солнечного терминатора (ночной зоны) взяты с астрономического форума. Вид орбит как эллипсов (мгновенная орбита) подсмотрен у Сelestia.
Starry Sky

Демо Starry Sky имеет чисто технологическое назначение: вывести в заданное время точку положения космического аппарата при заданных орбитальных параметрах. В Canvas это получилось относительно просто и красиво и я решил подробнее написать об этом. Если нужно что-то поменять в выводе объектов, настройках не нужно перекомпилировать программу как Marble или Xephem (и соответственно устанавливать компилятор или среду разработки), достаточно иметь лишь браузер. В Mozilla или Chrome уже есть встроенные панели отладки, где можно посмотреть, скажем, массив точек траектории аппарата. Это гораздо удобнее чем «вытаскивать» их из C-й.

Почему демо? Потому что не учитываются размеры планет, собственное движение звезд, соответствие размера неба и размера Земли. Нужно добавлять соответствующие формулы. Зато учитывается положение звезд, планет и радиус космических аппаратов относительно Земли. Также вид Земли меняется вместе с изменением высоты над поверхностью (благодаря проекции nsper).

Управление


Вращение Земли происходит по клику в любой точке глобуса. В демо предусмотрен авторежим с ускорением времени (1 сек~15 минут, кнопка play рядом с датой). Анимацию с суточным периодом можно посмотреть здесь.
Tags:html5canvasproj4jsjavascriptdbcartajsstarry skyзвездное небопланетарий
Hubs: Website development JavaScript Vector graphics Canvas
Total votes 9: ↑7 and ↓2+5
Views9.6K
Comments Comments 3

Popular right now