| /// @ref gtx_transform2 | |
| /// @file glm/gtx/transform2.hpp | |
| /// | |
| /// @see core (dependence) | |
| /// @see gtx_transform (dependence) | |
| /// | |
| /// @defgroup gtx_transform2 GLM_GTX_transform2 | |
| /// @ingroup gtx | |
| /// | |
| /// @brief Add extra transformation matrices | |
| /// | |
| /// <glm/gtx/transform2.hpp> need to be included to use these functionalities. | |
| #pragma once | |
| // Dependency: | |
| #include "../glm.hpp" | |
| #include "../gtx/transform.hpp" | |
| #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED) | |
| # pragma message("GLM: GLM_GTX_transform2 extension included") | |
| #endif | |
| namespace glm | |
| { | |
| /// @addtogroup gtx_transform2 | |
| /// @{ | |
| //! Transforms a matrix with a shearing on X axis. | |
| //! From GLM_GTX_transform2 extension. | |
| template <typename T, precision P> | |
| GLM_FUNC_DECL tmat3x3<T, P> shearX2D( | |
| tmat3x3<T, P> const & m, | |
| T y); | |
| //! Transforms a matrix with a shearing on Y axis. | |
| //! From GLM_GTX_transform2 extension. | |
| template <typename T, precision P> | |
| GLM_FUNC_DECL tmat3x3<T, P> shearY2D( | |
| tmat3x3<T, P> const & m, | |
| T x); | |
| //! Transforms a matrix with a shearing on X axis | |
| //! From GLM_GTX_transform2 extension. | |
| template <typename T, precision P> | |
| GLM_FUNC_DECL tmat4x4<T, P> shearX3D( | |
| const tmat4x4<T, P> & m, | |
| T y, | |
| T z); | |
| //! Transforms a matrix with a shearing on Y axis. | |
| //! From GLM_GTX_transform2 extension. | |
| template <typename T, precision P> | |
| GLM_FUNC_DECL tmat4x4<T, P> shearY3D( | |
| const tmat4x4<T, P> & m, | |
| T x, | |
| T z); | |
| //! Transforms a matrix with a shearing on Z axis. | |
| //! From GLM_GTX_transform2 extension. | |
| template <typename T, precision P> | |
| GLM_FUNC_DECL tmat4x4<T, P> shearZ3D( | |
| const tmat4x4<T, P> & m, | |
| T x, | |
| T y); | |
| //template <typename T> GLM_FUNC_QUALIFIER tmat4x4<T, P> shear(const tmat4x4<T, P> & m, shearPlane, planePoint, angle) | |
| // Identity + tan(angle) * cross(Normal, OnPlaneVector) 0 | |
| // - dot(PointOnPlane, normal) * OnPlaneVector 1 | |
| // Reflect functions seem to don't work | |
| //template <typename T> tmat3x3<T, P> reflect2D(const tmat3x3<T, P> & m, const tvec3<T, P>& normal){return reflect2DGTX(m, normal);} //!< \brief Build a reflection matrix (from GLM_GTX_transform2 extension) | |
| //template <typename T> tmat4x4<T, P> reflect3D(const tmat4x4<T, P> & m, const tvec3<T, P>& normal){return reflect3DGTX(m, normal);} //!< \brief Build a reflection matrix (from GLM_GTX_transform2 extension) | |
| //! Build planar projection matrix along normal axis. | |
| //! From GLM_GTX_transform2 extension. | |
| template <typename T, precision P> | |
| GLM_FUNC_DECL tmat3x3<T, P> proj2D( | |
| const tmat3x3<T, P> & m, | |
| const tvec3<T, P>& normal); | |
| //! Build planar projection matrix along normal axis. | |
| //! From GLM_GTX_transform2 extension. | |
| template <typename T, precision P> | |
| GLM_FUNC_DECL tmat4x4<T, P> proj3D( | |
| const tmat4x4<T, P> & m, | |
| const tvec3<T, P>& normal); | |
| //! Build a scale bias matrix. | |
| //! From GLM_GTX_transform2 extension. | |
| template <typename valType, precision P> | |
| GLM_FUNC_DECL tmat4x4<valType, P> scaleBias( | |
| valType scale, | |
| valType bias); | |
| //! Build a scale bias matrix. | |
| //! From GLM_GTX_transform2 extension. | |
| template <typename valType, precision P> | |
| GLM_FUNC_DECL tmat4x4<valType, P> scaleBias( | |
| tmat4x4<valType, P> const & m, | |
| valType scale, | |
| valType bias); | |
| /// @} | |
| }// namespace glm | |
| #include "transform2.inl" |