Как вычислить угол между двумя пересекающимися линиями, имея точки широты / долготы в 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 дают разные результаты) вычислите разницу.