euler_to_quat_lh.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. /*
  2. * Copyright (c), Recep Aslantas.
  3. *
  4. * MIT License (MIT), http://opensource.org/licenses/MIT
  5. * Full license can be found in the LICENSE file
  6. */
  7. /*
  8. Functions:
  9. CGLM_INLINE void glms_euler_xyz_quat_lh(vec3 angles, versor dest);
  10. CGLM_INLINE void glms_euler_xzy_quat_lh(vec3 angles, versor dest);
  11. CGLM_INLINE void glms_euler_yxz_quat_lh(vec3 angles, versor dest);
  12. CGLM_INLINE void glms_euler_yzx_quat_lh(vec3 angles, versor dest);
  13. CGLM_INLINE void glms_euler_zxy_quat_lh(vec3 angles, versor dest);
  14. CGLM_INLINE void glms_euler_zyx_quat_lh(vec3 angles, versor dest);
  15. */
  16. #ifndef cglms_euler_to_quat_lh_h
  17. #define cglms_euler_to_quat_lh_h
  18. #include "../common.h"
  19. /*!
  20. * @brief creates NEW quaternion using rotation angles and does
  21. * rotations in x y z order in left hand (roll pitch yaw)
  22. *
  23. * @param[in] angles angles x y z (radians)
  24. * @param[out] dest quaternion
  25. */
  26. CGLM_INLINE
  27. versors
  28. glms_euler_xyz_quat_lh(vec3s angles) {
  29. versors dest;
  30. glm_euler_xyz_quat_lh(angles.raw, dest.raw);
  31. return dest;
  32. }
  33. /*!
  34. * @brief creates NEW quaternion using rotation angles and does
  35. * rotations in x z y order in left hand (roll yaw pitch)
  36. *
  37. * @param[in] angles angles x y z (radians)
  38. * @param[out] dest quaternion
  39. */
  40. CGLM_INLINE
  41. versors
  42. glms_euler_xzy_quat_lh(vec3s angles) {
  43. versors dest;
  44. glm_euler_xzy_quat_lh(angles.raw, dest.raw);
  45. return dest;
  46. }
  47. /*!
  48. * @brief creates NEW quaternion using rotation angles and does
  49. * rotations in y x z order in left hand (pitch roll yaw)
  50. *
  51. * @param[in] angles angles x y z (radians)
  52. * @param[out] dest quaternion
  53. */
  54. CGLM_INLINE
  55. versors
  56. glms_euler_yxz_quat_lh(vec3s angles) {
  57. versors dest;
  58. glm_euler_yxz_quat_lh(angles.raw, dest.raw);
  59. return dest;
  60. }
  61. /*!
  62. * @brief creates NEW quaternion using rotation angles and does
  63. * rotations in y z x order in left hand (pitch yaw roll)
  64. *
  65. * @param[in] angles angles x y z (radians)
  66. * @param[out] dest quaternion
  67. */
  68. CGLM_INLINE
  69. versors
  70. glms_euler_yzx_quat_lh(vec3s angles) {
  71. versors dest;
  72. glm_euler_yzx_quat_lh(angles.raw, dest.raw);
  73. return dest;
  74. }
  75. /*!
  76. * @brief creates NEW quaternion using rotation angles and does
  77. * rotations in z x y order in left hand (yaw roll pitch)
  78. *
  79. * @param[in] angles angles x y z (radians)
  80. * @param[out] dest quaternion
  81. */
  82. CGLM_INLINE
  83. versors
  84. glms_euler_zxy_quat_lh(vec3s angles) {
  85. versors dest;
  86. glm_euler_zxy_quat_lh(angles.raw, dest.raw);
  87. return dest;
  88. }
  89. /*!
  90. * @brief creates NEW quaternion using rotation angles and does
  91. * rotations in z y x order in left hand (yaw pitch roll)
  92. *
  93. * @param[in] angles angles x y z (radians)
  94. * @param[out] dest quaternion
  95. */
  96. CGLM_INLINE
  97. versors
  98. glms_euler_zyx_quat_lh(vec3s angles) {
  99. versors dest;
  100. glm_euler_zyx_quat_lh(angles.raw, dest.raw);
  101. return dest;
  102. }
  103. #endif /* cglms_euler_to_quat_lh_h */