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 namespace gtx{
00026 namespace rotate_vector 
00027 {
00028         using namespace transform;
00029 
00032 
00035         template <typename T> 
00036         detail::tvec2<T> rotate(
00037         detail::tvec2<T> const & v, 
00038                 T const & angle);
00039                 
00042         template <typename T> 
00043         detail::tvec3<T> rotate(
00044         detail::tvec3<T> const & v, 
00045                 T const & angle, 
00046         detail::tvec3<T> const & normal);
00047                 
00050         template <typename T> 
00051         detail::tvec4<T> rotate(
00052         detail::tvec4<T> const & v, 
00053         T const & angle, 
00054                 detail::tvec3<T> const & normal);
00055                 
00058         template <typename T> 
00059         detail::tvec3<T> rotateX(
00060         detail::tvec3<T> const & v, 
00061                 T const & angle);
00062 
00065         template <typename T> 
00066         detail::tvec3<T> rotateY(
00067                 detail::tvec3<T> const & v, 
00068                 T const & angle);
00069                 
00072         template <typename T> 
00073         detail::tvec3<T> rotateZ(
00074         detail::tvec3<T> const & v, 
00075                 T const & angle);
00076                 
00079         template <typename T> 
00080         detail::tvec4<T> rotateX(
00081         detail::tvec4<T> const & v, 
00082                 T const & angle);
00083                 
00086         template <typename T> 
00087         detail::tvec4<T> rotateY(
00088         detail::tvec4<T> const & v, 
00089                 T const & angle);
00090                 
00093         template <typename T> 
00094         detail::tvec4<T> rotateZ(
00095         detail::tvec4<T> const & v, 
00096                 T const & angle);
00097                 
00100         template <typename T> 
00101         detail::tmat4x4<T> orientation(
00102         detail::tvec3<T> const & Normal, 
00103         detail::tvec3<T> const & Up);
00104 
00106 }//namespace rotate_vector
00107 }//namespace gtx
00108 }//namespace glm
00109 
00110 #include "rotate_vector.inl"
00111 
00112 namespace glm{using namespace gtx::rotate_vector;}
00113 
00114 #endif//glm_gtx_rotate_vector