Персональный блог. Темы: физика, ход солнца, солнечные часы

 
 
 Категории
   
 
 
 Популярные
   
 
 
 
 
  Солнце на Google Street View
Категория: Солнце | Автор: daybit | (2017-03-11 21:42)
 
Обновлено:

============================
Сервис сломан :-/

10 июля 2019 года. За последний месяц мой сервис накрылся медным тазом. По итогу общения с техподдержкой Гугла выяснилось, что сторонняя библиотека, которую я использовал для подкачки панорам из Google Street View, написана криво и использует неверные обращения к API, и после очередных обновлений гугла закономерно сломалась. К сожалению, я пока не уверен, что буду искать другую библиотеку или погружаться в премудрости API гугла, чтобы самостоятельно починить сервис. Соответственно на текущий момент есть следующий выбор:

* посмотреть видеоматериал по сервису: Движение солнца на панорамах Гугл-карт (30 дек 2018)

* покрутить аналеммы без Гугл-стрит-вью: Повращай солнце! (8 ноя 2015)

Ниже оставляю старый текст, утративший актуальность.
============================

Насчёт изменения политики Гугла:
Раскрыть
2018-05-03 -> Пришло письмо от гугла, дескать, привяжите платёжный эккаунт с картой, и не волнуйтесь, у вас будет бесплатный 200-долларовый лимит в месяц. Начал я делать этот платёжный эккаунт, и там какие-то странности (не "Личный", а "Бизнес", ничего не понял, закрыл). Пока отложил, и значит после 11 июня 2018 года сервис может завалиться. Подождём, посмотрим. Если завалится, и люди будут просить восстановить, тогда вернёмся к вопросу. Связь со мной: либо внизу (вк комментарии), либо здесь ещё пара способов.
2018-08-17 -> Замечены приколы - мелкая карта грузится с надписью "При загрузке Google Карт на этой странице возникла проблема.", но если нажать ОК, то мы получаем затемнённую карту, и остальной функционал никак не страдает: местность ищется как и прежде, сферические панорамы подгружаются. Если это все проблемы, то и бог с ним, пусть так.

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

Сначала дам ссылку на сервис и опишу управляющие клавиши (в основном это клавиши со стрелками), а затем расскажу некоторые детали.

daybit.ru/sun

* стрелка Вправо - увеличивает время на 1 час (с Shift - поминутно), стрелка Влево - уменьшает;
* стрелка Вверх переходит на 22 число следующего месяца, с Shift - перемещает в среднем по неделе, точнее по 1, 8, 15, 22 числам месяцев; стрелка Вниз - то же самое в обратную сторону;
* A - вкл/выкл азимутальной сетки координат;
* I - вкл/выкл пояса аналемм;
* U - увеличение часового пояса (с Shift - уменьшение); при этом отдельно выделяется не только гринвичская полуденная аналемма, но и локальная 12 часовая для выбранного часового пояса;
* = - вкл/выкл правого окошка с картой гугл.

Стартовая точка - около башни Останкино.

https//daybit.ru/img3/170311_solnce_streetview_01_.jpg

Интересующий пункт выбирайте либо кликом по карте (туда устанавливается маркер), либо поиском (вбиваете координаты в формате "широта, долгота" или название). Соответствие панорамы маркеру текущей позиции не гарантировано, поскольку покрытие мира панорамами не полное. Более того, это один из существенных недостатков для наших ближайших соседей: Казахстана и Белоруссии. Там Street View отсутствует:

https//daybit.ru/img3/170311_solnce_streetview_02_.jpg

Координаты (географические, а также - азимутальные для положения солнца), дата и время виртуального солнца представлены в текстовом блоке слева сверху.

***********************

Теперь чуть подробнее о предыстории.

В январе я нашёл прожку StreetView Grabber, с помощью которой оказалось легко тащить сферические панорамы с гугло-карт, причем эти панорамы были сразу в эквидистантном формате. Оставалось лишь совместить их с моим скриптом по азимуту - и готово. Свои изыскания я закинул в несколько мест, например на пикабу, и народ вроде даже оценил.

Потом в конце января я закинул в яндекс предложение об отображении хода солнца на яндекс-картах (уличные панорамы), дав ссылку на уже сделанную единичную панораму, они ответили через несколько дней: "Спасибо за действительно очень интересное предложение, но пока, к сожалению, мы не имеем возможности для создания такого функционала на карте." И предложили свой АПИ для самостоятельной разработки. Я бы может и воспользовался, но по прошествии времени мне вдруг пришло в голову, что наверняка кто-то уже постарался и совместил движок threejs (на котором у меня закручена солнечная механика) с гугл-панорамами. Так и вышло - с ходу попались две разработки, я их покрутил-повертел, и в результате остановился на этой - GSVPano.js. Состыковать в лоб не вышло, поэтому к гугло-панорамному движку стал постепенно прикручивать солнце, стороны света и прочее, перетаскивая из своего старого скрипта и удаляя ненужный функционал - например возможность менять клавишами широту и долготу (ведь теперь есть жесткая привязка к координатам).

Если с азимутом (heading) я разобрался довольно быстро, то на двух других углах, tilt и roll, я подвис на отличненько. Tilt - это угол наклона вниз и вверх по ходу движения гугломобиля, то есть с горки или в горку. Roll - противоположный наклон, вокруг оси, продольной движению гугломобиля. Там значения достигали всего лишь нескольких градусов, в принципе можно было проигнорировать, но во-первых было жалко вот так выкидывать небесполезную информацию, во-вторых на самом сайте гугло-карт эти же панорамы демонстрировали отличную параллельность уровня горизонта верхнему и нижнему краям монитора, а в моем движке горизонт был местами, что называется, неприлично завален.

Начал разбираться. Выяснилось, что последовательное применение вращения вокруг трех осей - это кошмар какой-то. ) Если двумя, roll и tilt, поскольку они малы, довольно быстро удалось совместить горизонт с моим горизонтом, то применение третьего вращения (heading - азимут) превращало горизонт в какую-то фигню. Причём мне было непонятно, как это вообще возможно, ведь если я вращаю панораму вокруг вертикальной оси, то уже совмещенный горизонт не должен уплывать. Наконец прикрутил к управляющим клавишам все эти вращения, и натурально обалдел. Там не просто странные вращения получались, а вообще какие-то хитрые восьмерки, вплоть до отсутствия всякого вращения.

Как потом выяснил, это отсутствие вращения вокруг одной из осей называется Gimble lock - вот занятный видос на эту тему. Также понял, что надо использовать неведомые мне катернионы, посмотрел как это мне делать в threejs, нашел реализацию, из которой и вытащил нужный мне код.

В общем, я лишь пощупал тему катернионов, и, честно признаться, не особенно-то её понял. В частности, эти катернионы мне конечно помогли, но продолжили странное поведение, однако мне удалось в первом приближении решить проблему "катернионским" поворотом вокруг смещённой (предыдущими двумя поворотами тилт и ролл) вертикальной оси, чем я и удовольствовался.

Все свои изыскания по нахождению горизонта я проводил на виртуальном берегу Черного моря, "катаясь" по дороге вдоль Большого Сочи. Там на панорамах часто попадается морской горизонт (что удобно для сверки с моим горизонтом), а также тилты и роллы довольно заметны, поскольку дорога петляет вдоль холмов.

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

__________________

2018-12-31
Сделал видео по сервису: https://www.youtube.com/watch?v=WUY8Hgoh004


 




----
 
Архив сайта
   
 
 
© 2012-... daybit
Движок: NG CMS
SQL запросов: 6 | Генерация страницы: 0.05 сек 
Яндекс.Метрика