00001
00002
00004
00005
00006
00007
00009
00010
00011
00013
00014
00015
00017
00018 #ifndef glm_gtx_euler_angles
00019 #define glm_gtx_euler_angles
00020
00021
00022 #include "../glm.hpp"
00023 #include "../gtc/half_float.hpp"
00024
00025 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
00026 # pragma message("GLM: GLM_GTX_euler_angles extension included")
00027 #endif
00028
00029 namespace glm
00030 {
00031 namespace gtx{
00033 namespace euler_angles
00034 {
00037
00040 template <typename valType>
00041 detail::tmat4x4<valType> eulerAngleX(
00042 valType const & angleX);
00043
00046 template <typename valType>
00047 detail::tmat4x4<valType> eulerAngleY(
00048 valType const & angleY);
00049
00052 template <typename valType>
00053 detail::tmat4x4<valType> eulerAngleZ(
00054 valType const & angleZ);
00055
00058 template <typename valType>
00059 detail::tmat4x4<valType> eulerAngleXY(
00060 valType const & angleX,
00061 valType const & angleY);
00062
00065 template <typename valType>
00066 detail::tmat4x4<valType> eulerAngleYX(
00067 valType const & angleY,
00068 valType const & angleX);
00069
00072 template <typename valType>
00073 detail::tmat4x4<valType> eulerAngleXZ(
00074 valType const & angleX,
00075 valType const & angleZ);
00076
00079 template <typename valType>
00080 detail::tmat4x4<valType> eulerAngleZX(
00081 valType const & angleZ,
00082 valType const & angleX);
00083
00086 template <typename valType>
00087 detail::tmat4x4<valType> eulerAngleYZ(
00088 valType const & angleY,
00089 valType const & angleZ);
00090
00093 template <typename valType>
00094 detail::tmat4x4<valType> eulerAngleZY(
00095 valType const & angleZ,
00096 valType const & angleY);
00097
00100 template <typename valType>
00101 detail::tmat4x4<valType> eulerAngleYXZ(
00102 valType const & yaw,
00103 valType const & pitch,
00104 valType const & roll);
00105
00108 template <typename valType>
00109 detail::tmat4x4<valType> yawPitchRoll(
00110 valType const & yaw,
00111 valType const & pitch,
00112 valType const & roll);
00113
00116 template <typename T>
00117 detail::tmat2x2<T> orientate2(T const & angle);
00118
00121 template <typename T>
00122 detail::tmat3x3<T> orientate3(T const & angle);
00123
00126 template <typename T>
00127 detail::tmat3x3<T> orientate3(detail::tvec3<T> const & angles);
00128
00131 template <typename T>
00132 detail::tmat4x4<T> orientate4(detail::tvec3<T> const & angles);
00133
00135 }
00136 }
00137 }
00138
00139 #include "euler_angles.inl"
00140
00141 namespace glm{using namespace gtx::euler_angles;}
00142
00143 #endif//glm_gtx_euler_angles