File syn_quaternion.h¶
FileList > src > syntropic > util > syn_quaternion.h
Go to the source code of this file
Fixed-point Q16.16 3D Quaternion operations — zero heap allocation.
#include "../common/syn_defs.h"#include "syn_matrix.h"#include "syn_qmath.h"#include <stdbool.h>#include <stdint.h>
Classes¶
| Type | Name |
|---|---|
| struct | SYN_Quaternion 3D Quaternion representation (w + xi + yj + zk). |
Public Functions¶
| Type | Name |
|---|---|
| void | syn_quat_conjugate (const SYN_Quaternion * q, SYN_Quaternion * out) Calculate quaternion conjugate q* = (w, -x, -y, -z). |
| void | syn_quat_from_euler (SYN_Quaternion * q, q16_t roll, q16_t pitch, q16_t yaw) Create orientation quaternion from Euler angles (roll, pitch, yaw) in Q16 radians (Z-Y-X sequence). |
| void | syn_quat_identity (SYN_Quaternion * q) Initialize identity quaternion q = (1, 0, 0, 0). |
| void | syn_quat_init (SYN_Quaternion * q, q16_t w, q16_t x, q16_t y, q16_t z) Initialize quaternion with given components. |
| SYN_Status | syn_quat_inverse (const SYN_Quaternion * q, SYN_Quaternion * out) Calculate quaternion inverse q^-1 = q* / |q|^2. |
| void | syn_quat_mul (const SYN_Quaternion * q1, const SYN_Quaternion * q2, SYN_Quaternion * out) Quaternion multiplication q_out = q1 * q2 (Hamilton product). |
| q16_t | syn_quat_norm (const SYN_Quaternion * q) Calculate quaternion norm (magnitude). |
| SYN_Status | syn_quat_normalize (SYN_Quaternion * q) Normalize quaternion to unit length. |
| void | syn_quat_rotate_vec3 (const SYN_Quaternion * q, const q16_t * v, q16_t * out) Rotate a 3D vector v by unit quaternion q: v_out = q * v * q*. |
| void | syn_quat_slerp (const SYN_Quaternion * q1, const SYN_Quaternion * q2, q16_t t, SYN_Quaternion * out) Spherical linear interpolation (SLERP) between q1 and q2 by factor t (0.0 to 1.0 in Q16). |
| void | syn_quat_to_euler (const SYN_Quaternion * q, q16_t * roll, q16_t * pitch, q16_t * yaw) Extract Euler angles (roll, pitch, yaw) in Q16 radians from unit quaternion. |
| void | syn_quat_to_mat3x3 (const SYN_Quaternion * q, SYN_Matrix * out) Convert unit quaternion to 3x3 rotation matrix. |
Public Functions Documentation¶
function syn_quat_conjugate¶
Calculate quaternion conjugate q* = (w, -x, -y, -z).
function syn_quat_from_euler¶
Create orientation quaternion from Euler angles (roll, pitch, yaw) in Q16 radians (Z-Y-X sequence).
function syn_quat_identity¶
Initialize identity quaternion q = (1, 0, 0, 0).
function syn_quat_init¶
Initialize quaternion with given components.
function syn_quat_inverse¶
Calculate quaternion inverse q^-1 = q* / |q|^2.
Returns:
SYN_OK on success, SYN_ERROR if zero magnitude.
function syn_quat_mul¶
Quaternion multiplication q_out = q1 * q2 (Hamilton product).
Parameters:
q1First quaternion operand.q2Second quaternion operand.outOutput product quaternion. May alias q1 or q2.
function syn_quat_norm¶
Calculate quaternion norm (magnitude).
function syn_quat_normalize¶
Normalize quaternion to unit length.
Returns:
SYN_OK on success, SYN_ERROR if zero magnitude.
function syn_quat_rotate_vec3¶
Rotate a 3D vector v by unit quaternion q: v_out = q * v * q*.
Parameters:
qUnit quaternion rotation.vInput 3D vector (3 elements).outOutput rotated 3D vector (3 elements). May alias v.
function syn_quat_slerp¶
Spherical linear interpolation (SLERP) between q1 and q2 by factor t (0.0 to 1.0 in Q16).
void syn_quat_slerp (
const SYN_Quaternion * q1,
const SYN_Quaternion * q2,
q16_t t,
SYN_Quaternion * out
)
Parameters:
q1Start unit quaternion (t = 0).q2End unit quaternion (t = 1).tInterpolation parameter [0, Q16_ONE].outOutput interpolated unit quaternion.
function syn_quat_to_euler¶
Extract Euler angles (roll, pitch, yaw) in Q16 radians from unit quaternion.
function syn_quat_to_mat3x3¶
Convert unit quaternion to 3x3 rotation matrix.
Parameters:
qUnit quaternion.outOutput 3x3 rotation matrix.
The documentation for this class was generated from the following file src/syntropic/util/syn_quaternion.h