From 51278b26b4ea5c9c8734777c7709da5b9bc65ef8 Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Wed, 11 Apr 2018 11:19:13 +0300 Subject: [PATCH] quat: update call versions of quaternion --- include/cglm/call/quat.h | 88 +++++++++++++++++++++++- include/cglm/quat.h | 4 +- src/quat.c | 141 +++++++++++++++++++++++++++++++++++++-- 3 files changed, 222 insertions(+), 11 deletions(-) diff --git a/include/cglm/call/quat.h b/include/cglm/call/quat.h index ee45f0c..d250f52 100644 --- a/include/cglm/call/quat.h +++ b/include/cglm/call/quat.h @@ -17,25 +17,77 @@ CGLM_EXPORT void glmc_quat_identity(versor q); +CGLM_EXPORT +void +glmc_quat_init(versor q, float x, float y, float z, float w); + CGLM_EXPORT void glmc_quat(versor q, float angle, float x, float y, float z); CGLM_EXPORT void -glmc_quatv(versor q, float angle, vec3 v); +glmc_quatv(versor q, float angle, vec3 axis); + +CGLM_EXPORT +void +glmc_quat_copy(versor q, versor dest); CGLM_EXPORT float glmc_quat_norm(versor q); +CGLM_EXPORT +void +glmc_quat_normalize_to(versor q, versor dest); + CGLM_EXPORT void glmc_quat_normalize(versor q); CGLM_EXPORT float -glmc_quat_dot(versor q, versor r); +glmc_quat_dot(versor p, versor q); + +CGLM_EXPORT +void +glmc_quat_conjugate(versor q, versor dest); + +CGLM_EXPORT +void +glmc_quat_inv(versor q, versor dest); + +CGLM_EXPORT +void +glmc_quat_add(versor p, versor q, versor dest); + +CGLM_EXPORT +void +glmc_quat_sub(versor p, versor q, versor dest); + +CGLM_EXPORT +float +glmc_quat_real(versor q); + +CGLM_EXPORT +void +glmc_quat_imag(versor q, vec3 dest); + +CGLM_EXPORT +void +glmc_quat_imagn(versor q, vec3 dest); + +CGLM_EXPORT +float +glmc_quat_imaglen(versor q); + +CGLM_EXPORT +float +glmc_quat_angle(versor q); + +CGLM_EXPORT +void +glmc_quat_axis(versor q, versor dest); CGLM_EXPORT void @@ -45,14 +97,46 @@ CGLM_EXPORT void glmc_quat_mat4(versor q, mat4 dest); +CGLM_EXPORT +void +glmc_quat_mat4t(versor q, mat4 dest); + CGLM_EXPORT void glmc_quat_mat3(versor q, mat3 dest); +CGLM_EXPORT +void +glmc_quat_mat3t(versor q, mat3 dest); + +CGLM_EXPORT +void +glmc_quat_lerp(versor from, versor to, float t, versor dest); + CGLM_EXPORT void glmc_quat_slerp(versor q, versor r, float t, versor dest); +CGLM_EXPORT +void +glmc_quat_look(vec3 eye, versor ori, mat4 dest); + +CGLM_EXPORT +void +glmc_quat_for(vec3 dir, vec3 fwd, vec3 up, versor dest); + +CGLM_EXPORT +void +glmc_quat_forp(vec3 from, vec3 to, vec3 fwd, vec3 up, versor dest); + +CGLM_EXPORT +void +glmc_quat_rotatev(versor from, vec3 to, vec3 dest); + +CGLM_EXPORT +void +glmc_quat_rotate(mat4 m, versor q, mat4 dest); + #ifdef __cplusplus } #endif diff --git a/include/cglm/quat.h b/include/cglm/quat.h index 95a768e..c9927bb 100644 --- a/include/cglm/quat.h +++ b/include/cglm/quat.h @@ -231,8 +231,8 @@ glm_quat_normalize(versor q) { */ CGLM_INLINE float -glm_quat_dot(versor q1, versor q2) { - return glm_vec4_dot(q1, q2); +glm_quat_dot(versor p, versor q) { + return glm_vec4_dot(p, q); } /*! diff --git a/src/quat.c b/src/quat.c index b1cfe90..8a9a463 100644 --- a/src/quat.c +++ b/src/quat.c @@ -8,12 +8,19 @@ #include "../include/cglm/cglm.h" #include "../include/cglm/call.h" + CGLM_EXPORT void glmc_quat_identity(versor q) { glm_quat_identity(q); } +CGLM_EXPORT +void +glmc_quat_init(versor q, float x, float y, float z, float w) { + glm_quat_init(q, x, y, z, w); +} + CGLM_EXPORT void glmc_quat(versor q, float angle, float x, float y, float z) { @@ -22,8 +29,14 @@ glmc_quat(versor q, float angle, float x, float y, float z) { CGLM_EXPORT void -glmc_quatv(versor q, float angle, vec3 v) { - glm_quatv(q, angle, v); +glmc_quatv(versor q, float angle, vec3 axis) { + glm_quatv(q, angle, axis); +} + +CGLM_EXPORT +void +glmc_quat_copy(versor q, versor dest) { + glm_quat_copy(q, dest); } CGLM_EXPORT @@ -32,16 +45,82 @@ glmc_quat_norm(versor q) { return glm_quat_norm(q); } +CGLM_EXPORT +void +glmc_quat_normalize_to(versor q, versor dest) { + glm_quat_normalize_to(q, dest); +} + CGLM_EXPORT void glmc_quat_normalize(versor q) { - glm_quat_normalize(q); + glm_quat_norm(q); } CGLM_EXPORT float -glmc_quat_dot(versor q, versor r) { - return glm_quat_dot(q, r); +glmc_quat_dot(versor p, versor q) { + return glm_quat_dot(p, q); +} + +CGLM_EXPORT +void +glmc_quat_conjugate(versor q, versor dest) { + glm_quat_conjugate(q, dest); +} + +CGLM_EXPORT +void +glmc_quat_inv(versor q, versor dest) { + glm_quat_inv(q, dest); +} + +CGLM_EXPORT +void +glmc_quat_add(versor p, versor q, versor dest) { + glm_quat_add(p, q, dest); +} + +CGLM_EXPORT +void +glmc_quat_sub(versor p, versor q, versor dest) { + glm_quat_sub(p, q, dest); +} + +CGLM_EXPORT +float +glmc_quat_real(versor q) { + return glm_quat_real(q); +} + +CGLM_EXPORT +void +glmc_quat_imag(versor q, vec3 dest) { + glm_quat_imag(q, dest); +} + +CGLM_EXPORT +void +glmc_quat_imagn(versor q, vec3 dest) { + glm_quat_imagn(q, dest); +} + +CGLM_EXPORT +float +glmc_quat_imaglen(versor q) { + return glm_quat_imaglen(q); +} + +CGLM_EXPORT +float +glmc_quat_angle(versor q) { + return glm_quat_angle(q); +} + +CGLM_EXPORT +void +glmc_quat_axis(versor q, versor dest) { + glm_quat_axis(q, dest); } CGLM_EXPORT @@ -56,6 +135,12 @@ glmc_quat_mat4(versor q, mat4 dest) { glm_quat_mat4(q, dest); } +CGLM_EXPORT +void +glmc_quat_mat4t(versor q, mat4 dest) { + glm_quat_mat4t(q, dest); +} + CGLM_EXPORT void glmc_quat_mat3(versor q, mat3 dest) { @@ -64,6 +149,48 @@ glmc_quat_mat3(versor q, mat3 dest) { CGLM_EXPORT void -glmc_quat_slerp(versor q, versor r, float t, versor dest) { - glm_quat_slerp(q, r, t, dest); +glmc_quat_mat3t(versor q, mat3 dest) { + glm_quat_mat3t(q, dest); +} + +CGLM_EXPORT +void +glmc_quat_lerp(versor from, versor to, float t, versor dest) { + glm_quat_lerp(from, to, t, dest); +} + +CGLM_EXPORT +void +glmc_quat_slerp(versor from, versor to, float t, versor dest) { + glm_quat_slerp(from, to, t, dest); +} + +CGLM_EXPORT +void +glmc_quat_look(vec3 eye, versor ori, mat4 dest) { + glm_quat_look(eye, ori, dest); +} + +CGLM_EXPORT +void +glmc_quat_for(vec3 dir, vec3 fwd, vec3 up, versor dest) { + glm_quat_for(dir, fwd, up, dest); +} + +CGLM_EXPORT +void +glmc_quat_forp(vec3 from, vec3 to, vec3 fwd, vec3 up, versor dest) { + glm_quat_forp(from, to, fwd, up, dest); +} + +CGLM_EXPORT +void +glmc_quat_rotatev(versor q, vec3 v, vec3 dest) { + glm_quat_rotatev(q, v, dest); +} + +CGLM_EXPORT +void +glmc_quat_rotate(mat4 m, versor q, mat4 dest) { + glm_quat_rotate(m, q, dest); }