2011-03-17 193 views
1

我需要计算两个矢量之间的角度。矢量可以指向任何方向,并且已经被标准化。我想要在某些情况下从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->2π范围内的角度?

回答

0

一致地计算顺时针方向,逆时针方向从360(或2 * pi)减去。

如果您需要规范化到特定的度数范围,那么您可以通过直接标准化代码输出来实现。因此,计算顺时针角度,然后添加2 * pi直到它高于零,然后取结果mod 2 * pi,您将得到范围[0,2 * pi)的结果。