如果我确定向量的x和z值是相同的,因此我只关心测量y平面差异中的“垂直”角度,那么相比计算点积有更有效的方法吗?
使用点积方法的我的当前代码如下:
使用点积方法的我的当前代码如下:
float a_mag = a.magnitude();
float b_mag = b.magnitude();
float ab_dot = a.dot(b);
float c = ab_dot / (a_mag * b_mag);
// clamp d to from going beyond +/- 1 as acos(+1/-1) results in infinity
if (c > 1.0f) {
c = 1.0;
} else if (c < -1.0) {
c = -1.0;
}
return acos(c);
我希望能够摆脱这些平方根。
acos(1) == 0
和acos(-1) == PI
,它们都不是无穷大。函数acos
在区间[-1, 1]
内被定义,超出此区间,acos
是未定义的。 - Sufian Latif