1 /// @ref gtx_euler_angles 2 /// @file glm/gtx/euler_angles.hpp 3 /// 4 /// @see core (dependence) 5 /// @see gtc_half_float (dependence) 6 /// 7 /// @defgroup gtx_euler_angles GLM_GTX_euler_angles 8 /// @ingroup gtx 9 /// 10 /// @brief Build matrices from Euler angles. 11 /// 12 /// <glm/gtx/euler_angles.hpp> need to be included to use these functionalities. 13 14 #pragma once 15 16 // Dependency: 17 #include "../glm.hpp" 18 19 #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED) 20 # pragma message("GLM: GLM_GTX_euler_angles extension included") 21 #endif 22 23 namespace glm 24 { 25 /// @addtogroup gtx_euler_angles 26 /// @{ 27 28 /// Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle X. 29 /// @see gtx_euler_angles 30 template <typename T> 31 GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleX( 32 T const & angleX); 33 34 /// Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Y. 35 /// @see gtx_euler_angles 36 template <typename T> 37 GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleY( 38 T const & angleY); 39 40 /// Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Z. 41 /// @see gtx_euler_angles 42 template <typename T> 43 GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleZ( 44 T const & angleZ); 45 46 /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y). 47 /// @see gtx_euler_angles 48 template <typename T> 49 GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleXY( 50 T const & angleX, 51 T const & angleY); 52 53 /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X). 54 /// @see gtx_euler_angles 55 template <typename T> 56 GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleYX( 57 T const & angleY, 58 T const & angleX); 59 60 /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z). 61 /// @see gtx_euler_angles 62 template <typename T> 63 GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleXZ( 64 T const & angleX, 65 T const & angleZ); 66 67 /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X). 68 /// @see gtx_euler_angles 69 template <typename T> 70 GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleZX( 71 T const & angle, 72 T const & angleX); 73 74 /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z). 75 /// @see gtx_euler_angles 76 template <typename T> 77 GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleYZ( 78 T const & angleY, 79 T const & angleZ); 80 81 /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y). 82 /// @see gtx_euler_angles 83 template <typename T> 84 GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleZY( 85 T const & angleZ, 86 T const & angleY); 87 88 /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y * Z). 89 /// @see gtx_euler_angles 90 template <typename T> 91 GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleXYZ( 92 T const & t1, 93 T const & t2, 94 T const & t3); 95 96 /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z). 97 /// @see gtx_euler_angles 98 template <typename T> 99 GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleYXZ( 100 T const & yaw, 101 T const & pitch, 102 T const & roll); 103 104 /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z). 105 /// @see gtx_euler_angles 106 template <typename T> 107 GLM_FUNC_DECL tmat4x4<T, defaultp> yawPitchRoll( 108 T const & yaw, 109 T const & pitch, 110 T const & roll); 111 112 /// Creates a 2D 2 * 2 rotation matrix from an euler angle. 113 /// @see gtx_euler_angles 114 template <typename T> 115 GLM_FUNC_DECL tmat2x2<T, defaultp> orientate2(T const & angle); 116 117 /// Creates a 2D 4 * 4 homogeneous rotation matrix from an euler angle. 118 /// @see gtx_euler_angles 119 template <typename T> 120 GLM_FUNC_DECL tmat3x3<T, defaultp> orientate3(T const & angle); 121 122 /// Creates a 3D 3 * 3 rotation matrix from euler angles (Y * X * Z). 123 /// @see gtx_euler_angles 124 template <typename T, precision P> 125 GLM_FUNC_DECL tmat3x3<T, P> orientate3(tvec3<T, P> const & angles); 126 127 /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z). 128 /// @see gtx_euler_angles 129 template <typename T, precision P> 130 GLM_FUNC_DECL tmat4x4<T, P> orientate4(tvec3<T, P> const & angles); 131 132 /// Extracts the (X * Y * Z) Euler angles from the rotation matrix M 133 /// @see gtx_euler_angles 134 template <typename T> 135 GLM_FUNC_DECL void extractEulerAngleXYZ(tmat4x4<T, defaultp> const & M, 136 T & t1, 137 T & t2, 138 T & t3); 139 140 /// @} 141 }//namespace glm 142 143 #include "euler_angles.inl" 144