matrix_transform.hpp
00001 
00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
00004 // Created : 2009-04-29
00005 // Updated : 2009-04-29
00006 // Licence : This source is under MIT License
00007 // File    : glm/gtc/matrix_transform.hpp
00009 // Dependency:
00010 // - GLM core
00011 // - GLM_GTC_matrix_operation
00013 
00014 #ifndef glm_gtc_matrix_transform
00015 #define glm_gtc_matrix_transform
00016 
00017 // Dependency:
00018 #include "../glm.hpp"
00019 
00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
00021 #       pragma message("GLM: GLM_GTC_matrix_transform extension included")
00022 #endif
00023 
00024 namespace glm{
00025 namespace gtc{
00026 namespace matrix_transform 
00027 {
00030 
00033         template <typename T> 
00034         detail::tmat4x4<T> translate(
00035                 detail::tmat4x4<T> const & m,
00036                 detail::tvec3<T> const & v);
00037                 
00040         template <typename T> 
00041         detail::tmat4x4<T> rotate(
00042                 detail::tmat4x4<T> const & m,
00043                 T const & angle, 
00044                 detail::tvec3<T> const & v);
00045 
00048         template <typename T> 
00049         detail::tmat4x4<T> scale(
00050                 detail::tmat4x4<T> const & m,
00051                 detail::tvec3<T> const & v);
00052 
00055         template <typename T> 
00056         detail::tmat4x4<T> ortho(
00057                 T const & left, 
00058                 T const & right, 
00059                 T const & bottom, 
00060                 T const & top, 
00061                 T const & zNear, 
00062                 T const & zFar);
00063 
00066     template <typename T> 
00067         detail::tmat4x4<T> ortho(
00068                 T const & left, 
00069                 T const & right, 
00070                 T const & bottom, 
00071                 T const & top);
00072 
00075         template <typename T> 
00076         detail::tmat4x4<T> frustum(
00077                 T const & left, 
00078                 T const & right, 
00079                 T const & bottom, 
00080                 T const & top, 
00081                 T const & nearVal, 
00082                 T const & farVal);
00083 
00086         template <typename T> 
00087         detail::tmat4x4<T> perspective(
00088                 T const & fovy, 
00089                 T const & aspect, 
00090                 T const & zNear, 
00091                 T const & zFar);
00092 
00095         template <typename valType> 
00096         detail::tmat4x4<valType> perspectiveFov(
00097                 valType const & fov, 
00098                 valType const & width, 
00099                 valType const & height, 
00100                 valType const & zNear, 
00101                 valType const & zFar);
00102 
00105     template <typename T> 
00106         detail::tmat4x4<T> infinitePerspective(
00107                 T fovy, T aspect, T zNear);
00108 
00111     template <typename T> 
00112         detail::tmat4x4<T> tweakedInfinitePerspective(
00113                 T fovy, T aspect, T zNear);
00114 
00117         template <typename T, typename U> 
00118         detail::tvec3<T> project(
00119                 detail::tvec3<T> const & obj, 
00120                 detail::tmat4x4<T> const & model, 
00121                 detail::tmat4x4<T> const & proj, 
00122                 detail::tvec4<U> const & viewport);
00123 
00126         template <typename T, typename U> 
00127         detail::tvec3<T> unProject(
00128                 detail::tvec3<T> const & win, 
00129                 detail::tmat4x4<T> const & model, 
00130                 detail::tmat4x4<T> const & proj, 
00131                 detail::tvec4<U> const & viewport);
00132 
00135         template <typename T, typename U> 
00136         detail::tmat4x4<T> pickMatrix(
00137                 detail::tvec2<T> const & center, 
00138                 detail::tvec2<T> const & delta, 
00139                 detail::tvec4<U> const & viewport);
00140 
00143         template <typename T> 
00144         detail::tmat4x4<T> lookAt(
00145                 detail::tvec3<T> const & eye, 
00146                 detail::tvec3<T> const & center, 
00147                 detail::tvec3<T> const & up);
00148 
00150 }//namespace matrix_transform
00151 }//namespace gtc
00152 }//namespace glm
00153 
00154 #include "matrix_transform.inl"
00155 
00156 namespace glm{using namespace gtc::matrix_transform;}
00157 
00158 #endif//glm_gtc_matrix_transform