Как вычислить угол между двумя пересекающимися линиями, имея точки широты / долготы в Java?

У меня есть три точки широты / долготы, P1, P2 и P3. Они демонстрируют две пересекающиеся линии L1 и L2. P1 и P2 находятся в L1 и L2, соответственно. P3 - точка пересечения линий. Угол между линиями легко вычислить, имея заданную информацию в евклидовом пространстве. Однако точки представлены в формате широта / долгота. Итак, как я могу рассчитать угол между линиями с Java? Спасибо

1 ответ

Решение

Вы хотите получить угол между двумя подшипниками.

Направление на Землю может быть рассчитано по формуле с латунной страницы

Formula:    θ = 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)

JavaScript:    (all angles     in radians)

var y = Math.sin(λ2-λ1) * Math.cos(φ2);
var x = Math.cos(φ1)*Math.sin(φ2) - Math.sin(φ1)*Math.cos(φ2)*Math.cos(λ2-λ1);
var brng = Math.atan2(y, x).toDegrees();

После нахождения подшипников от P3 до P1 и от P3 до P2 (обратите внимание, что порядок значим - P3P1 и P1P3 дают разные результаты) вычислите разницу.

Другие вопросы по тегам