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 {
00026 namespace test{
00027 bool main_gtc_matrix_transform();
00028 }
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 }
00157 }
00158 }
00159
00160 #include "matrix_transform.inl"
00161
00162 namespace glm{using namespace gtc::matrix_transform;}
00163
00164 #endif//glm_gtc_matrix_transform