Quaternions only have floating point versions, without any _f suffix. Other than that, most of the quaternion functions correspond with a matrix function that performs a similar operation.

Quaternion means 'of four parts', and that's exactly what it is. Here is the structure:

typedef struct QUAT { float w, x, y, z; }You will have lots of fun figuring out what these numbers actually mean, but that is beyond the scope of this documentation. Quaternions do work -- trust me.

- identity_quat - Global variable containing the identity quaternion.
- get_x_rotate_quat
- get_y_rotate_quat
- get_z_rotate_quat - Construct axis rotation quaternions.
- get_rotation_quat - Constructs a quaternion to rotate points around all three axes.
- get_vector_rotation_quat - Constructs a quaternion to rotate points around a vector.
- quat_to_matrix - Constructs a rotation matrix from a quaternion.
- matrix_to_quat - Constructs a quaternion from a rotation matrix.
- quat_mul - Multiplies two quaternions.
- apply_quat - Multiplies a point by a quaternion.
- quat_interpolate - Constructs a quaternion representing a rotation between from and to.
- quat_slerp - Version of quat_interpolate() allowing control over the rotation.