module Quat: sig
.. end
type
t = Gg.quat
The type for quaternions.
Constructors, accessors and constants
val v : float -> float -> float -> float -> Gg.quat
v x y z w
is the quaternion x
i+ y
j + z
k + w
.
val zero : Gg.quat
zero
is the zero quaternion.
val id : Gg.quat
id
is the identity quaternion 1
.
Functions
val mul : Gg.quat -> Gg.quat -> Gg.quat
mul q r
is the quaternion multiplication q * r
.
val conj : Gg.quat -> Gg.quat
val unit : Gg.quat -> Gg.quat
unit q
is the unit vector
q/|q|
(same as
Gg.V4.unit
).
val inv : Gg.quat -> Gg.quat
inv q
is the quaternion inverse q
-1.
val slerp : Gg.quat -> Gg.quat -> float -> Gg.quat
slerp q r t
is the spherical linear interpolation between q
and r
at t
. Non commutative, torque minimal and constant
velocity.
val squad : Gg.quat -> Gg.quat -> Gg.quat -> Gg.quat -> float -> Gg.quat
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
.
val nlerp : Gg.quat -> Gg.quat -> float -> Gg.quat
nlerp q r t
is the normalized linear interpolation between q
and r
at t
. Commutative, torque minimal and inconstant
velocity.
val of_m3 : Gg.m3 -> Gg.quat
of_m3 m
is the unit quaternion for the rotation in m
.
val of_m4 : Gg.m4 -> Gg.quat
of_m4 m
is the unit quaternion for the rotation in the 3x3
top left matrix in m
.
val rot_map : Gg.v3 -> Gg.v3 -> Gg.quat
val rot_axis : Gg.v3 -> float -> Gg.quat
val rot_zyx : Gg.v3 -> Gg.quat
val to_rot_axis : Gg.quat -> Gg.v3 * float
to_rot_axis q
is the rotation axis and angle of the unit
quaternion q
.
val to_rot_zyx : Gg.quat -> Gg.v3
to_rot_zyx q
is the x, y, z axis angles of the unit
quaternion q
.
val apply3 : Gg.quat -> Gg.v3 -> Gg.v3
apply3 q v
applies the 3D rotation of the unit quaternion
q
to the vector (or point) v
.
val apply4 : Gg.quat -> Gg.v4 -> Gg.v4
apply4 q v
apply the 3D rotation of the unit quaternion
q
to the homogenous vector (or point) v
.