rotate_vector.hpp

00001 
00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
00004 // Created : 2006-11-02
00005 // Updated : 2009-02-19
00006 // Licence : This source is under MIT License
00007 // File    : glm/gtx/rotate_vector.hpp
00009 // Dependency:
00010 // - GLM core
00012 
00013 #ifndef glm_gtx_rotate_vector
00014 #define glm_gtx_rotate_vector
00015 
00016 // Dependency:
00017 #include "../glm.hpp"
00018 #include "../gtx/transform.hpp"
00019 
00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
00021 #       pragma message("GLM: GLM_GTX_rotate_vector extension included")
00022 #endif
00023 
00024 namespace glm
00025 {
00026         namespace gtx{
00028         namespace rotate_vector
00029         {
00030                 using namespace transform;
00031 
00034 
00037                 template <typename T> 
00038                 detail::tvec2<T> rotate(
00039                         const detail::tvec2<T>& v, 
00040                         T angle);
00041                 
00044                 template <typename T> 
00045                 detail::tvec3<T> rotate(
00046                         const detail::tvec3<T>& v, 
00047                         T angle, 
00048                         const detail::tvec3<T>& normal);
00049                 
00052                 template <typename T> 
00053                 detail::tvec4<T> rotate(
00054                         const detail::tvec4<T>& v, T angle, 
00055                         const detail::tvec3<T>& normal);
00056                 
00059                 template <typename T> 
00060                 detail::tvec3<T> rotateX(
00061                         const detail::tvec3<T>& v, 
00062                         T angle);
00063 
00066                 template <typename T> 
00067                 detail::tvec3<T> rotateY(
00068                         const detail::tvec3<T>& v, 
00069                         T angle);
00070                 
00073                 template <typename T> 
00074                 detail::tvec3<T> rotateZ(
00075                         const detail::tvec3<T>& v, 
00076                         T angle);
00077                 
00080                 template <typename T> 
00081                 detail::tvec4<T> rotateX(
00082                         const detail::tvec4<T>& v, 
00083                         T angle);
00084                 
00087                 template <typename T> 
00088                 detail::tvec4<T> rotateY(
00089                         const detail::tvec4<T>& v, 
00090                         T angle);
00091                 
00094                 template <typename T> 
00095                 detail::tvec4<T> rotateZ(
00096                         const detail::tvec4<T>& v, 
00097                         T angle);
00098                 
00101                 template <typename T> 
00102                 detail::tmat4x4<T> orientation(
00103                         const detail::tvec3<T>& Normal, 
00104                         const detail::tvec3<T>& Up);
00105 
00107                 
00108         }//namespace rotate_vector
00109         }//namespace gtx
00110 }//namespace glm
00111 
00112 #include "rotate_vector.inl"
00113 
00114 namespace glm{using namespace gtx::rotate_vector;}
00115 
00116 #endif//glm_gtx_rotate_vector