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