如何通过在Java中具有纬度/经度点来计算两条相交线之间的角度?

时间:2018-09-20 01:43:29

标签: java math latitude-longitude angle

我有三个纬度/经度点P1,P2和P3。他们展示了两条相交的线L1和L2。 P1和P2分别位于L1和L2。 P3是直线的交点。 通过在欧几里得空间中获得给定信息,可以很容易地计算线之间的角度。但是,点采用纬度/经度格式。 那么,如何使用Java计算线之间的角度? 谢谢

1 个答案:

答案 0 :(得分:2)

您想获得两个轴承之间的角度。

可以使用latlong page

中的公式来计算地球上的轴承
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给出不同的结果)后,计算出差异。