I'm trying to use quaternions to do rotation animation. My algorithm creates Quaternions, and slerps every frame. Here is my code to construct a quaternion by the axis and the rotation angle.
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;
}
Then I found that when I tried to rotate 4π radians, the animation does not work because the quaternion I created is equivalent to 0 degrees. I wonder if quaternions can represent rotations over 360 degrees? Or is my animation algorithm in need of improvement?