我需要计算两个向量之间的角度。矢量可以指向任何方向,并且已经标准化。我想在某些情况下从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范围内的角度?
答案 0 :(得分:0)
顺时针方向计算一致,逆时针需要减去360(或2 * pi)。
如果需要规范化到特定的学位范围,则可以通过直接规范化代码的输出来实现。因此计算顺时针角度,然后加2 * pi直到它高于零,然后取结果mod 2 * pi,你将得到[0,2 * pi]范围内的结果。