【问题标题】:Calculate angle including reflex angles between two vectors计算两个向量之间的角度,包括反射角
【发布时间】:2011-07-17 13:33:33
【问题描述】:

我需要计算两个向量之间的角度。这些向量可能指向任何方向,并且已被归一化。我希望在某些情况下从vectorA到vectorB顺时针测量角度,在其他情况下从vectorA到vectorB逆时针测量(换句话说,我不只是想知道最小的角度)。

这就是我所拥有的

if (clockwise) angle = Math.atan2(vectorA.y, vectorA.x) - Math.atan2(vectorB.y, vectorB.x);
else angle =  -1*(Math.atan2(vectorA.y, -vectorA.x) - Math.atan2(vectorB.y, -vectorB.x));

我猜这对反射角永远不起作用?那么如何计算 0->2pi 范围内的角度呢?

【问题讨论】:

    标签: geometry


    【解决方案1】:

    按顺时针方向一致地计算它,并在需要逆时针方向时从 360(或 2*pi)中减去。

    如果您需要规范化到特定的度数范围,那么您可以通过直接规范化代码的输出来实现。所以计算顺时针角度,然后加上 2*pi 直到大于零,然后取结果 mod 2*pi,你会得到一个在 [0, 2*pi) 范围内的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-20
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多