/////////////////////////////////////////////////////////////////////////////////////////////////// // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) /////////////////////////////////////////////////////////////////////////////////////////////////// // Created : 2009-04-29 // Updated : 2009-04-29 // Licence : This source is under MIT License // File : glm/gtc/matrix_transform.hpp /////////////////////////////////////////////////////////////////////////////////////////////////// // Dependency: // - GLM core // - GLM_GTC_matrix_operation /////////////////////////////////////////////////////////////////////////////////////////////////// #ifndef glm_gtc_matrix_transform #define glm_gtc_matrix_transform // Dependency: #include "../glm.hpp" #if(defined(GLM_MESSAGES) && !defined(glm_ext)) # pragma message("GLM: GLM_GTC_matrix_transform extension included") #endif namespace glm{ namespace gtc{ namespace matrix_transform ///< GLM_GTC_matrix_transform extension: Add transformation matrices { /// \addtogroup gtc_matrix_transform ///@{ //! Builds a translation 4 * 4 matrix created from a vector of 3 components. //! From GLM_GTC_matrix_transform extension. template detail::tmat4x4 translate( detail::tmat4x4 const & m, detail::tvec3 const & v); //! Builds a rotation 4 * 4 matrix created from an axis vector and an angle expressed in degrees. //! From GLM_GTC_matrix_transform extension. template detail::tmat4x4 rotate( detail::tmat4x4 const & m, T const & angle, detail::tvec3 const & v); //! Builds a scale 4 * 4 matrix created from 3 scalars. //! From GLM_GTC_matrix_transform extension. template detail::tmat4x4 scale( detail::tmat4x4 const & m, detail::tvec3 const & v); //! Creates a matrix for an orthographic parallel viewing volume. //! From GLM_GTC_matrix_transform extension. template detail::tmat4x4 ortho( T const & left, T const & right, T const & bottom, T const & top, T const & zNear, T const & zFar); //! Creates a matrix for projecting two-dimensional coordinates onto the screen. //! From GLM_GTC_matrix_transform extension. template detail::tmat4x4 ortho( T const & left, T const & right, T const & bottom, T const & top); //! Creates a frustum matrix. //! From GLM_GTC_matrix_transform extension. template detail::tmat4x4 frustum( T const & left, T const & right, T const & bottom, T const & top, T const & nearVal, T const & farVal); //! Creates a matrix for a symetric perspective-view frustum. //! From GLM_GTC_matrix_transform extension. template detail::tmat4x4 perspective( T const & fovy, T const & aspect, T const & zNear, T const & zFar); //! Builds a perspective projection matrix based on a field of view //! From GLM_GTC_matrix_transform extension. template detail::tmat4x4 perspectiveFov( valType const & fov, valType const & width, valType const & height, valType const & zNear, valType const & zFar); //! Creates a matrix for a symmetric perspective-view frustum with far plane at infinite . //! From GLM_GTC_matrix_transform extension. template detail::tmat4x4 infinitePerspective( T fovy, T aspect, T zNear); //! Creates a matrix for a symmetric perspective-view frustum with far plane at infinite for graphics hardware that doesn't support depth clamping. //! From GLM_GTC_matrix_transform extension. template detail::tmat4x4 tweakedInfinitePerspective( T fovy, T aspect, T zNear); //! Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates. //! From GLM_GTC_matrix_transform extension. template detail::tvec3 project( detail::tvec3 const & obj, detail::tmat4x4 const & model, detail::tmat4x4 const & proj, detail::tvec4 const & viewport); //! Map the specified window coordinates (win.x, win.y, win.z) into object coordinates. //! From GLM_GTC_matrix_transform extension. template detail::tvec3 unProject( detail::tvec3 const & win, detail::tmat4x4 const & model, detail::tmat4x4 const & proj, detail::tvec4 const & viewport); //! Define a picking region //! From GLM_GTC_matrix_transform extension. template detail::tmat4x4 pickMatrix( detail::tvec2 const & center, detail::tvec2 const & delta, detail::tvec4 const & viewport); //! Build a look at view matrix. //! From GLM_GTC_matrix_transform extension. template detail::tmat4x4 lookAt( detail::tvec3 const & eye, detail::tvec3 const & center, detail::tvec3 const & up); ///@} }//namespace matrix_transform }//namespace gtc }//namespace glm #include "matrix_transform.inl" namespace glm{using namespace gtc::matrix_transform;} #endif//glm_gtc_matrix_transform