gpt4 book ai didi

java - 计算地理点之间角度的正确方法

转载 作者:行者123 更新时间:2023-11-30 05:58:19 25 4
gpt4 key购买 nike

我在计算通过连接三个地理点创建的线之间的角度时遇到问题。

p1
\ p2
\ /
p3

我实现了许多解决方案,但没有给我预期的结果。例如我使用余弦定律 Direct way of computing clockwise angle between 2 vectors 。我还使用了方程

angle = atan2(vector2.y, vector2.x) - atan2(vector1.y, vector1.x).

每种方法都返回相同的错误结果。

例如我有三点:

p3 纬度=52.66346360584388, 19.056108732273625

p1 纬度=52.66321959338828, 19.056379848488714

p2 纬度=52.66348185383115, 19.05648061759354

余弦定律和atan2返回角度44.797度。当我在谷歌地图中标记这些点并在 gimp 程序中测量角度时,我得到的角度约为 57 度。在其他点组中,差异相同或更大。我做错了什么?

gimp angle

最佳答案

对于球面几何,您需要使用特殊公式from here

查看轴承部分,计算从 p3 到 p2 以及从 p3 到 p1 的轴承并找出它们的差异

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();

关于java - 计算地理点之间角度的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52762619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com