Vecmat 0.2.3
C math and linear algebra library for 2D/3D graphics, physics, and science.
Loading...
Searching...
No Matches
quaternion.c File Reference
#include <vecmat.h>

Go to the source code of this file.

Functions

quaternion quat_identity (void)
 Constructs the identity quaternion.
quaternion quat_mul (const quaternion a, const quaternion b)
 Multiplies two quaternions (a * b).
quaternion quat_normalize (const quaternion q)
 Normalizes a quaternion.
quaternion quat_from_euler (const vector3 euler)
 Constructs a quaternion from Euler angles (in radians, XYZ order).
matrix4 quat_to_mat4 (const quaternion q)
 Converts a quaternion to a 4x4 rotation matrix.
quaternion quat_conjugate (const quaternion q)
 Returns the conjugate of a quaternion.
quaternion quat_inverse (const quaternion q)
 Returns the inverse of a quaternion.
quaternion quat_from_axis_angle (const vector3 axis, const vm_float_t degrees)
 Builds a quaternion from an axis and an angle in degrees.
quaternion quat_from_mat3 (const matrix3 m)
 Builds a quaternion from a 3x3 rotation matrix.
quaternion quat_from_mat4 (const matrix4 m)
 Builds a quaternion from the rotation of a 4x4 matrix.
quaternion quat_slerp (const quaternion a, const quaternion b, const vm_float_t t)
 Spherical-linearly interpolates from a to b by t.
quaternion quat_nlerp (const quaternion a, const quaternion b, const vm_float_t t)
 Normalized-linearly interpolates from a to b by t.
vector3 quat_rotate_vec3 (const quaternion q, const vector3 v)
 Rotates a vector3 by a quaternion.
vector3 quat_to_euler (const quaternion q)
 Converts a quaternion to Euler angles in degrees (XYZ).
vector3 quat_to_axis_angle (const quaternion q, vm_float_t *degrees)
 Converts a quaternion to an axis and an angle in degrees.
matrix3 quat_to_mat3 (const quaternion q)
 Converts a quaternion to a 3x3 rotation matrix.
vm_float_t quat_dot (const quaternion a, const quaternion b)
 Returns the dot product of two quaternions.
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.

Function Documentation

◆ quat_conjugate()

quaternion quat_conjugate ( const quaternion q)

Returns the conjugate of a quaternion.

See quat_conjugate_ptr instead.

Parameters
qInput quaternion.
Returns
The resulting quaternion.

Definition at line 90 of file quaternion.c.

References quat_conjugate_ptr().

◆ quat_dot()

vm_float_t quat_dot ( const quaternion a,
const quaternion b )

Returns the dot product of two quaternions.

Parameters
aFirst input quaternion.
bSecond input quaternion.
Returns
The resulting vm_float_t.

Definition at line 261 of file quaternion.c.

References quaternion::w, quaternion::x, quaternion::y, and quaternion::z.

Referenced by quat_nlerp_ptr(), and quat_slerp_ptr().

◆ quat_from_axis_angle()

quaternion quat_from_axis_angle ( const vector3 axis,
const vm_float_t degrees )

Builds a quaternion from an axis and an angle in degrees.

See quat_from_axis_angle_ptr instead.

Parameters
axisRotation axis.
degreesRotation angle in degrees.
Returns
The resulting quaternion.

Definition at line 121 of file quaternion.c.

References quat_from_axis_angle_ptr().

◆ quat_from_euler()

quaternion quat_from_euler ( const vector3 euler)

Constructs a quaternion from Euler angles (in radians, XYZ order).

See quat_from_euler_ptr instead.

Parameters
eulerThe Euler angles vector (x=pitch, y=yaw, z=roll).
Returns
The resulting quaternion.

Definition at line 60 of file quaternion.c.

References quat_from_euler_ptr().

◆ quat_from_mat3()

quaternion quat_from_mat3 ( const matrix3 m)

Builds a quaternion from a 3x3 rotation matrix.

See quat_from_mat3_ptr instead.

Parameters
mInput matrix.
Returns
The resulting quaternion.

Definition at line 136 of file quaternion.c.

References quat_from_mat3_ptr().

◆ quat_from_mat4()

quaternion quat_from_mat4 ( const matrix4 m)

Builds a quaternion from the rotation of a 4x4 matrix.

See quat_from_mat4_ptr instead.

Parameters
mInput matrix.
Returns
The resulting quaternion.

Definition at line 151 of file quaternion.c.

References quat_from_mat4_ptr().

◆ quat_identity()

quaternion quat_identity ( void )

Constructs the identity quaternion.

See quat_identity_ptr instead.

Returns
The identity quaternion.

Definition at line 14 of file quaternion.c.

References quat_identity_ptr().

◆ quat_inverse()

quaternion quat_inverse ( const quaternion q)

Returns the inverse of a quaternion.

See quat_inverse_ptr instead.

Parameters
qInput quaternion.
Returns
The resulting quaternion.

Definition at line 105 of file quaternion.c.

References quat_inverse_ptr().

◆ quat_mul()

quaternion quat_mul ( const quaternion a,
const quaternion b )

Multiplies two quaternions (a * b).

See quat_mul_ptr instead.

Parameters
aThe first quaternion.
bThe second quaternion.
Returns
The resulting product quaternion.

Definition at line 30 of file quaternion.c.

References quat_mul_ptr().

◆ quat_near()

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
aFirst input quaternion.
bSecond input quaternion.
epsDistance tolerance.
Returns
True if a and b are within eps.

Definition at line 274 of file quaternion.c.

References VECMAT_FABS, quaternion::w, quaternion::x, quaternion::y, and quaternion::z.

◆ quat_nlerp()

quaternion quat_nlerp ( const quaternion a,
const quaternion b,
const vm_float_t t )

Normalized-linearly interpolates from a to b by t.

See quat_nlerp_ptr instead.

Parameters
aFirst input quaternion.
bSecond input quaternion.
tInterpolation factor.
Returns
The resulting quaternion.

Definition at line 185 of file quaternion.c.

References quat_nlerp_ptr().

◆ quat_normalize()

quaternion quat_normalize ( const quaternion q)

Normalizes a quaternion.

See quat_normalize_ptr instead.

Parameters
qThe input quaternion.
Returns
The normalized quaternion.

Definition at line 45 of file quaternion.c.

References quat_normalize_ptr().

◆ quat_rotate_vec3()

vector3 quat_rotate_vec3 ( const quaternion q,
const vector3 v )

Rotates a vector3 by a quaternion.

See quat_rotate_vec3_ptr instead.

Parameters
qInput quaternion.
vInput vector.
Returns
The resulting vector3.

Definition at line 201 of file quaternion.c.

References quat_rotate_vec3_ptr().

◆ quat_slerp()

quaternion quat_slerp ( const quaternion a,
const quaternion b,
const vm_float_t t )

Spherical-linearly interpolates from a to b by t.

See quat_slerp_ptr instead.

Parameters
aFirst input quaternion.
bSecond input quaternion.
tInterpolation factor.
Returns
The resulting quaternion.

Definition at line 168 of file quaternion.c.

References quat_slerp_ptr().

◆ quat_to_axis_angle()

vector3 quat_to_axis_angle ( const quaternion q,
vm_float_t * degrees )

Converts a quaternion to an axis and an angle in degrees.

See quat_to_axis_angle_ptr instead.

Parameters
qInput quaternion.
degreesOptional output angle in degrees.
Returns
The rotation axis.

Definition at line 232 of file quaternion.c.

References quat_to_axis_angle_ptr().

◆ quat_to_euler()

vector3 quat_to_euler ( const quaternion q)

Converts a quaternion to Euler angles in degrees (XYZ).

See quat_to_euler_ptr instead.

Parameters
qInput quaternion.
Returns
The resulting vector3.

Definition at line 216 of file quaternion.c.

References quat_to_euler_ptr().

◆ quat_to_mat3()

matrix3 quat_to_mat3 ( const quaternion q)

Converts a quaternion to a 3x3 rotation matrix.

See quat_to_mat3_ptr instead.

Parameters
qInput quaternion.
Returns
The resulting matrix3.

Definition at line 247 of file quaternion.c.

References quat_to_mat3_ptr().

◆ quat_to_mat4()

matrix4 quat_to_mat4 ( const quaternion q)

Converts a quaternion to a 4x4 rotation matrix.

See quat_to_mat4_ptr instead.

Parameters
qThe input quaternion.
Returns
The equivalent matrix4.

Definition at line 75 of file quaternion.c.

References quat_to_mat4_ptr().