Клуб API Карт

Конвертировать гео-координаты в сферические

money-mvs
6 июня 2016, 16:57

Здравствуйте!

Чтобы много не писать решил наглядно нарисовать суть задачи.

Если кто-то может, подскажите пожалуйста в какую сторону копать или киньте нужные формулы.

У меня есть сферическая панорама, снятая с известными гео-координатами и высотой съемки над уровнем земли (над уровнем моря также известно) на рисунке это 'cam' - camera.

Вот техническая реализация первой части задачи, если двигать точки на карте то в панораме они тоже правильно позиционируются по горизонтали - http://3d-live.com.ua/3dgallery/temp/gis/

И есть вторая точка (на рисунке "A") которая находится на расстоянии 64.3м от точки съемки если мерять по земле (координаты тоже ее знаю).

Так вот, азимут найти легко между этими двума точками ("C" и "A") - это будет поворот камеры по горизонтали в сторону точки "C". 

А вот как найти вертикальный поворот камеры (градус бета) придумать не могу.

Результат должен получится +2.822 (это методом подбора)

Помогите пожалуйста

6 комментариев
Подписаться на комментарии к посту
Здравствуйте, рекомендуем Вам для решения данной задачи использовать наш API Панорам, в котором можно задавать направление взгляда стандартными методами: https://tech.yandex.ru/maps/doc/jsapi/2.1/dg/concepts/panorama-docpage/#change-view 
kirill.s.dmitrenko
6 июня 2016, 18:25
В дополнение: API умеет правильно позиционировать объекты в панораме по геокоординатам: https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/IPanoramaMarker-docpage/#getPosition
ymapsapi, kirill.s.dmitrenko, спасибо большое за быстрые ответы и полезные ссылки! "позиционировать объекты в панораме по геокоординатам" - это как раз то что я хочу сделать, только в своей панораме. Не знал что яндекс уже реализовал такое. Вижу что можно использовать свое панорамное изображение в апи. Но мне это нужно делать на панорамном движке krpano. Буду думать далее. Еще раз спасибо!
kirill.s.dmitrenko
6 июня 2016, 19:24
money-mvs,
Арктангенс отношения расстояния к разнице высот панорамы и объекта вам нужен.
kirill.s.dmitrenko,
var x = 90 - (Math.atan(64.3 / 1.25) * 57.295)
Так? ..Это даст 1.114 градуса.
Мне кажется здесь нужно учитывать еще радиус Земли
kirill.s.dmitrenko,
Теорема косинусов мне подошла (c2 = a2 + b2 - 2ab ∙ cosγ).