From c998d0186aa56945e179fd19336a5004e3ff0657 Mon Sep 17 00:00:00 2001 From: John Choi Date: Thu, 28 Dec 2023 09:52:17 -0600 Subject: [PATCH] made struct versions of euler to quat. Also fixed up documentation in euler to quat struct. --- include/cglm/euler.h | 24 ++-- include/cglm/struct/euler.h | 24 ++-- include/cglm/struct/handed/TODO THIS.txt | 0 include/cglm/struct/handed/euler_to_quat_lh.h | 115 ++++++++++++++++++ include/cglm/struct/handed/euler_to_quat_rh.h | 115 ++++++++++++++++++ 5 files changed, 254 insertions(+), 24 deletions(-) delete mode 100644 include/cglm/struct/handed/TODO THIS.txt create mode 100644 include/cglm/struct/handed/euler_to_quat_lh.h create mode 100644 include/cglm/struct/handed/euler_to_quat_rh.h diff --git a/include/cglm/euler.h b/include/cglm/euler.h index fb4adc0..358e9bf 100644 --- a/include/cglm/euler.h +++ b/include/cglm/euler.h @@ -460,8 +460,8 @@ glm_euler_by_order(vec3 angles, glm_euler_seq ord, mat4 dest) { * @brief creates NEW quaternion using rotation angles and does * rotations in x y z order (roll pitch yaw) * - * @param[out] q quaternion - * @param[in] angle angles x y z (radians) + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion */ CGLM_INLINE void @@ -477,8 +477,8 @@ glm_euler_xyz_quat(vec3 angles, versor dest) { * @brief creates NEW quaternion using rotation angles and does * rotations in x z y order (roll yaw pitch) * - * @param[out] q quaternion - * @param[in] angle angles x y z (radians) + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion */ CGLM_INLINE void @@ -494,8 +494,8 @@ glm_euler_xzy_quat(vec3 angles, versor dest) { * @brief creates NEW quaternion using rotation angles and does * rotations in y x z order (pitch roll yaw) * - * @param[out] q quaternion - * @param[in] angle angles x y z (radians) + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion */ CGLM_INLINE void @@ -511,8 +511,8 @@ glm_euler_yxz_quat(vec3 angles, versor dest) { * @brief creates NEW quaternion using rotation angles and does * rotations in y z x order (pitch yaw roll) * - * @param[out] q quaternion - * @param[in] angle angles x y z (radians) + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion */ CGLM_INLINE void @@ -528,8 +528,8 @@ glm_euler_yzx_quat(vec3 angles, versor dest) { * @brief creates NEW quaternion using rotation angles and does * rotations in z x y order (yaw roll pitch) * - * @param[out] q quaternion - * @param[in] angle angles x y z (radians) + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion */ CGLM_INLINE void @@ -545,8 +545,8 @@ glm_euler_zxy_quat(vec3 angles, versor dest) { * @brief creates NEW quaternion using rotation angles and does * rotations in z y x order (yaw pitch roll) * - * @param[out] q quaternion - * @param[in] angle angles x y z (radians) + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion */ CGLM_INLINE void diff --git a/include/cglm/struct/euler.h b/include/cglm/struct/euler.h index 7b75946..3395745 100644 --- a/include/cglm/struct/euler.h +++ b/include/cglm/struct/euler.h @@ -159,8 +159,8 @@ glms_euler_by_order(vec3s angles, glm_euler_seq ord) { * @brief creates NEW quaternion using rotation angles and does * rotations in x y z order (roll pitch yaw) * - * @param[out] q quaternion - * @param[in] angle angles x y z (radians) + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion */ CGLM_INLINE versors @@ -174,8 +174,8 @@ glms_euler_xyz_quat(vec3s angles) { * @brief creates NEW quaternion using rotation angles and does * rotations in x z y order (roll yaw pitch) * - * @param[out] q quaternion - * @param[in] angle angles x y z (radians) + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion */ CGLM_INLINE versors @@ -189,8 +189,8 @@ glms_euler_xzy_quat(vec3s angles) { * @brief creates NEW quaternion using rotation angles and does * rotations in y x z order (pitch roll yaw) * - * @param[out] q quaternion - * @param[in] angle angles x y z (radians) + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion */ CGLM_INLINE versors @@ -204,8 +204,8 @@ glms_euler_yxz_quat(vec3s angles) { * @brief creates NEW quaternion using rotation angles and does * rotations in y z x order (pitch yaw roll) * - * @param[out] q quaternion - * @param[in] angle angles x y z (radians) + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion */ CGLM_INLINE versors @@ -219,8 +219,8 @@ glms_euler_yzx_quat(vec3s angles) { * @brief creates NEW quaternion using rotation angles and does * rotations in z x y order (yaw roll pitch) * - * @param[out] q quaternion - * @param[in] angle angles x y z (radians) + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion */ CGLM_INLINE versors @@ -234,8 +234,8 @@ glms_euler_zxy_quat(vec3s angles) { * @brief creates NEW quaternion using rotation angles and does * rotations in z y x order (yaw pitch roll) * - * @param[out] q quaternion - * @param[in] angle angles x y z (radians) + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion */ CGLM_INLINE versors diff --git a/include/cglm/struct/handed/TODO THIS.txt b/include/cglm/struct/handed/TODO THIS.txt deleted file mode 100644 index e69de29..0000000 diff --git a/include/cglm/struct/handed/euler_to_quat_lh.h b/include/cglm/struct/handed/euler_to_quat_lh.h new file mode 100644 index 0000000..3964e51 --- /dev/null +++ b/include/cglm/struct/handed/euler_to_quat_lh.h @@ -0,0 +1,115 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glms_euler_xyz_quat_lh(vec3 angles, versor dest); + CGLM_INLINE void glms_euler_xzy_quat_lh(vec3 angles, versor dest); + CGLM_INLINE void glms_euler_yxz_quat_lh(vec3 angles, versor dest); + CGLM_INLINE void glms_euler_yzx_quat_lh(vec3 angles, versor dest); + CGLM_INLINE void glms_euler_zxy_quat_lh(vec3 angles, versor dest); + CGLM_INLINE void glms_euler_zyx_quat_lh(vec3 angles, versor dest); + */ + +#ifndef cglms_euler_to_quat_lh_h +#define cglms_euler_to_quat_lh_h + +#include "../common.h" + + +/*! + * @brief creates NEW quaternion using rotation angles and does + * rotations in x y z order in left hand (roll pitch yaw) + * + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion + */ +CGLM_INLINE +versors +glms_euler_xyz_quat_lh(vec3s angles) { + versors dest; + glm_euler_xyz_quat_lh(angles.raw, dest.raw); + return dest; +} + +/*! + * @brief creates NEW quaternion using rotation angles and does + * rotations in x z y order in left hand (roll yaw pitch) + * + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion + */ +CGLM_INLINE +versors +glms_euler_xzy_quat_lh(vec3s angles) { + versors dest; + glm_euler_xzy_quat_lh(angles.raw, dest.raw); + return dest; +} + +/*! + * @brief creates NEW quaternion using rotation angles and does + * rotations in y x z order in left hand (pitch roll yaw) + * + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion + */ +CGLM_INLINE +versors +glms_euler_yxz_quat_lh(vec3s angles) { + versors dest; + glm_euler_yxz_quat_lh(angles.raw, dest.raw); + return dest; +} + +/*! + * @brief creates NEW quaternion using rotation angles and does + * rotations in y z x order in left hand (pitch yaw roll) + * + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion + */ +CGLM_INLINE +versors +glms_euler_yzx_quat_lh(vec3s angles) { + versors dest; + glm_euler_yzx_quat_lh(angles.raw, dest.raw); + return dest; +} + +/*! + * @brief creates NEW quaternion using rotation angles and does + * rotations in z x y order in left hand (yaw roll pitch) + * + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion + */ +CGLM_INLINE +versors +glms_euler_zxy_quat_lh(vec3s angles) { + versors dest; + glm_euler_zxy_quat_lh(angles.raw, dest.raw); + return dest; +} + +/*! + * @brief creates NEW quaternion using rotation angles and does + * rotations in z y x order in left hand (yaw pitch roll) + * + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion + */ +CGLM_INLINE +versors +glms_euler_zyx_quat_lh(vec3s angles) { + versors dest; + glm_euler_zyx_quat_lh(angles.raw, dest.raw); + return dest; +} + + +#endif /* cglms_euler_to_quat_lh_h */ diff --git a/include/cglm/struct/handed/euler_to_quat_rh.h b/include/cglm/struct/handed/euler_to_quat_rh.h new file mode 100644 index 0000000..6c7f400 --- /dev/null +++ b/include/cglm/struct/handed/euler_to_quat_rh.h @@ -0,0 +1,115 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glms_euler_xyz_quat_rh(vec3 angles, versor dest); + CGLM_INLINE void glms_euler_xzy_quat_rh(vec3 angles, versor dest); + CGLM_INLINE void glms_euler_yxz_quat_rh(vec3 angles, versor dest); + CGLM_INLINE void glms_euler_yzx_quat_rh(vec3 angles, versor dest); + CGLM_INLINE void glms_euler_zxy_quat_rh(vec3 angles, versor dest); + CGLM_INLINE void glms_euler_zyx_quat_rh(vec3 angles, versor dest); + */ + +#ifndef cglms_euler_to_quat_rh_h +#define cglms_euler_to_quat_rh_h + +#include "../common.h" + + +/*! + * @brief creates NEW quaternion using rotation angles and does + * rotations in x y z order in right hand (roll pitch yaw) + * + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion + */ +CGLM_INLINE +versors +glms_euler_xyz_quat_rh(vec3s angles) { + versors dest; + glm_euler_xyz_quat_rh(angles.raw, dest.raw); + return dest; +} + +/*! + * @brief creates NEW quaternion using rotation angles and does + * rotations in x z y order in right hand (roll yaw pitch) + * + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion + */ +CGLM_INLINE +versors +glms_euler_xzy_quat_rh(vec3s angles) { + versors dest; + glm_euler_xzy_quat_rh(angles.raw, dest.raw); + return dest; +} + +/*! + * @brief creates NEW quaternion using rotation angles and does + * rotations in y x z order in right hand (pitch roll yaw) + * + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion + */ +CGLM_INLINE +versors +glms_euler_yxz_quat_rh(vec3s angles) { + versors dest; + glm_euler_yxz_quat_rh(angles.raw, dest.raw); + return dest; +} + +/*! + * @brief creates NEW quaternion using rotation angles and does + * rotations in y z x order in right hand (pitch yaw roll) + * + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion + */ +CGLM_INLINE +versors +glms_euler_yzx_quat_rh(vec3s angles) { + versors dest; + glm_euler_yzx_quat_rh(angles.raw, dest.raw); + return dest; +} + +/*! + * @brief creates NEW quaternion using rotation angles and does + * rotations in z x y order in right hand (yaw roll pitch) + * + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion + */ +CGLM_INLINE +versors +glms_euler_zxy_quat_rh(vec3s angles) { + versors dest; + glm_euler_zxy_quat_rh(angles.raw, dest.raw); + return dest; +} + +/*! + * @brief creates NEW quaternion using rotation angles and does + * rotations in z y x order in right hand (yaw pitch roll) + * + * @param[in] angles angles x y z (radians) + * @param[out] dest quaternion + */ +CGLM_INLINE +versors +glms_euler_zyx_quat_rh(vec3s angles) { + versors dest; + glm_euler_zyx_quat_rh(angles.raw, dest.raw); + return dest; +} + + +#endif /* cglms_euler_to_quat_rh_h */