 |
LibGame
v0.4.0
The LG Game Engine - Copyright (C) 2024-2025 ETMSoftware
|
6 #ifndef LG_QUATERNIONS_H
7 #define LG_QUATERNIONS_H
9 #define POW2(x) (x * x)
10 #define POW3(x) (x * x * x)
12 #define RAD_TO_DEG 57.295779513
13 #define DEG_TO_RAD 0.017453293
15 #define EULER_ANGLES_DEFAULT_ROT_ORDER "XYZ"
55 #define q_id lg_quat(0, 0, 0, 1)
155 mat3_t mat3(
float,
float,
float,
float,
float,
float,
float,
float,
float);
LG_AxAng lg_axis_ang(vec3_t axis, double angle)
Definition: lg_quaternions.c:714
LG_EulerAng lg_euler_ang_from_rot_matrix(mat4_t m, const char *rot_order)
Definition: lg_quaternions.c:592
Definition: lg_quaternions.h:39
LG_EulerAng lg_euler_ang(double x_rot, double y_rot, double z_rot)
Definition: lg_quaternions.c:560
void lg_quat_normalize(LG_Quat *q)
Definition: lg_quaternions.c:50
float lg_quat_get_yaw(LG_Quat *q, const char *rot_order)
Definition: lg_quaternions.c:960
zboolean lg_set_euler_ang_rot_order(const char *seq)
Definition: lg_quaternions.c:920
Definition: lg_quaternions.h:18
vec4_t lg_quat_as_vec4(LG_Quat q)
Definition: lg_quaternions.c:40
mat3_t mat3(float m00, float m10, float m20, float m01, float m11, float m21, float m02, float m12, float m22)
Definition: lg_quaternions.c:808
void lg_quat_to_axis_angle(LG_Quat q, LG_AxAng *axis_ang)
Definition: lg_quaternions.c:219
LG_Quat lg_quat_from_euler_ang(LG_EulerAng an, const char *rot_order)
Definition: lg_quaternions.c:127
LG_EulerAng lg_quat_to_euler_ang(LG_Quat q, const char *rot_order)
Definition: lg_quaternions.c:185
void lg_quat_conjugate(LG_Quat *q)
Definition: lg_quaternions.c:393
Definition: lg_quaternions.h:26
LG_Quat lg_quat(double x, double y, double z, double w)
Definition: lg_quaternions.c:27
Definition: lg_quaternions.h:63
vec3_t lg_quat_get_yaw_pitch_roll(LG_Quat *q, const char *rot_order)
Definition: lg_quaternions.c:947
Definition: lg_quaternions.h:48
LG_Quat lg_quat_get_conjugate(LG_Quat q)
Definition: lg_quaternions.c:406
vec3_t lg_quat_rotate_vec3(LG_Quat q, vec3_t v)
Definition: lg_quaternions.c:336
double lg_quat_magnitude(LG_Quat q)
Definition: lg_quaternions.c:447
LG_Quat lg_quat_slerp(LG_Quat *q_1, LG_Quat *q_2, float slerp_k)
Definition: lg_quaternions.c:503
float lg_quat_get_roll(LG_Quat *q, const char *rot_order)
Definition: lg_quaternions.c:986
mat4_t lg_quat_to_rot_matrix(LG_Quat q2)
Definition: lg_quaternions.c:312
Definition: math_3d.h:123
void lg_quat_set_identity(LG_Quat *q)
Definition: lg_quaternions.c:471
LG_Quat lg_quat_get_identity()
Definition: lg_quaternions.c:484
LG_QuatV * lg_quatv()
Definition: lg_quaternions.c:861
LG_EulerAng lg_axis_angle_to_euler_ang(LG_AxAng axis_ang)
Definition: lg_quaternions.c:747
mat3_t m3_transpose(mat3_t matrix)
Definition: lg_quaternions.c:828
LG_Quat lg_quats_multiply(LG_Quat q1, LG_Quat q2)
Definition: lg_quaternions.c:95
LG_Quat lg_quat_get_normalized(LG_Quat q)
Definition: lg_quaternions.c:75
vec3_t lg_euler_ang_as_v3(LG_EulerAng an)
Definition: lg_quaternions.c:577
int lg_quat_copy(LG_Quat *q_dest, const LG_Quat *q_src)
Definition: lg_quaternions.c:354
LG_Quat lg_quat_from_3x3_rot_matrix(mat3_t m)
Definition: lg_quaternions.c:251
LG_Quat lg_quat_get_invert(LG_Quat q)
Definition: lg_quaternions.c:433
float lg_quat_get_pitch(LG_Quat *q, const char *rot_order)
Definition: lg_quaternions.c:973
Definition: lg_quaternions.h:33
double lg_quats_dot(LG_Quat *q1, LG_Quat *q2)
Definition: lg_quaternions.c:459
zboolean lg_quats_are_equal(LG_Quat *q1, LG_Quat *q2)
Definition: lg_quaternions.c:377
mat3_t lg_quat_to_3x3_rot_matrix(LG_Quat q2)
Definition: lg_quaternions.c:290
LG_EulerAng lg_euler_ang_from_TRS_matrix(mat4_t *TRS_matrix, const char *euler_ang_rot_order)
Definition: lg_quaternions.c:666
LG_Quat lg_quat_from_axis_angle(LG_AxAng axis_ang)
Definition: lg_quaternions.c:197
void lg_quat_invert(LG_Quat *q)
Definition: lg_quaternions.c:421
Definition: math_3d.h:179