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 {
00026         namespace test{
00027                 bool main_gtc_matrix_transform();
00028         }//namespace test
00029 
00030         namespace gtc{
00032         namespace matrix_transform
00033         {
00036 
00039                 template <typename T> 
00040                 detail::tmat4x4<T> translate(
00041                         detail::tmat4x4<T> const & m,
00042                         detail::tvec3<T> const & v);
00043                 
00046                 template <typename T> 
00047                 detail::tmat4x4<T> rotate(
00048                         detail::tmat4x4<T> const & m,
00049                         T const & angle, 
00050                         detail::tvec3<T> const & v);
00051 
00054                 template <typename T> 
00055                 detail::tmat4x4<T> scale(
00056                         detail::tmat4x4<T> const & m,
00057                         detail::tvec3<T> const & v);
00058 
00061                 template <typename T> 
00062                 detail::tmat4x4<T> ortho(
00063                         T const & left, 
00064                         T const & right, 
00065                         T const & bottom, 
00066                         T const & top, 
00067                         T const & zNear, 
00068                         T const & zFar);
00069 
00072         template <typename T> 
00073                 detail::tmat4x4<T> ortho(
00074                         T const & left, 
00075                         T const & right, 
00076                         T const & bottom, 
00077                         T const & top);
00078 
00081                 template <typename T> 
00082                 detail::tmat4x4<T> frustum(
00083                         T const & left, 
00084                         T const & right, 
00085                         T const & bottom, 
00086                         T const & top, 
00087                         T const & nearVal, 
00088                         T const & farVal);
00089 
00092                 template <typename T> 
00093                 detail::tmat4x4<T> perspective(
00094                         T const & fovy, 
00095                         T const & aspect, 
00096                         T const & zNear, 
00097                         T const & zFar);
00098 
00101                 template <typename valType> 
00102                 detail::tmat4x4<valType> perspectiveFov(
00103                         valType const & fov, 
00104                         valType const & width, 
00105                         valType const & height, 
00106                         valType const & zNear, 
00107                         valType const & zFar);
00108 
00111         template <typename T> 
00112                 detail::tmat4x4<T> infinitePerspective(
00113                         T fovy, T aspect, T zNear);
00114 
00117         template <typename T> 
00118                 detail::tmat4x4<T> tweakedInfinitePerspective(
00119                         T fovy, T aspect, T zNear);
00120 
00123                 template <typename T, typename U> 
00124                 detail::tvec3<T> project(
00125                         detail::tvec3<T> const & obj, 
00126                         detail::tmat4x4<T> const & model, 
00127                         detail::tmat4x4<T> const & proj, 
00128                         detail::tvec4<U> const & viewport);
00129 
00132                 template <typename T, typename U> 
00133                 detail::tvec3<T> unProject(
00134                         detail::tvec3<T> const & win, 
00135                         detail::tmat4x4<T> const & model, 
00136                         detail::tmat4x4<T> const & proj, 
00137                         detail::tvec4<U> const & viewport);
00138 
00141                 template <typename T, typename U> 
00142                 detail::tmat4x4<T> pickMatrix(
00143                         detail::tvec2<T> const & center, 
00144                         detail::tvec2<T> const & delta, 
00145                         detail::tvec4<U> const & viewport);
00146 
00149                 template <typename T> 
00150                 detail::tmat4x4<T> lookAt(
00151                         detail::tvec3<T> const & eye, 
00152                         detail::tvec3<T> const & center, 
00153                         detail::tvec3<T> const & up);
00154 
00156         }//namespace matrix_transform
00157         }//namespace gtc
00158 }//namespace glm
00159 
00160 #include "matrix_transform.inl"
00161 
00162 namespace glm{using namespace gtc::matrix_transform;}
00163 
00164 #endif//glm_gtc_matrix_transform