00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #pragma once
00040
00041
00042 #include "../glm.hpp"
00043 #include "../gtc/constants.hpp"
00044 #include "../gtc/quaternion.hpp"
00045 #include "../gtx/norm.hpp"
00046
00047 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
00048 # pragma message("GLM: GLM_GTX_quaternion extension included")
00049 #endif
00050
00051 namespace glm
00052 {
00055
00059 template<typename T, precision P>
00060 GLM_FUNC_DECL detail::tvec3<T, P> cross(
00061 detail::tquat<T, P> const & q,
00062 detail::tvec3<T, P> const & v);
00063
00067 template<typename T, precision P>
00068 GLM_FUNC_DECL detail::tvec3<T, P> cross(
00069 detail::tvec3<T, P> const & v,
00070 detail::tquat<T, P> const & q);
00071
00076 template<typename T, precision P>
00077 GLM_FUNC_DECL detail::tquat<T, P> squad(
00078 detail::tquat<T, P> const & q1,
00079 detail::tquat<T, P> const & q2,
00080 detail::tquat<T, P> const & s1,
00081 detail::tquat<T, P> const & s2,
00082 T const & h);
00083
00087 template<typename T, precision P>
00088 GLM_FUNC_DECL detail::tquat<T, P> intermediate(
00089 detail::tquat<T, P> const & prev,
00090 detail::tquat<T, P> const & curr,
00091 detail::tquat<T, P> const & next);
00092
00096 template<typename T, precision P>
00097 GLM_FUNC_DECL detail::tquat<T, P> exp(
00098 detail::tquat<T, P> const & q);
00099
00103 template<typename T, precision P>
00104 GLM_FUNC_DECL detail::tquat<T, P> log(
00105 detail::tquat<T, P> const & q);
00106
00110 template<typename T, precision P>
00111 GLM_FUNC_DECL detail::tquat<T, P> pow(
00112 detail::tquat<T, P> const & x,
00113 T const & y);
00114
00118
00119
00120
00121
00125 template<typename T, precision P>
00126 GLM_FUNC_DECL detail::tvec3<T, P> rotate(
00127 detail::tquat<T, P> const & q,
00128 detail::tvec3<T, P> const & v);
00129
00133 template<typename T, precision P>
00134 GLM_FUNC_DECL detail::tvec4<T, P> rotate(
00135 detail::tquat<T, P> const & q,
00136 detail::tvec4<T, P> const & v);
00137
00141 template<typename T, precision P>
00142 GLM_FUNC_DECL T extractRealComponent(
00143 detail::tquat<T, P> const & q);
00144
00148 template<typename T, precision P>
00149 GLM_FUNC_DECL detail::tmat3x3<T, P> toMat3(
00150 detail::tquat<T, P> const & x){return mat3_cast(x);}
00151
00155 template<typename T, precision P>
00156 GLM_FUNC_DECL detail::tmat4x4<T, P> toMat4(
00157 detail::tquat<T, P> const & x){return mat4_cast(x);}
00158
00162 template<typename T, precision P>
00163 GLM_FUNC_DECL detail::tquat<T, P> toQuat(
00164 detail::tmat3x3<T, P> const & x){return quat_cast(x);}
00165
00169 template<typename T, precision P>
00170 GLM_FUNC_DECL detail::tquat<T, P> toQuat(
00171 detail::tmat4x4<T, P> const & x){return quat_cast(x);}
00172
00176 template<typename T, precision P>
00177 GLM_FUNC_DECL detail::tquat<T, P> shortMix(
00178 detail::tquat<T, P> const & x,
00179 detail::tquat<T, P> const & y,
00180 T const & a);
00181
00185 template<typename T, precision P>
00186 GLM_FUNC_DECL detail::tquat<T, P> fastMix(
00187 detail::tquat<T, P> const & x,
00188 detail::tquat<T, P> const & y,
00189 T const & a);
00190
00196 template<typename T, precision P>
00197 GLM_FUNC_DECL detail::tquat<T, P> rotation(
00198 detail::tvec3<T, P> const & orig,
00199 detail::tvec3<T, P> const & dest);
00200
00204 template<typename T, precision P>
00205 GLM_FUNC_DECL T length2(detail::tquat<T, P> const & q);
00206
00208 }
00209
00210 #include "quaternion.inl"