【问题标题】: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

标签: r bearing geosphere


【解决方案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) 来理解计算
猜你喜欢
  • 2013-04-17
  • 1970-01-01
  • 1970-01-01
  • 2010-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多