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 #pragma once
00047
00048
00049 #include "../mat4x4.hpp"
00050 #include "../vec2.hpp"
00051 #include "../vec3.hpp"
00052 #include "../vec4.hpp"
00053 #include "../gtc/constants.hpp"
00054
00055 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
00056 # pragma message("GLM: GLM_GTC_matrix_transform extension included")
00057 #endif
00058
00059 namespace glm
00060 {
00063
00084 template <typename T, precision P>
00085 GLM_FUNC_DECL detail::tmat4x4<T, P> translate(
00086 detail::tmat4x4<T, P> const & m,
00087 detail::tvec3<T, P> const & v);
00088
00100 template <typename T, precision P>
00101 GLM_FUNC_DECL detail::tmat4x4<T, P> rotate(
00102 detail::tmat4x4<T, P> const & m,
00103 T const & angle,
00104 detail::tvec3<T, P> const & axis);
00105
00116 template <typename T, precision P>
00117 GLM_FUNC_DECL detail::tmat4x4<T, P> scale(
00118 detail::tmat4x4<T, P> const & m,
00119 detail::tvec3<T, P> const & v);
00120
00132 template <typename T>
00133 GLM_FUNC_DECL detail::tmat4x4<T, defaultp> ortho(
00134 T const & left,
00135 T const & right,
00136 T const & bottom,
00137 T const & top,
00138 T const & zNear,
00139 T const & zFar);
00140
00150 template <typename T>
00151 GLM_FUNC_DECL detail::tmat4x4<T, defaultp> ortho(
00152 T const & left,
00153 T const & right,
00154 T const & bottom,
00155 T const & top);
00156
00167 template <typename T>
00168 GLM_FUNC_DECL detail::tmat4x4<T, defaultp> frustum(
00169 T const & left,
00170 T const & right,
00171 T const & bottom,
00172 T const & top,
00173 T const & near,
00174 T const & far);
00175
00184 template <typename T>
00185 GLM_FUNC_DECL detail::tmat4x4<T, defaultp> perspective(
00186 T const & fovy,
00187 T const & aspect,
00188 T const & near,
00189 T const & far);
00190
00200 template <typename T>
00201 GLM_FUNC_DECL detail::tmat4x4<T, defaultp> perspectiveFov(
00202 T const & fov,
00203 T const & width,
00204 T const & height,
00205 T const & near,
00206 T const & far);
00207
00215 template <typename T>
00216 GLM_FUNC_DECL detail::tmat4x4<T, defaultp> infinitePerspective(
00217 T fovy, T aspect, T near);
00218
00226 template <typename T>
00227 GLM_FUNC_DECL detail::tmat4x4<T, defaultp> tweakedInfinitePerspective(
00228 T fovy, T aspect, T near);
00229
00237 template <typename T>
00238 GLM_FUNC_DECL detail::tmat4x4<T, defaultp> tweakedInfinitePerspective(
00239 T fovy, T aspect, T near, T ep);
00240
00250 template <typename T, typename U, precision P>
00251 GLM_FUNC_DECL detail::tvec3<T, P> project(
00252 detail::tvec3<T, P> const & obj,
00253 detail::tmat4x4<T, P> const & model,
00254 detail::tmat4x4<T, P> const & proj,
00255 detail::tvec4<U, P> const & viewport);
00256
00266 template <typename T, typename U, precision P>
00267 GLM_FUNC_DECL detail::tvec3<T, P> unProject(
00268 detail::tvec3<T, P> const & win,
00269 detail::tmat4x4<T, P> const & model,
00270 detail::tmat4x4<T, P> const & proj,
00271 detail::tvec4<U, P> const & viewport);
00272
00281 template <typename T, precision P, typename U>
00282 GLM_FUNC_DECL detail::tmat4x4<T, P> pickMatrix(
00283 detail::tvec2<T, P> const & center,
00284 detail::tvec2<T, P> const & delta,
00285 detail::tvec4<U, P> const & viewport);
00286
00294 template <typename T, precision P>
00295 GLM_FUNC_DECL detail::tmat4x4<T, P> lookAt(
00296 detail::tvec3<T, P> const & eye,
00297 detail::tvec3<T, P> const & center,
00298 detail::tvec3<T, P> const & up);
00299
00301 }
00302
00303 #include "matrix_transform.inl"