matrix_transform.hpp
Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 
00038 
00039 
00040 
00041 
00042 
00043 
00044 
00045 
00046 #ifndef GLM_GTC_matrix_transform
00047 #define GLM_GTC_matrix_transform GLM_VERSION
00048 
00049 // Dependency:
00050 #include "../glm.hpp"
00051 
00052 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
00053 #       pragma message("GLM: GLM_GTC_matrix_transform extension included")
00054 #endif
00055 
00056 namespace glm
00057 {
00060 
00081         template <typename T> 
00082         detail::tmat4x4<T> translate(
00083                 detail::tmat4x4<T> const & m,
00084                 detail::tvec3<T> const & v);
00085                 
00097         template <typename T> 
00098         detail::tmat4x4<T> rotate(
00099                 detail::tmat4x4<T> const & m,
00100                 T const & angle, 
00101                 detail::tvec3<T> const & axis);
00102 
00113         template <typename T> 
00114         detail::tmat4x4<T> scale(
00115                 detail::tmat4x4<T> const & m,
00116                 detail::tvec3<T> const & v);
00117 
00129         template <typename T> 
00130         detail::tmat4x4<T> ortho(
00131                 T const & left, 
00132                 T const & right, 
00133                 T const & bottom, 
00134                 T const & top, 
00135                 T const & zNear, 
00136                 T const & zFar);
00137 
00147         template <typename T> 
00148         detail::tmat4x4<T> ortho(
00149                 T const & left, 
00150                 T const & right, 
00151                 T const & bottom, 
00152                 T const & top);
00153 
00164         template <typename T> 
00165         detail::tmat4x4<T> frustum(
00166                 T const & left, 
00167                 T const & right, 
00168                 T const & bottom, 
00169                 T const & top, 
00170                 T const & near, 
00171                 T const & far);
00172 
00181         template <typename T> 
00182         detail::tmat4x4<T> perspective(
00183                 T const & fovy, 
00184                 T const & aspect, 
00185                 T const & near, 
00186                 T const & far);
00187 
00197         template <typename valType> 
00198         detail::tmat4x4<valType> perspectiveFov(
00199                 valType const & fov, 
00200                 valType const & width, 
00201                 valType const & height, 
00202                 valType const & near, 
00203                 valType const & far);
00204 
00212     template <typename T> 
00213         detail::tmat4x4<T> infinitePerspective(
00214                 T fovy, T aspect, T near);
00215 
00223     template <typename T> 
00224         detail::tmat4x4<T> tweakedInfinitePerspective(
00225                 T fovy, T aspect, T near);
00226 
00236         template <typename T, typename U> 
00237         detail::tvec3<T> project(
00238                 detail::tvec3<T> const & obj, 
00239                 detail::tmat4x4<T> const & model, 
00240                 detail::tmat4x4<T> const & proj, 
00241                 detail::tvec4<U> const & viewport);
00242 
00252         template <typename T, typename U> 
00253         detail::tvec3<T> unProject(
00254                 detail::tvec3<T> const & win, 
00255                 detail::tmat4x4<T> const & model, 
00256                 detail::tmat4x4<T> const & proj, 
00257                 detail::tvec4<U> const & viewport);
00258 
00267         template <typename T, typename U> 
00268         detail::tmat4x4<T> pickMatrix(
00269                 detail::tvec2<T> const & center, 
00270                 detail::tvec2<T> const & delta, 
00271                 detail::tvec4<U> const & viewport);
00272 
00280         template <typename T> 
00281         detail::tmat4x4<T> lookAt(
00282                 detail::tvec3<T> const & eye, 
00283                 detail::tvec3<T> const & center, 
00284                 detail::tvec3<T> const & up);
00285 
00287 }//namespace glm
00288 
00289 #include "matrix_transform.inl"
00290 
00291 #endif//GLM_GTC_matrix_transform