`Gg.Quat`

Quaternions.

`type t = quat`

The type for quaternions.

`val v : float -> float -> float -> float -> quat`

`v x y z w`

is the quaternion `x`

i+ `y`

j + `z`

k + `w`

.

`val zero : quat`

`zero`

is the zero quaternion.

`val id : quat`

`id`

is the identity quaternion `1`

.

`conj q`

is the quaternion conjugate `q*`

.

`slerp q r t`

is the spherical linear interpolation between `q`

and `r`

at `t`

. Non commutative, torque minimal and constant velocity.

`squad q cq cr r t`

is the spherical cubic interpolation between `q`

and `r`

at `t`

. `cq`

and `cr`

indicate the tangent orientations at `q`

and `r`

.

`nlerp q r t`

is the normalized linear interpolation between `q`

and `r`

at `t`

. Commutative, torque minimal and inconstant velocity.

`of_m4 m`

is the unit quaternion for the rotation in the 3x3 top left matrix in `m`

.

Unit quaternion for the rotation, see `M3.rot3_map`

.

Unit quaternion for the rotation, see `M3.rot3_axis`

.

Unit quaternion for the rotation, see `M3.rot3_zyx`

.

`to_rot3_axis q`

is the rotation axis and angle in radians of the *unit* quaternion `q`

.

`to_rot_zyx q`

is the x, y, z axis angles in radians of the *unit* quaternion `q`

.

`apply3 q v`

applies the 3D rotation of the *unit* quaternion `q`

to the vector (or point) `v`

.