两个轴承之间的差异(角度)

Posted

技术标签:

【中文标题】两个轴承之间的差异(角度)【英文标题】:Difference (angle) between two bearings 【发布时间】:2018-11-10 09:47:38 【问题描述】:

使用geosphere::bearing我可以计算两条线的方位角,但是可以计算出两条方位角之间的角度吗?

当然,您可以尝试减去或总结方位,但在一个为负而另一个为正的特定情况下,这不起作用。

例如,如果 ber1 = - 175 和 ber2 = 175,则两者之间的角度应为 10。

有什么建议吗?

【问题讨论】:

取角度之间的绝对差(模 360),如果大于 180,则从 360 中减去。 abs(ber1) - abs(ber2) = 0 -> 从 360 中减去 0 等于 360,我要说明的一点是,通过实施许多条件可能会得到正确的答案,但也许有一个已经实现了所有这些规则的函数 如果大于180。应该是abs(ber1 - ber2)。如果您只是在寻找现有功能,那么 Google 就是您的朋友。 对于C#C 解决方案,请参阅Turn Direction for Target Heading。 【参考方案1】:

我不确定现成的包,但如果您对解决方案感兴趣,那么您可以尝试

angle_diff <- function(theta1, theta2)
  theta <- abs(theta1 - theta2) %% 360 
  return(ifelse(theta > 180, 360 - theta, theta))
  

它给出了示例轴承 -175 和 175 之间的角度

angle_diff(-175, 175)
#[1] 10

【讨论】:

180 - abs(180 - abs(theta1 - theta2) %% 360) 也可以 请问您为什么使用%% 运算符? @adl 没有它的结果例如(-175, 175) 将是负数 @adl %% (modulo) 用于计算余数,以便将 theta 降低到小于 360。您可以考虑一个示例 angle_diff(450, 45) 来理解计算

以上是关于两个轴承之间的差异(角度)的主要内容,如果未能解决你的问题,请参考以下文章

找到两个轴承之间的角度

如何找到两个角度之间的差异?

ActionScript 3 两个角度之间的差异

两个角度之间的差异

如何计算两个轴承之间的最小旋转

有效地计算两个向量之间的差异