18 #include "../gtx/transform.hpp" 
   20 #ifndef GLM_ENABLE_EXPERIMENTAL 
   21 #       error "GLM: GLM_GTX_rotate_vector is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it." 
   24 #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED) 
   25 #       pragma message("GLM: GLM_GTX_rotate_vector extension included") 
   40         template<
typename T, qualifier Q>
 
   41         GLM_FUNC_DECL vec<3, T, Q> 
slerp(
 
   42                 vec<3, T, Q> 
const& x,
 
   43                 vec<3, T, Q> 
const& y,
 
   48         template<
typename T, qualifier Q>
 
   49         GLM_FUNC_DECL vec<2, T, Q> 
rotate(
 
   50                 vec<2, T, Q> 
const& v,
 
   55         template<
typename T, qualifier Q>
 
   56         GLM_FUNC_DECL vec<3, T, Q> 
rotate(
 
   57                 vec<3, T, Q> 
const& v,
 
   59                 vec<3, T, Q> 
const& normal);
 
   63         template<
typename T, qualifier Q>
 
   64         GLM_FUNC_DECL vec<4, T, Q> 
rotate(
 
   65                 vec<4, T, Q> 
const& v,
 
   67                 vec<3, T, Q> 
const& normal);
 
   71         template<
typename T, qualifier Q>
 
   72         GLM_FUNC_DECL vec<3, T, Q> 
rotateX(
 
   73                 vec<3, T, Q> 
const& v,
 
   78         template<
typename T, qualifier Q>
 
   79         GLM_FUNC_DECL vec<3, T, Q> 
rotateY(
 
   80                 vec<3, T, Q> 
const& v,
 
   85         template<
typename T, qualifier Q>
 
   86         GLM_FUNC_DECL vec<3, T, Q> 
rotateZ(
 
   87                 vec<3, T, Q> 
const& v,
 
   92         template<
typename T, qualifier Q>
 
   93         GLM_FUNC_DECL vec<4, T, Q> 
rotateX(
 
   94                 vec<4, T, Q> 
const& v,
 
   99         template<
typename T, qualifier Q>
 
  100         GLM_FUNC_DECL vec<4, T, Q> 
rotateY(
 
  101                 vec<4, T, Q> 
const& v,
 
  106         template<
typename T, qualifier Q>
 
  107         GLM_FUNC_DECL vec<4, T, Q> 
rotateZ(
 
  108                 vec<4, T, Q> 
const& v,
 
  113         template<
typename T, qualifier Q>
 
  115                 vec<3, T, Q> 
const& Normal,
 
  116                 vec<3, T, Q> 
const& Up);
 
  121 #include "rotate_vector.inl" 
GLM_FUNC_DECL vec< 4, T, Q > rotateY(vec< 4, T, Q > const &v, T const &angle)
Rotate a four dimensional vector around the Y axis. 
GLM_FUNC_DECL mat< 4, 4, T, Q > orientation(vec< 3, T, Q > const &Normal, vec< 3, T, Q > const &Up)
Build a rotation matrix from a normal and a up vector. 
GLM_FUNC_DECL vec< 3, T, Q > slerp(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, T const &a)
Returns Spherical interpolation between two vectors. 
GLM_FUNC_DECL vec< 4, T, Q > rotateZ(vec< 4, T, Q > const &v, T const &angle)
Rotate a four dimensional vector around the Z axis. 
GLM_FUNC_DECL T angle(tquat< T, Q > const &x)
Returns the quaternion rotation angle. 
GLM_FUNC_DECL vec< 4, T, Q > rotate(vec< 4, T, Q > const &v, T const &angle, vec< 3, T, Q > const &normal)
Rotate a four dimensional vector around an axis. 
GLM_FUNC_DECL vec< 4, T, Q > rotateX(vec< 4, T, Q > const &v, T const &angle)
Rotate a four dimensional vector around the X axis.