123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336 |
- /// @ref gtx_euler_angles
- /// @file glm/gtx/euler_angles.hpp
- ///
- /// @see core (dependence)
- ///
- /// @defgroup gtx_euler_angles GLM_GTX_euler_angles
- /// @ingroup gtx
- ///
- /// Include <glm/gtx/euler_angles.hpp> to use the features of this extension.
- ///
- /// Build matrices from Euler angles.
- ///
- /// Extraction of Euler angles from rotation matrix.
- /// Based on the original paper 2014 Mike Day - Extracting Euler Angles from a Rotation Matrix.
- #pragma once
- // Dependency:
- #include "../glm.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_euler_angles is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
- #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
- # pragma message("GLM: GLM_GTX_euler_angles extension included")
- #endif
- namespace glm
- {
- /// @addtogroup gtx_euler_angles
- /// @{
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle X.
- /// @see gtx_euler_angles
- template<typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleX(
- T const& angleX);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Y.
- /// @see gtx_euler_angles
- template<typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleY(
- T const& angleY);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Z.
- /// @see gtx_euler_angles
- template<typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZ(
- T const& angleZ);
- /// Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about X-axis.
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> derivedEulerAngleX(
- T const & angleX, T const & angularVelocityX);
- /// Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about Y-axis.
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> derivedEulerAngleY(
- T const & angleY, T const & angularVelocityY);
- /// Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about Z-axis.
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> derivedEulerAngleZ(
- T const & angleZ, T const & angularVelocityZ);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y).
- /// @see gtx_euler_angles
- template<typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXY(
- T const& angleX,
- T const& angleY);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X).
- /// @see gtx_euler_angles
- template<typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYX(
- T const& angleY,
- T const& angleX);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z).
- /// @see gtx_euler_angles
- template<typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXZ(
- T const& angleX,
- T const& angleZ);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X).
- /// @see gtx_euler_angles
- template<typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZX(
- T const& angle,
- T const& angleX);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z).
- /// @see gtx_euler_angles
- template<typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYZ(
- T const& angleY,
- T const& angleZ);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y).
- /// @see gtx_euler_angles
- template<typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZY(
- T const& angleZ,
- T const& angleY);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y * Z).
- /// @see gtx_euler_angles
- template<typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXYZ(
- T const& t1,
- T const& t2,
- T const& t3);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
- /// @see gtx_euler_angles
- template<typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYXZ(
- T const& yaw,
- T const& pitch,
- T const& roll);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z * X).
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXZX(
- T const & t1,
- T const & t2,
- T const & t3);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y * X).
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXYX(
- T const & t1,
- T const & t2,
- T const & t3);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Y).
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYXY(
- T const & t1,
- T const & t2,
- T const & t3);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z * Y).
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYZY(
- T const & t1,
- T const & t2,
- T const & t3);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y * Z).
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZYZ(
- T const & t1,
- T const & t2,
- T const & t3);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X * Z).
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZXZ(
- T const & t1,
- T const & t2,
- T const & t3);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z * Y).
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXZY(
- T const & t1,
- T const & t2,
- T const & t3);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z * X).
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYZX(
- T const & t1,
- T const & t2,
- T const & t3);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y * X).
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZYX(
- T const & t1,
- T const & t2,
- T const & t3);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X * Y).
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZXY(
- T const & t1,
- T const & t2,
- T const & t3);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
- /// @see gtx_euler_angles
- template<typename T>
- GLM_FUNC_DECL mat<4, 4, T, defaultp> yawPitchRoll(
- T const& yaw,
- T const& pitch,
- T const& roll);
- /// Creates a 2D 2 * 2 rotation matrix from an euler angle.
- /// @see gtx_euler_angles
- template<typename T>
- GLM_FUNC_DECL mat<2, 2, T, defaultp> orientate2(T const& angle);
- /// Creates a 2D 4 * 4 homogeneous rotation matrix from an euler angle.
- /// @see gtx_euler_angles
- template<typename T>
- GLM_FUNC_DECL mat<3, 3, T, defaultp> orientate3(T const& angle);
- /// Creates a 3D 3 * 3 rotation matrix from euler angles (Y * X * Z).
- /// @see gtx_euler_angles
- template<typename T, qualifier Q>
- GLM_FUNC_DECL mat<3, 3, T, Q> orientate3(vec<3, T, Q> const& angles);
- /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
- /// @see gtx_euler_angles
- template<typename T, qualifier Q>
- GLM_FUNC_DECL mat<4, 4, T, Q> orientate4(vec<3, T, Q> const& angles);
- /// Extracts the (X * Y * Z) Euler angles from the rotation matrix M
- /// @see gtx_euler_angles
- template<typename T>
- GLM_FUNC_DECL void extractEulerAngleXYZ(mat<4, 4, T, defaultp> const& M,
- T & t1,
- T & t2,
- T & t3);
- /// Extracts the (Y * X * Z) Euler angles from the rotation matrix M
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL void extractEulerAngleYXZ(mat<4, 4, T, defaultp> const & M,
- T & t1,
- T & t2,
- T & t3);
- /// Extracts the (X * Z * X) Euler angles from the rotation matrix M
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL void extractEulerAngleXZX(mat<4, 4, T, defaultp> const & M,
- T & t1,
- T & t2,
- T & t3);
- /// Extracts the (X * Y * X) Euler angles from the rotation matrix M
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL void extractEulerAngleXYX(mat<4, 4, T, defaultp> const & M,
- T & t1,
- T & t2,
- T & t3);
- /// Extracts the (Y * X * Y) Euler angles from the rotation matrix M
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL void extractEulerAngleYXY(mat<4, 4, T, defaultp> const & M,
- T & t1,
- T & t2,
- T & t3);
- /// Extracts the (Y * Z * Y) Euler angles from the rotation matrix M
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL void extractEulerAngleYZY(mat<4, 4, T, defaultp> const & M,
- T & t1,
- T & t2,
- T & t3);
- /// Extracts the (Z * Y * Z) Euler angles from the rotation matrix M
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL void extractEulerAngleZYZ(mat<4, 4, T, defaultp> const & M,
- T & t1,
- T & t2,
- T & t3);
- /// Extracts the (Z * X * Z) Euler angles from the rotation matrix M
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL void extractEulerAngleZXZ(mat<4, 4, T, defaultp> const & M,
- T & t1,
- T & t2,
- T & t3);
- /// Extracts the (X * Z * Y) Euler angles from the rotation matrix M
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL void extractEulerAngleXZY(mat<4, 4, T, defaultp> const & M,
- T & t1,
- T & t2,
- T & t3);
- /// Extracts the (Y * Z * X) Euler angles from the rotation matrix M
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL void extractEulerAngleYZX(mat<4, 4, T, defaultp> const & M,
- T & t1,
- T & t2,
- T & t3);
- /// Extracts the (Z * Y * X) Euler angles from the rotation matrix M
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL void extractEulerAngleZYX(mat<4, 4, T, defaultp> const & M,
- T & t1,
- T & t2,
- T & t3);
- /// Extracts the (Z * X * Y) Euler angles from the rotation matrix M
- /// @see gtx_euler_angles
- template <typename T>
- GLM_FUNC_DECL void extractEulerAngleZXY(mat<4, 4, T, defaultp> const & M,
- T & t1,
- T & t2,
- T & t3);
- /// @}
- }//namespace glm
- #include "euler_angles.inl"
|