39 #ifndef GLM_GTC_quaternion 
   40 #define GLM_GTC_quaternion GLM_VERSION 
   44 #include "../gtc/half_float.hpp" 
   46 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) 
   47 #       pragma message("GLM: GLM_GTC_quaternion extension included") 
   59                 typedef std::size_t size_type;
 
   62                 value_type x, y, z, w;
 
   64                 GLM_FUNC_DECL size_type 
length() 
const;
 
   70                         glm::detail::tvec3<T> 
const & v);
 
   75                         value_type 
const & z);
 
   83                         tmat3x3<T> 
const & m);
 
   85                         tmat4x4<T> 
const & m);
 
   88                 value_type & operator[](
int i);
 
   89                 value_type 
const & operator[](
int i) 
const;
 
   92                 tquat<T> & operator*=(value_type 
const & s);
 
   93                 tquat<T> & operator/=(value_type 
const & s);
 
   97         detail::tquat<T> operator- (
 
   98                 detail::tquat<T> 
const & q);
 
  100         template <
typename T> 
 
  101         detail::tquat<T> operator+ ( 
 
  102                 detail::tquat<T> 
const & q, 
 
  103                 detail::tquat<T> 
const & p); 
 
  105         template <
typename T> 
 
  106         detail::tquat<T> operator* ( 
 
  107                 detail::tquat<T> 
const & q, 
 
  108                 detail::tquat<T> 
const & p); 
 
  110         template <
typename T> 
 
  111         detail::tvec3<T> operator* (
 
  112                 detail::tquat<T> 
const & q, 
 
  113                 detail::tvec3<T> 
const & v);
 
  115         template <
typename T> 
 
  116         detail::tvec3<T> operator* (
 
  117                 detail::tvec3<T> 
const & v,
 
  118                 detail::tquat<T> 
const & q);
 
  120         template <
typename T> 
 
  121         detail::tvec4<T> operator* (
 
  122                 detail::tquat<T> 
const & q, 
 
  123                 detail::tvec4<T> 
const & v);
 
  125         template <
typename T> 
 
  126         detail::tvec4<T> operator* (
 
  127                 detail::tvec4<T> 
const & v,
 
  128                 detail::tquat<T> 
const & q);
 
  130         template <
typename T> 
 
  131         detail::tquat<T> operator* (
 
  132                 detail::tquat<T> 
const & q, 
 
  133                 typename detail::tquat<T>::value_type 
const & s);
 
  135         template <
typename T> 
 
  136         detail::tquat<T> operator* (
 
  137                 typename detail::tquat<T>::value_type 
const & s,
 
  138                 detail::tquat<T> 
const & q);
 
  140         template <
typename T> 
 
  141         detail::tquat<T> operator/ (
 
  142                 detail::tquat<T> 
const & q, 
 
  143                 typename detail::tquat<T>::value_type 
const & s);
 
  153         template <
typename T> 
 
  155                 detail::tquat<T> 
const & q);
 
  160         template <
typename T> 
 
  162                 detail::tquat<T> 
const & q);
 
  167         template <
typename T> 
 
  169                 detail::tquat<T> 
const & q1, 
 
  170                 detail::tquat<T> 
const & q2);
 
  175         template <
typename T> 
 
  176         detail::tquat<T> 
mix(
 
  177                 detail::tquat<T> 
const & x, 
 
  178                 detail::tquat<T> 
const & y, 
 
  184         template <
typename T> 
 
  186                 detail::tquat<T> 
const & q);
 
  191         template <
typename T> 
 
  193                 detail::tquat<T> 
const & q);
 
  202         template <
typename T> 
 
  204                 detail::tquat<T> 
const & q, 
 
  205                 typename detail::tquat<T>::value_type 
const & 
angle, 
 
  206                 detail::tvec3<T> 
const & 
axis);
 
  211         template <
typename T> 
 
  213                 detail::tquat<T> 
const & x);
 
  218         template <
typename T> 
 
  220                 detail::tquat<T> 
const & x);
 
  225         template <
typename T> 
 
  227                 detail::tquat<T> 
const & x);
 
  232         template <
typename T> 
 
  234                 detail::tmat3x3<T> 
const & x);
 
  239         template <
typename T> 
 
  241                 detail::tmat4x4<T> 
const & x);
 
  246         template <
typename valType> 
 
  248                 detail::tquat<valType> 
const & x);
 
  253         template <
typename valType> 
 
  254         detail::tvec3<valType> 
axis(
 
  255                 detail::tquat<valType> 
const & x);
 
  265         template <
typename valType> 
 
  267                 valType 
const & 
angle, 
 
  278         template <
typename valType> 
 
  280                 valType 
const & 
angle, 
 
  281                 detail::tvec3<valType> 
const & 
axis);
 
  286         typedef detail::tquat<float> 
quat;
 
  291         typedef detail::tquat<detail::half>     
hquat;
 
  301         typedef detail::tquat<double>   
dquat;
 
  321 #include "quaternion.inl" 
  323 #endif//GLM_GTC_quaternion