transform2.hpp
00001 
00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
00004 // Created : 2005-12-21
00005 // Updated : 2006-11-13
00006 // Licence : This source is under MIT License
00007 // File    : glm/gtx/transform2.hpp
00009 // Dependency:
00010 // - GLM core
00011 // - GLM_GTX_transform
00013 
00014 #ifndef glm_gtx_transform2
00015 #define glm_gtx_transform2
00016 
00017 // Dependency:
00018 #include "../glm.hpp"
00019 #include "../gtx/transform.hpp"
00020 
00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
00022 #       pragma message("GLM: GLM_GTX_transform2 extension included")
00023 #endif
00024 
00025 namespace glm{
00026 namespace gtx{
00027 namespace transform2 
00028 {
00029         using namespace gtx::transform;
00030 
00033 
00036         template <typename T> 
00037         detail::tmat3x3<T> shearX2D(
00038                 detail::tmat3x3<T> const & m, 
00039                 T y);
00040 
00043         template <typename T> 
00044         detail::tmat3x3<T> shearY2D(
00045                 detail::tmat3x3<T> const & m, 
00046                 T x);
00047 
00050         template <typename T> 
00051         detail::tmat4x4<T> shearX3D(
00052                 const detail::tmat4x4<T> & m,
00053                 T y, 
00054                 T z);
00055                 
00058         template <typename T> 
00059         detail::tmat4x4<T> shearY3D(
00060                 const detail::tmat4x4<T> & m, 
00061                 T x, 
00062                 T z);
00063                 
00066         template <typename T> 
00067         detail::tmat4x4<T> shearZ3D(
00068                 const detail::tmat4x4<T> & m, 
00069                 T x, 
00070                 T y);
00071 
00072         //template <typename T> GLM_FUNC_QUALIFIER detail::tmat4x4<T> shear(const detail::tmat4x4<T> & m, shearPlane, planePoint, angle)
00073         // Identity + tan(angle) * cross(Normal, OnPlaneVector)     0
00074         // - dot(PointOnPlane, normal) * OnPlaneVector              1
00075 
00076         // Reflect functions seem to don't work
00077         //template <typename T> detail::tmat3x3<T> reflect2D(const detail::tmat3x3<T> & m, const detail::tvec3<T>& normal){return reflect2DGTX(m, normal);}                                                                     //!< \brief Build a reflection matrix (from GLM_GTX_transform2 extension)
00078         //template <typename T> detail::tmat4x4<T> reflect3D(const detail::tmat4x4<T> & m, const detail::tvec3<T>& normal){return reflect3DGTX(m, normal);}                                                                     //!< \brief Build a reflection matrix (from GLM_GTX_transform2 extension)
00079                 
00082         template <typename T> 
00083         detail::tmat3x3<T> proj2D(
00084                 const detail::tmat3x3<T> & m, 
00085                 const detail::tvec3<T>& normal);
00086                                 
00089         template <typename T> 
00090         detail::tmat4x4<T> proj3D(
00091                 const detail::tmat4x4<T> & m, 
00092                 const detail::tvec3<T>& normal);
00093 
00096         template <typename valType> 
00097         detail::tmat4x4<valType> scaleBias(
00098                 valType scale, 
00099                 valType bias);
00100 
00103         template <typename valType> 
00104         detail::tmat4x4<valType> scaleBias(
00105                 detail::tmat4x4<valType> const & m, 
00106                 valType scale, 
00107                 valType bias);
00108 
00110 }// namespace transform2
00111 }// namespace gtx
00112 }// namespace glm
00113 
00114 #include "transform2.inl"
00115 
00116 namespace glm{using namespace gtx::transform2;}
00117 
00118 #endif//glm_gtx_transform2