00001
00002
00004
00005
00006
00007
00009
00010
00012
00013 #ifndef glm_gtx_rotate_vector
00014 #define glm_gtx_rotate_vector
00015
00016
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 }
00109 }
00110 }
00111
00112 #include "rotate_vector.inl"
00113
00114 namespace glm{using namespace gtx::rotate_vector;}
00115
00116 #endif//glm_gtx_rotate_vector