Как найти относительный угол от одного вектора координат GPS к другому? - PullRequest
0 голосов
/ 18 марта 2020

Я извлек набор из трех координат и хочу найти относительные углы между их двумя векторами.

  • P1: 57.3112, 25.24871
  • C1: 57.31105, 25.24875
  • T1: 57.31086, 25.24803

Как: V1 = C1 - P1, V2 = T1 - C1, а затем получить угол от V1 до V2.

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

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

Для этих трех точек, визуально выводящих, я ожидаю, что угол будет где-то около 120-140 градусов.

У меня ограниченные знания в области географии c вычислений, и я здесь не в курсе.

Как рассчитать угол?

1 Ответ

1 голос
/ 19 марта 2020

Используя формулы из этой страницы , рассчитайте подшипники (азимуты) от средней точки до первой и третьей.

θ = atan2( sin Δλ ⋅ cos φ2 , cos φ1 ⋅ sin φ2 − sin φ1 ⋅ cos φ2 ⋅ cos Δλ )
where   φ1,λ1 is the start point, φ2,λ2 the end point (Δλ is the difference in longitude)

Подчеркну, что для "угла поворота" «подшипники должны быть рассчитаны с точки поворота - потому что для ar c подшипники AB будут отличаться в начальной и конечной точках (за исключением определенных случаев c, таких как меридианы или параллельные дуги). На следующем рисунке направление v отличается от направления u (кратчайший путь на сфере - это так называемый "большой круг ar c")

enter image description here

Имея два подшипника, вы можете получить разницу между ними, чтобы узнать необходимый угол (не забудьте обработать переход на 360 градусов)


Существует также метод из сферической тригонометрии - теорема о сферическом косинусе (часть перестановки здесь ), но для этого требуется найти длины ar c для всех сторон треугольника (можно найти с помощью первой ссылки - но больше вычислений)

...