• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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