quaternion.c file
Functions
- auto quat_identity(void) -> quaternion
- Constructs the identity quaternion.
- auto quat_mul(const quaternion a, const quaternion b) -> quaternion
- Multiplies two quaternions (a * b).
- auto quat_normalize(const quaternion q) -> quaternion
- Normalizes a quaternion.
- auto quat_from_euler(const vector3 euler) -> quaternion
- Constructs a quaternion from Euler angles.
- auto quat_from_euler_deg(const vector3 euler_deg) -> quaternion
- Constructs a quaternion from Euler angles in degrees.
- auto quat_to_mat4(const quaternion q) -> matrix4
- Converts a quaternion to a 4x4 rotation matrix.
- auto quat_conjugate(const quaternion q) -> quaternion
- Returns the conjugate of a quaternion.
- auto quat_inverse(const quaternion q) -> quaternion
- Returns the inverse of a quaternion.
-
auto quat_from_axis_angle(const vector3 axis,
const vm_
float_ t radians) -> quaternion - Constructs a quaternion from a rotation axis and angle.
-
auto quat_from_axis_angle_deg(const vector3 axis,
const vm_
float_ t degrees) -> quaternion - Constructs a quaternion from an axis and an angle in degrees.
- auto quat_from_mat3(const matrix3 m) -> quaternion
- Builds a quaternion from a 3x3 rotation matrix.
- auto quat_from_mat4(const matrix4 m) -> quaternion
- Builds a quaternion from the rotation of a 4x4 matrix.
-
auto quat_slerp(const quaternion a,
const quaternion b,
const vm_
float_ t t) -> quaternion - Spherical-linearly interpolates from a to b by t.
-
auto quat_nlerp(const quaternion a,
const quaternion b,
const vm_
float_ t t) -> quaternion - Normalized-linearly interpolates from a to b by t.
- auto quat_rotate_vec3(const quaternion q, const vector3 v) -> vector3
- Rotates a vector3 by a quaternion.
- auto quat_to_euler(const quaternion q) -> vector3
- Converts a quaternion to Euler angles in degrees (XYZ).
- auto quat_to_euler_deg(const quaternion q) -> vector3
- Converts a quaternion to Euler angles in degrees.
-
auto quat_to_axis_angle(const quaternion q,
vm_
float_ t* radians) -> vector3 - Converts a quaternion to axis-angle representation.
-
auto quat_to_axis_angle_deg(const quaternion q,
vm_
float_ t* degrees) -> vector3 - Converts a quaternion to axis-angle representation in degrees.
- auto quat_to_mat3(const quaternion q) -> matrix3
- Converts a quaternion to a 3x3 rotation matrix.
-
auto quat_dot(const quaternion a,
const quaternion b) -> vm_
float_ t - Returns the dot product of two quaternions.
-
auto quat_near(const quaternion a,
const quaternion b,
const vm_
float_ t eps) -> bool - Returns true if a and b are within eps of each other.
-
auto quat_integrate(const quaternion q,
const vector3 omega,
const vm_
float_ t dt) -> quaternion - Integrates a quaternion using angular velocity.
- auto quat_look(const vector3 direction, const vector3 up) -> quaternion
- Constructs a quaternion that rotates from the negative Z axis towards the given direction, with the specified up vector.
-
auto quat_look_clip(const vector3 direction,
const vector3 up,
const vm_
clip_ t clip) -> quaternion - Constructs a quaternion representing a look-at rotation with specified clip space.
- auto quat_from_to(const vector3 from, const vector3 to) -> quaternion
- Constructs a quaternion representing the shortest rotation from one vector to another.
Function documentation
quaternion quat_mul(const quaternion a, const quaternion b)
Multiplies two quaternions (a * b).
| Parameters | |
|---|---|
| a | The first quaternion. |
| b | The second quaternion. |
| Returns | The resulting product quaternion. |
quaternion quat_normalize(const quaternion q)
Normalizes a quaternion.
| Parameters | |
|---|---|
| q | The input quaternion. |
| Returns | The normalized quaternion. |
quaternion quat_from_euler(const vector3 euler)
Constructs a quaternion from Euler angles.
| Parameters | |
|---|---|
| euler | Euler angles in radians. |
| Returns | The resulting quaternion. |
quaternion quat_from_euler_deg(const vector3 euler_deg)
Constructs a quaternion from Euler angles in degrees.
| Parameters | |
|---|---|
| euler_deg | Euler angles in degrees. |
| Returns | The resulting quaternion. |
matrix4 quat_to_mat4(const quaternion q)
Converts a quaternion to a 4x4 rotation matrix.
| Parameters | |
|---|---|
| q | The input quaternion. |
| Returns | The equivalent matrix4. |
quaternion quat_conjugate(const quaternion q)
Returns the conjugate of a quaternion.
| Parameters | |
|---|---|
| q | Input quaternion. |
| Returns | The resulting quaternion. |
quaternion quat_inverse(const quaternion q)
Returns the inverse of a quaternion.
| Parameters | |
|---|---|
| q | Input quaternion. |
| Returns | The resulting quaternion. |
quaternion quat_from_axis_angle(const vector3 axis,
const vm_ float_ t radians)
Constructs a quaternion from a rotation axis and angle.
| Parameters | |
|---|---|
| axis | The rotation axis. Must be normalized. |
| radians | The rotation angle in radians. |
| Returns | The resulting rotation quaternion. |
quaternion quat_from_axis_angle_deg(const vector3 axis,
const vm_ float_ t degrees)
Constructs a quaternion from an axis and an angle in degrees.
| Parameters | |
|---|---|
| axis | The rotation axis. |
| degrees | The rotation angle in degrees. |
| Returns | The resulting quaternion. |
quaternion quat_from_mat3(const matrix3 m)
Builds a quaternion from a 3x3 rotation matrix.
| Parameters | |
|---|---|
| m | Input matrix. |
| Returns | The resulting quaternion. |
quaternion quat_from_mat4(const matrix4 m)
Builds a quaternion from the rotation of a 4x4 matrix.
| Parameters | |
|---|---|
| m | Input matrix. |
| Returns | The resulting quaternion. |
quaternion quat_slerp(const quaternion a,
const quaternion b,
const vm_ float_ t t)
Spherical-linearly interpolates from a to b by t.
| Parameters | |
|---|---|
| a | First input quaternion. |
| b | Second input quaternion. |
| t | Interpolation factor. |
| Returns | The resulting quaternion. |
quaternion quat_nlerp(const quaternion a,
const quaternion b,
const vm_ float_ t t)
Normalized-linearly interpolates from a to b by t.
| Parameters | |
|---|---|
| a | First input quaternion. |
| b | Second input quaternion. |
| t | Interpolation factor. |
| Returns | The resulting quaternion. |
vector3 quat_rotate_vec3(const quaternion q, const vector3 v)
Rotates a vector3 by a quaternion.
| Parameters | |
|---|---|
| q | Input quaternion. |
| v | Input vector. |
| Returns | The resulting vector3. |
vector3 quat_to_euler(const quaternion q)
Converts a quaternion to Euler angles in degrees (XYZ).
| Parameters | |
|---|---|
| q | Input quaternion. |
| Returns | The resulting vector3. |
vector3 quat_to_euler_deg(const quaternion q)
Converts a quaternion to Euler angles in degrees.
| Parameters | |
|---|---|
| q | The quaternion to convert. |
| Returns | The Euler angles in degrees as a vector3. |
vector3 quat_to_axis_angle(const quaternion q,
vm_ float_ t* radians)
Converts a quaternion to axis-angle representation.
| Parameters | |
|---|---|
| q | The input quaternion. |
| radians | Pointer to a float that receives the rotation angle in radians. |
| Returns | The rotation axis vector. |
vector3 quat_to_axis_angle_deg(const quaternion q,
vm_ float_ t* degrees)
Converts a quaternion to axis-angle representation in degrees.
| Parameters | |
|---|---|
| q | Input quaternion. |
| degrees | Pointer to a float that receives the rotation angle in degrees. |
| Returns | The rotation axis vector. |
matrix3 quat_to_mat3(const quaternion q)
Converts a quaternion to a 3x3 rotation matrix.
| Parameters | |
|---|---|
| q | Input quaternion. |
| Returns | The resulting matrix3. |
vm_ float_ t quat_dot(const quaternion a,
const quaternion b)
Returns the dot product of two quaternions.
| Parameters | |
|---|---|
| a | First input quaternion. |
| b | Second input quaternion. |
| Returns | The resulting vm_ |
bool quat_near(const quaternion a,
const quaternion b,
const vm_ float_ t eps)
Returns true if a and b are within eps of each other.
| Parameters | |
|---|---|
| a | First input quaternion. |
| b | Second input quaternion. |
| eps | Distance tolerance. |
| Returns | True if a and b are within eps. |
quaternion quat_integrate(const quaternion q,
const vector3 omega,
const vm_ float_ t dt)
Integrates a quaternion using angular velocity.
| Parameters | |
|---|---|
| q | The starting quaternion. |
| omega | Angular velocity vector. |
| dt | Time delta. |
| Returns | The integrated quaternion. |
quaternion quat_look(const vector3 direction, const vector3 up)
Constructs a quaternion that rotates from the negative Z axis towards the given direction, with the specified up vector.
| Parameters | |
|---|---|
| direction | The target direction vector to look towards. |
| up | The up vector. |
| Returns | The look rotation quaternion. |
quaternion quat_look_clip(const vector3 direction,
const vector3 up,
const vm_ clip_ t clip)
Constructs a quaternion representing a look-at rotation with specified clip space.
| Parameters | |
|---|---|
| direction | The forward direction vector. |
| up | The up direction vector. |
| clip | The clip space convention. |
| Returns | The look-at quaternion. |
quaternion quat_from_to(const vector3 from, const vector3 to)
Constructs a quaternion representing the shortest rotation from one vector to another.
| Parameters | |
|---|---|
| from | The source direction vector. |
| to | The target direction vector. |
| Returns | Quaternion that rotates from into to. |