/// @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" |