Retrieving quaternion data
Since a quaternion can be created from an angle and an axis, it's reasonable to expect to be able to retrieve the same angle and axis from the quaternion. To retrieve the axis of rotation, normalize the vector part of the quaternion. The angle of rotation is double the inverse cosine of the real component.
Implement the getAngle
and getAxis
functions in quat.cpp
and add function declarations for both in quat.h
:
vec3 getAxis(const quat& quat) { return normalized(vec3(quat.x, quat.y, quat.z)); } float getAngle(const quat& quat) { return 2.0f * acosf(quat.w); }
Being able to retrieve the angle and the axis that defines a quaternion will be needed later for some quaternion operations.
Next, you're going to learn about the component-wise operations that are commonly performed on quaternions.