如何找到从一个 gps 坐标向量到另一个的相对角度?

How to find relative angle from one gps coordinate vector to other?

我已经提取了一组三个坐标,我想找到它们两个向量之间的相对角度。

喜欢:V1 = C1 - P1V2 = T1 - C1 然后得到从 V1V2 的角度。

但是笛卡尔函数恐怕不能在这里切,因为在实际应用中,坐标可能跨越不同的经纬度。

我搜索过google但是我看到的功能不能说服我。我也在我的应用程序中尝试了一些,但是 returned 角度没有 return 预期的结果。

这三点,目测,我估计角度在120-140度左右。

我在地理计算方面的知识有限,我在这里没有线索。

如何计算角度?

使用 this page 中的公式,计算从中点到第一个和第三个的方位角(方位角)。

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

我强调,对于 "angle to turn" 方位角应该从转折点开始计算 - 因为对于圆弧 A-B 方位角的起点和终点会有所不同(子午线或平行弧等特定情况除外)。下图方向v不同于方向u(球面最短路径即所谓"big circle arc")

有两个轴承,你可以得到它们的差异来知道需要的角度(不要忘记处理超过 360 度的过渡)


还有球面三角学的方法——球面余弦定理(重排部分here),但需要求所有三角形边的弧长(可能用第一个link-但更多的计算)