quaternion.hpp
Go to the documentation of this file.
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 #ifndef GLM_GTX_quaternion
00040 #define GLM_GTX_quaternion GLM_VERSION
00041 
00042 // Dependency:
00043 #include "../glm.hpp"
00044 #include "../gtc/quaternion.hpp"
00045 
00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
00047 #       pragma message("GLM: GLM_GTX_quaternion extension included")
00048 #endif
00049 
00050 namespace glm
00051 {
00054 
00057         template <typename valType> 
00058         detail::tvec3<valType> cross(
00059                 detail::tquat<valType> const & q, 
00060                 detail::tvec3<valType> const & v);
00061 
00064         template <typename valType> 
00065         detail::tvec3<valType> cross(
00066                 detail::tvec3<valType> const & v, 
00067                 detail::tquat<valType> const & q);
00068 
00072         template <typename valType> 
00073         detail::tquat<valType> squad(
00074                 detail::tquat<valType> const & q1, 
00075                 detail::tquat<valType> const & q2, 
00076                 detail::tquat<valType> const & s1, 
00077                 detail::tquat<valType> const & s2, 
00078                 valType const & h);
00079 
00082         template <typename valType> 
00083         detail::tquat<valType> intermediate(
00084                 detail::tquat<valType> const & prev, 
00085                 detail::tquat<valType> const & curr, 
00086                 detail::tquat<valType> const & next);
00087 
00090     template <typename valType> 
00091         detail::tquat<valType> exp(
00092                 detail::tquat<valType> const & q, 
00093                 valType const & exponent);
00094 
00097     template <typename valType> 
00098         detail::tquat<valType> log(
00099                 detail::tquat<valType> const & q);
00100 
00103     template <typename valType> 
00104         detail::tquat<valType> pow(
00105                 detail::tquat<valType> const & x, 
00106                 valType const & y);
00107 
00110         //template <typename valType> 
00111         //detail::tquat<valType> sqrt(
00112         //      detail::tquat<valType> const & q);
00113 
00116         template <typename valType> 
00117         detail::tvec3<valType> rotate(
00118                 detail::tquat<valType> const & q, 
00119                 detail::tvec3<valType> const & v);
00120 
00123         template <typename valType> 
00124         detail::tvec4<valType> rotate(
00125                 detail::tquat<valType> const & q, 
00126                 detail::tvec4<valType> const & v);
00127                 
00130         template <typename valType> 
00131         valType angle(
00132                 detail::tquat<valType> const & x);
00133 
00136         template <typename valType> 
00137         detail::tvec3<valType> axis(
00138                 detail::tquat<valType> const & x);
00139 
00142         template <typename valType> 
00143         detail::tquat<valType> angleAxis(
00144                 valType const & angle, 
00145                 valType const & x, 
00146                 valType const & y, 
00147                 valType const & z);
00148 
00151         template <typename valType> 
00152         detail::tquat<valType> angleAxis(
00153                 valType const & angle, 
00154                 detail::tvec3<valType> const & axis);
00155 
00158         template <typename valType> 
00159         valType extractRealComponent(
00160                 detail::tquat<valType> const & q);
00161 
00164         template <typename valType> 
00165         valType roll(
00166                 detail::tquat<valType> const & x);
00167 
00170     template <typename valType> 
00171         valType pitch(
00172                 detail::tquat<valType> const & x);
00173 
00176         template <typename valType> 
00177         valType yaw(
00178                 detail::tquat<valType> const & x);
00179                 
00182         template <typename valType> 
00183         detail::tvec3<valType> eulerAngles(
00184                 detail::tquat<valType> const & x);
00185 
00188     template <typename valType> 
00189         detail::tmat3x3<valType> toMat3(
00190                 detail::tquat<valType> const & x){return mat3_cast(x);}
00191 
00194         template <typename valType> 
00195         detail::tmat4x4<valType> toMat4(
00196                 detail::tquat<valType> const & x){return mat4_cast(x);}
00197 
00200         template <typename valType> 
00201         detail::tquat<valType> toQuat(
00202                 detail::tmat3x3<valType> const & x){return quat_cast(x);}
00203 
00206         template <typename valType> 
00207         detail::tquat<valType> toQuat(
00208                 detail::tmat4x4<valType> const & x){return quat_cast(x);}
00209 
00212         template <typename T>
00213         detail::tquat<T> shortMix(
00214                 detail::tquat<T> const & x, 
00215                 detail::tquat<T> const & y, 
00216                 T const & a);
00217 
00220         template <typename T>
00221         detail::tquat<T> fastMix(
00222                 detail::tquat<T> const & x, 
00223                 detail::tquat<T> const & y, 
00224                 T const & a);
00225 
00227 }//namespace glm
00228 
00229 #include "quaternion.inl"
00230 
00231 #endif//GLM_GTX_quaternion