|
Vecmat 0.2.3
C math and linear algebra library for 2D/3D graphics, physics, and science.
|
Go to the source code of this file.
Functions | |
| void | quat_identity_ptr (quaternion *res) |
| Sets the quaternion to the identity quaternion (x=0, y=0, z=0, w=1). | |
| VECMAT_SCALAR_API void | quat_mul_ptr_scalar (quaternion *res, const quaternion *a, const quaternion *b) |
| Multiplies two quaternions using Hamilton product (a * b) and stores the result in res. | |
| void | quat_mul_ptr (quaternion *res, const quaternion *a, const quaternion *b) |
| VECMAT_SCALAR_API void | quat_normalize_ptr_scalar (quaternion *res, const quaternion *q) |
| Normalizes the input quaternion and stores the result in res. | |
| void | quat_normalize_ptr (quaternion *res, const quaternion *q) |
| void | quat_from_euler_ptr (quaternion *res, const vector3 *euler) |
| Converts Euler angles (in degrees, XYZ order: pitch, yaw, roll) to a quaternion and stores in res. | |
| void | quat_to_mat4_ptr (matrix4 *res, const quaternion *q) |
| Converts a unit quaternion to a 4x4 rotation matrix and stores in res. | |
| void | quat_conjugate_ptr (quaternion *res, const quaternion *q) |
| Writes the conjugate of a quaternion. | |
| void | quat_inverse_ptr (quaternion *res, const quaternion *q) |
| Writes the inverse of a quaternion. | |
| void | quat_from_axis_angle_ptr (quaternion *res, const vector3 *axis, const vm_float_t degrees) |
| Builds a quaternion from an axis and an angle in degrees. | |
| void | quat_from_mat3_ptr (quaternion *res, const matrix3 *m) |
| Builds a quaternion from a 3x3 rotation matrix. | |
| void | quat_from_mat4_ptr (quaternion *res, const matrix4 *m) |
| Builds a quaternion from the rotation of a 4x4 matrix. | |
| void | quat_nlerp_ptr (quaternion *res, const quaternion *a, const quaternion *b, const vm_float_t t) |
| Normalized-linearly interpolates from a to b by t. | |
| void | quat_slerp_ptr (quaternion *res, const quaternion *a, const quaternion *b, const vm_float_t t) |
| Spherical-linearly interpolates from a to b by t. | |
| void | quat_rotate_vec3_ptr (vector3 *res, const quaternion *q, const vector3 *v) |
| Rotates a vector3 by a quaternion. | |
| void | quat_to_euler_ptr (vector3 *res, const quaternion *q) |
| Converts a quaternion to Euler angles in degrees (XYZ). | |
| void | quat_to_axis_angle_ptr (vector3 *axis, vm_float_t *degrees, const quaternion *q) |
| Converts a quaternion to an axis and an angle in degrees. | |
| void | quat_to_mat3_ptr (matrix3 *res, const quaternion *q) |
| Converts a quaternion to a 3x3 rotation matrix. | |
| void quat_conjugate_ptr | ( | quaternion * | res, |
| const quaternion * | q ) |
Writes the conjugate of a quaternion.
| res | Output value. |
| q | Input quaternion. |
Definition at line 149 of file quaternion_ptr.c.
References quaternion::w, quaternion::x, quaternion::y, and quaternion::z.
Referenced by quat_conjugate().
| void quat_from_axis_angle_ptr | ( | quaternion * | res, |
| const vector3 * | axis, | ||
| const vm_float_t | degrees ) |
Builds a quaternion from an axis and an angle in degrees.
| res | Output value. |
| axis | Rotation axis. |
| degrees | Rotation angle in degrees. |
Definition at line 184 of file quaternion_ptr.c.
References deg_to_rad(), vec3_normalize(), VECMAT_COS, VECMAT_SIN, quaternion::w, quaternion::x, vector3::x, quaternion::y, vector3::y, quaternion::z, and vector3::z.
Referenced by quat_from_axis_angle().
| void quat_from_euler_ptr | ( | quaternion * | res, |
| const vector3 * | euler ) |
Converts Euler angles (in degrees, XYZ order: pitch, yaw, roll) to a quaternion and stores in res.
Internally converts to radians, computes quaternion, and normalizes.
| res | Pointer to the output quaternion. |
| euler | Pointer to the input Euler angles vector. |
Definition at line 91 of file quaternion_ptr.c.
References deg_to_rad(), quat_normalize_ptr(), VECMAT_COS, VECMAT_SIN, vector3::x, vector3::y, and vector3::z.
Referenced by quat_from_euler().
| void quat_from_mat3_ptr | ( | quaternion * | res, |
| const matrix3 * | m ) |
Builds a quaternion from a 3x3 rotation matrix.
| res | Output value. |
| m | Input matrix. |
Definition at line 201 of file quaternion_ptr.c.
References matrix3::m11, matrix3::m12, matrix3::m13, matrix3::m21, matrix3::m22, matrix3::m23, matrix3::m31, matrix3::m32, matrix3::m33, quat_normalize_ptr(), VECMAT_SQRT, quaternion::w, quaternion::x, quaternion::y, and quaternion::z.
Referenced by mat4_extract_rotation_ptr(), quat_from_mat3(), and quat_from_mat4_ptr().
| void quat_from_mat4_ptr | ( | quaternion * | res, |
| const matrix4 * | m ) |
Builds a quaternion from the rotation of a 4x4 matrix.
| res | Output value. |
| m | Input matrix. |
Definition at line 238 of file quaternion_ptr.c.
References matrix4::m11, matrix4::m12, matrix4::m13, matrix4::m21, matrix4::m22, matrix4::m23, matrix4::m31, matrix4::m32, matrix4::m33, and quat_from_mat3_ptr().
Referenced by quat_from_mat4().
| void quat_identity_ptr | ( | quaternion * | res | ) |
Sets the quaternion to the identity quaternion (x=0, y=0, z=0, w=1).
| res | Pointer to the quaternion to initialize. |
Definition at line 13 of file quaternion_ptr.c.
References quaternion::w, quaternion::x, quaternion::y, and quaternion::z.
Referenced by quat_identity().
| void quat_inverse_ptr | ( | quaternion * | res, |
| const quaternion * | q ) |
Writes the inverse of a quaternion.
| res | Output value. |
| q | Input quaternion. |
Definition at line 163 of file quaternion_ptr.c.
References quaternion::w, quaternion::x, quaternion::y, and quaternion::z.
Referenced by quat_inverse(), and quat_rotate_vec3_ptr().
| void quat_mul_ptr | ( | quaternion * | res, |
| const quaternion * | a, | ||
| const quaternion * | b ) |
Definition at line 37 of file quaternion_ptr.c.
References quat_mul_ptr_scalar(), and vm_cpu_init().
Referenced by quat_mul(), and quat_rotate_vec3_ptr().
| VECMAT_SCALAR_API void quat_mul_ptr_scalar | ( | quaternion * | res, |
| const quaternion * | a, | ||
| const quaternion * | b ) |
Multiplies two quaternions using Hamilton product (a * b) and stores the result in res.
| res | Pointer to the output quaternion. |
| a | Pointer to the first quaternion. |
| b | Pointer to the second quaternion. |
Definition at line 29 of file quaternion_ptr.c.
References VECMAT_SCALAR_API, quaternion::w, quaternion::x, quaternion::y, and quaternion::z.
Referenced by quat_mul_ptr().
| void quat_nlerp_ptr | ( | quaternion * | res, |
| const quaternion * | a, | ||
| const quaternion * | b, | ||
| const vm_float_t | t ) |
Normalized-linearly interpolates from a to b by t.
| res | Output value. |
| a | First input quaternion. |
| b | Second input quaternion. |
| t | Interpolation factor. |
Definition at line 256 of file quaternion_ptr.c.
References quat_dot(), quat_normalize_ptr(), quaternion::w, quaternion::x, quaternion::y, and quaternion::z.
Referenced by quat_nlerp(), and quat_slerp_ptr().
| void quat_normalize_ptr | ( | quaternion * | res, |
| const quaternion * | q ) |
Definition at line 72 of file quaternion_ptr.c.
References quat_normalize_ptr_scalar(), and vm_cpu_init().
Referenced by quat_from_euler_ptr(), quat_from_mat3_ptr(), quat_nlerp_ptr(), quat_normalize(), and quat_to_axis_angle_ptr().
| VECMAT_SCALAR_API void quat_normalize_ptr_scalar | ( | quaternion * | res, |
| const quaternion * | q ) |
Normalizes the input quaternion and stores the result in res.
If the quaternion length is zero, copies the input unchanged.
| res | Pointer to the output quaternion. |
| q | Pointer to the input quaternion. |
Definition at line 55 of file quaternion_ptr.c.
References VECMAT_SCALAR_API, VECMAT_SQRT, quaternion::w, quaternion::x, quaternion::y, and quaternion::z.
Referenced by quat_normalize_ptr().
| void quat_rotate_vec3_ptr | ( | vector3 * | res, |
| const quaternion * | q, | ||
| const vector3 * | v ) |
Rotates a vector3 by a quaternion.
| res | Output value. |
| q | Input quaternion. |
| v | Input vector. |
Definition at line 314 of file quaternion_ptr.c.
References quat_inverse_ptr(), quat_mul_ptr(), quaternion::x, vector3::x, quaternion::y, vector3::y, quaternion::z, and vector3::z.
Referenced by quat_rotate_vec3().
| void quat_slerp_ptr | ( | quaternion * | res, |
| const quaternion * | a, | ||
| const quaternion * | b, | ||
| const vm_float_t | t ) |
Spherical-linearly interpolates from a to b by t.
| res | Output value. |
| a | First input quaternion. |
| b | Second input quaternion. |
| t | Interpolation factor. |
Definition at line 282 of file quaternion_ptr.c.
References quat_dot(), quat_nlerp_ptr(), VECMAT_ACOS, VECMAT_SIN, quaternion::w, quaternion::x, quaternion::y, and quaternion::z.
Referenced by quat_slerp().
| void quat_to_axis_angle_ptr | ( | vector3 * | axis, |
| vm_float_t * | degrees, | ||
| const quaternion * | q ) |
Converts a quaternion to an axis and an angle in degrees.
| axis | Output rotation axis. |
| degrees | Optional output angle in degrees. |
| q | Input quaternion. |
Definition at line 364 of file quaternion_ptr.c.
References quat_normalize_ptr(), rad_to_deg(), VECMAT_ACOS, VECMAT_EPSILON, VECMAT_SQRT, quaternion::w, quaternion::x, vector3::x, quaternion::y, vector3::y, quaternion::z, and vector3::z.
Referenced by quat_to_axis_angle().
| void quat_to_euler_ptr | ( | vector3 * | res, |
| const quaternion * | q ) |
Converts a quaternion to Euler angles in degrees (XYZ).
| res | Output value. |
| q | Input quaternion. |
Definition at line 334 of file quaternion_ptr.c.
References M_PI_2, VECMAT_ASIN, VECMAT_ATAN2, VECMAT_COPYSIGN, VECMAT_FABS, VM_RAD_TO_DEG, quaternion::w, quaternion::x, vector3::x, quaternion::y, vector3::y, quaternion::z, and vector3::z.
Referenced by quat_to_euler().
| void quat_to_mat3_ptr | ( | matrix3 * | res, |
| const quaternion * | q ) |
Converts a quaternion to a 3x3 rotation matrix.
| res | Output value. |
| q | Input quaternion. |
Definition at line 391 of file quaternion_ptr.c.
References matrix3::m11, matrix4::m11, matrix3::m12, matrix4::m12, matrix3::m13, matrix4::m13, matrix3::m21, matrix4::m21, matrix3::m22, matrix4::m22, matrix3::m23, matrix4::m23, matrix3::m31, matrix4::m31, matrix3::m32, matrix4::m32, matrix3::m33, matrix4::m33, and quat_to_mat4_ptr().
Referenced by quat_to_mat3().
| void quat_to_mat4_ptr | ( | matrix4 * | res, |
| const quaternion * | q ) |
Converts a unit quaternion to a 4x4 rotation matrix and stores in res.
Starts with the identity matrix and applies rotation components.
| res | Pointer to the output matrix4. |
| q | Pointer to the input quaternion (should be normalized). |
Definition at line 118 of file quaternion_ptr.c.
References matrix4::m11, matrix4::m12, matrix4::m13, matrix4::m21, matrix4::m22, matrix4::m23, matrix4::m31, matrix4::m32, matrix4::m33, mat4_identity_ptr(), quaternion::w, quaternion::x, quaternion::y, and quaternion::z.
Referenced by mat4_trs_ptr(), quat_to_mat3_ptr(), and quat_to_mat4().