Страница 1 из 1
Как найти угол зная широту и долготу двух точек?
Добавлено: 23 май 2017, 10:46
sergio3101
Здравствуйте, я новичок на этом форуме по этому пишу сюда.
Очень нужна помощь в решении одной проблемы.
Есть две точки с координатами (например из гуглмапс) широта и долгота (latitude & longitude).
Если представить, что каждая точка является центром окружности, то как вычеслить угол вектора который направлен на точку В из точки А?
Попробую детальней описать проблему.
Я в программе Krpano делаю 3d-панорамы. У каждой панорамы есть гео-координаты (широта и долгота).
В панораме есть возможность создавать ссылки в виде hotspot-ов, стрелочек направленных в сторону где есть следующая панорама, на основе сферических координат (ath и atv угол по вертикали и горизонтали). Кликая на них идет загрузка другой панорамы. Так вот угол по вертикали не критичен главное узнать угол по горизонтали зная широту и долготу текущей панорамы и той куда указывает стрелка.
Re: Как найти угол зная широту и долготу двух точек?
Добавлено: 23 май 2017, 11:28
freeExec
Теорема синусов/косиносов в прямоугольном треугольнике. Не уверен, что можно работать напрямую с разницей в градусах, возможно придётся грубо привести к метрам.
Re: Как найти угол зная широту и долготу двух точек?
Добавлено: 23 май 2017, 11:47
trir
Re: Как найти угол зная широту и долготу двух точек?
Добавлено: 23 май 2017, 12:50
sergio3101
Спасибо, буду разбираться
Re: Как найти угол зная широту и долготу двух точек?
Добавлено: 23 май 2017, 13:02
Игорь Белов
Если просто и без претензий к точности, в экселе по формуле:
tg A₀₁ = (λ₁ − λ₀) / (φ₁ − φ₀) × cos φ₀
где индексы 0 и 1 соответствуют буквам на картинке A и B.
Если нужна программа, воспользуйтесь консольной утилитой PROJ.4
geod.
Если нужна подключаемая библиотека, используйте
GeographicLib.
Re: Как найти угол зная широту и долготу двух точек?
Добавлено: 23 май 2017, 13:25
sergio3101
Re: Как найти угол зная широту и долготу двух точек?
Добавлено: 23 май 2017, 14:26
Игорь Белов
Это решение на сфере, среднее по близости к истине между вычислениями на плоской Земле в экселе и на эллипсоиде в PROJ.4/GeographicLib.
Re: Как найти угол зная широту и долготу двух точек?
Добавлено: 23 май 2017, 14:39
sergio3101
Игорь Белов писал(а):Это решение на сфере, среднее по близости к истине между вычислениями на плоской Земле в экселе и на эллипсоиде в PROJ.4/GeographicLib.
Спасибо Игорь. Ваша формула в екселе вполне подходит по погрешности. Тем более что все точки будут находится в радиусе 200 км.
Re: Как найти угол зная широту и долготу двух точек?
Добавлено: 23 май 2017, 16:05
Игорь Белов
В примере я сделал грубую ошибку: поставил синус вместо косинуса.
Re: Как найти угол зная широту и долготу двух точек?
Добавлено: 23 май 2017, 16:47
sergio3101
Там выходит разница в 1 градус, примерно.
Re: Как найти угол зная широту и долготу двух точек?
Добавлено: 24 май 2017, 12:58
Игорь Белов
sergio3101 писал(а):Ваша формула в екселе вполне подходит по погрешности. Тем более что все точки будут находится в радиусе 200 км.
По моим ощущениям, в радиусе 200 км находятся «дистанции огромного размера». Мне стало интересно, какие погрешности Вам подходят. Для 24 точек на расстоянии 200 км от центральной, которая лежит на широте Санкт-Петербурга, я посчитал азимуты на плоской Земле, на сфере и на эллипсоиде, чтобы сравнить результаты.
На первом листе документа Excel вычисления на плоскости. Первые 4 колонки содержат координаты начальной и конечной точек, в пятой — вычисление по формуле, в шестой — результаты вычисления на эллипсоиде WGS 84 программой PROJ.4 geod, в последней — разность между формулой и точным значением. Как видите, максимальная погрешность составила 1,7 градуса в азимутах ±120°.
На втором листе в пятой колонке — вычисление на сфере по формуле сферической тригонометрии:
tg A = cos φ₂ sin (λ₂ − λ₁) / [cos φ₁ sin φ₂ − sin φ₁ cos φ₂ cos (λ₂ − λ₁)]
Максимальная погрешность получилась 0,05 градуса в азимутах ±135°.