Страница 1 из 1

wgs посчитать угол к северному направлению

Добавлено: 19 июн 2020, 14:51
ivkomn
Привет!
Подскажите пж, как решить задачу "найти угол между вектором и северным направлением по часовой стрелке(угол 0-360)
Дано:
* точка 1 и точка 2 с координатами в wgs84

Это всё нужно, что бы найти правильное место для проекции телеметрии от ТС, которое движется за данному маршруту и присылает свои координаты+направление движения.
Заковырка в том, что маршрут может быть туда-и-обратно и простым проэцированием point на polyline нельзя оперировать.
Предполагаю следующий алгоритм:
Трэк состоит из множества отрезков.
1) беру проэкцию точки на каждый отрезок
2) отсекаю те отрезки, где перпендикуляр падает за пределы отрезка
3) для оставшихся по наименьшей длине перпендикуляра и наименьшей разнице между азимутом телеметрии и "азимутом" вектора определяю нужный

для вычислений дистанций, проекций использую https://github.com/Esri/geometry-api-java

Re: wgs посчитать угол к северному направлению

Добавлено: 19 июн 2020, 15:02
ivkomn
Так, как на скрине из соседней темы, да?

А то,что у меня для координат 54.92... и 43.3105.... -это уже вот градусы?
А кто из тетта и лябда - долгота и широта?

Re: wgs посчитать угол к северному направлению

Добавлено: 19 июн 2020, 15:55
antonv
ivkomn, лямбда - это долгота, фи - это широта.

Re: wgs посчитать угол к северному направлению

Добавлено: 22 июн 2020, 11:30
ivkomn
Да! есть такое спасибо!

Если во 2 или 4 четверти лежит точка, то значения получаются одинаковые отрицательные
Если в 1 иил 3 - значения получаются просто одинаковые.
Так понимаю, что это из-за арктангенса и в любом случае будет угол красный на картинке, а не зел1ный искомый. Но это я уже if-ами обложу, сравнивая долготу и широту, заодно отловив исключение, когда обе точки одинаковые и произойдёт деление на ноль

В очередной раз спасибо!

Re: wgs посчитать угол к северному направлению

Добавлено: 22 июн 2020, 16:32
stout
ivkomn писал(а):
22 июн 2020, 11:30
Но это я уже if-ами обложу, сравнивая долготу и широту, заодно отловив исключение, когда обе точки одинаковые и произойдёт деление на ноль
Посмотрите функцию atan2 Она есть во всех современных языках программирования.