Quaternion Visualizer

Built from scratch | Personal custom C++ engine

I developed a quaternion visualizer to help me understand quaternion algebra. Since it's really hard to visualize a 4D vector, I resorted to debugging by drawing quaternions as an axis-angle representation.

I compared the interpolation between two orientations when the orientation is represented as a quaternion, a rotation matrix, and an Euler angle.

Axis Angle Representation

Using the axis-angle representation of the quaternion allowed me to convert a quaternion to axis-angle form and vice versa. This helped me debug the quaternion-related bugs I encountered.

Comparison of SLERP & NLERP

Green cow: SLERP interpolation
Red cow: NLERP interpolation

Spherical Linear Interpolation (SLERP)

Normalized Linear Interpolation (NLERP)

In my skeletal animation system, I wanted to understand why normalized LERP works the way it does and compare it with spherical LERP between quaternions.

The comparison showed me that, in most cases, NLERP provides results of acceptable quality and can be used instead of the more expensive SLERP.