00001
00002
00004
00005
00006
00007
00009
00010
00011
00013
00014 #ifndef glm_gtc_matrix_transform
00015 #define glm_gtc_matrix_transform
00016
00017
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 }
00151 }
00152 }
00153
00154 #include "matrix_transform.inl"
00155
00156 namespace glm{using namespace gtc::matrix_transform;}
00157
00158 #endif//glm_gtc_matrix_transform