我正在尝试使用四元数进行旋转动画。 我的算法创建四元数,并在每一帧进行球面线性插值(slerp)。 以下是我用轴和旋转角度构建四元数的代码。
template <typename U>
Quaternion(Vector3<U> vec, const float& angle)
{
vec.normalize();
float cosa = cos(angle/2);
float sina = sin(angle/2);
w = cosa;
x = sina * vec.x;
y = sina * vec.y;
z = sina * vec.z;
}
后来我发现当我尝试旋转4π弧度时,动画无法正常工作,因为我创建的四元数相当于0度。 我想知道四元数是否可以表示超过360度的旋转?或者我的动画算法需要改进吗?
sin
和cos
使用弧度而非角度。 - Blaze