- Main Page
- Modules
- Namespaces
- Classes
- Files

- File List

quaternion.hpp

    00001
    00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
    00004 // Created : 2005-12-21
    00005 // Updated : 2009-05-21
    00006 // Licence : This source is under MIT License
    00007 // File    : glm/gtx/quaternion.hpp
    00009 // Dependency:
    00010 // - GLM core
    00012 // ToDo:
    00013 // - Study constructors with angles and axis
    00014 // - Study constructors with vec3 that are the imaginary component of quaternion
    00016
    00017 #ifndef glm_gtx_quaternion
    00018 #define glm_gtx_quaternion
    00019
    00020 // Dependency:
    00021 #include "../glm.hpp"
    00022 #include "../gtc/quaternion.hpp"
    00023
    00024 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
    00025 #       pragma message("GLM: GLM_GTX_quaternion extension included")
    00026 #endif
    00027
    00028 namespace glm{
    00029 namespace gtx{
    00030 namespace quaternion
    00031 {
    00032         using namespace gtc::quaternion;
    00033
    00036
    00039         template <typename valType>
    00040         detail::tvec3<valType> cross(
    00041                 detail::tquat<valType> const & q,
    00042                 detail::tvec3<valType> const & v);
    00043
    00046         template <typename valType>
    00047         detail::tvec3<valType> cross(
    00048                 detail::tvec3<valType> const & v,
    00049                 detail::tquat<valType> const & q);
    00050
    00054         template <typename valType>
    00055         detail::tquat<valType> squad(
    00056                 detail::tquat<valType> const & q1,
    00057                 detail::tquat<valType> const & q2,
    00058                 detail::tquat<valType> const & s1,
    00059                 detail::tquat<valType> const & s2,
    00060                 valType const & h);
    00061
    00064         template <typename valType>
    00065         detail::tquat<valType> intermediate(
    00066                 detail::tquat<valType> const & prev,
    00067                 detail::tquat<valType> const & curr,
    00068                 detail::tquat<valType> const & next);
    00069
    00072     template <typename valType>
    00073         detail::tquat<valType> exp(
    00074                 detail::tquat<valType> const & q,
    00075                 valType const & exponent);
    00076
    00079     template <typename valType>
    00080         detail::tquat<valType> log(
    00081                 detail::tquat<valType> const & q);
    00082
    00085     template <typename valType>
    00086         detail::tquat<valType> pow(
    00087                 detail::tquat<valType> const & x,
    00088                 valType const & y);
    00089
    00092         //template <typename valType>
    00093         //detail::tquat<valType> sqrt(
    00094         //      detail::tquat<valType> const & q);
    00095
    00098         template <typename valType>
    00099         detail::tvec3<valType> rotate(
    00100                 detail::tquat<valType> const & q,
    00101                 detail::tvec3<valType> const & v);
    00102
    00105         template <typename valType>
    00106         detail::tvec4<valType> rotate(
    00107                 detail::tquat<valType> const & q,
    00108                 detail::tvec4<valType> const & v);
    00109
    00112         template <typename valType>
    00113         valType angle(
    00114                 detail::tquat<valType> const & x);
    00115
    00118         template <typename valType>
    00119         detail::tvec3<valType> axis(
    00120                 detail::tquat<valType> const & x);
    00121
    00124         template <typename valType>
    00125         detail::tquat<valType> angleAxis(
    00126                 valType const & angle,
    00127                 valType const & x,
    00128                 valType const & y,
    00129                 valType const & z);
    00130
    00133         template <typename valType>
    00134         detail::tquat<valType> angleAxis(
    00135                 valType const & angle,
    00136                 detail::tvec3<valType> const & axis);
    00137
    00140         template <typename valType>
    00141         valType extractRealComponent(
    00142                 detail::tquat<valType> const & q);
    00143
    00146         template <typename valType>
    00147         valType roll(
    00148                 detail::tquat<valType> const & x);
    00149
    00152     template <typename valType>
    00153         valType pitch(
    00154                 detail::tquat<valType> const & x);
    00155
    00158         template <typename valType>
    00159         valType yaw(
    00160                 detail::tquat<valType> const & x);
    00161
    00164         template <typename valType>
    00165         detail::tvec3<valType> eulerAngles(
    00166                 detail::tquat<valType> const & x);
    00167
    00170     template <typename valType>
    00171         detail::tmat3x3<valType> toMat3(
    00172                 detail::tquat<valType> const & x){return gtc::quaternion::mat3_cast(x);}
    00173
    00176         template <typename valType>
    00177         detail::tmat4x4<valType> toMat4(
    00178                 detail::tquat<valType> const & x){return gtc::quaternion::mat4_cast(x);}
    00179
    00182         template <typename valType>
    00183         detail::tquat<valType> toQuat(
    00184                 detail::tmat3x3<valType> const & x){return gtc::quaternion::quat_cast(x);}
    00185
    00188         template <typename valType>
    00189         detail::tquat<valType> toQuat(
    00190                 detail::tmat4x4<valType> const & x){return gtc::quaternion::quat_cast(x);}
    00191
    00194         template <typename T>
    00195         detail::tquat<T> shortMix(
    00196                 detail::tquat<T> const & x,
    00197                 detail::tquat<T> const & y,
    00198                 T const & a);
    00199
    00202         template <typename T>
    00203         detail::tquat<T> fastMix(
    00204                 detail::tquat<T> const & x,
    00205                 detail::tquat<T> const & y,
    00206                 T const & a);
    00207
    00209 }//namespace quaternion
    00210 }//namespace gtx
    00211 } //namespace glm
    00212
    00213 #include "quaternion.inl"
    00214
    00215 namespace glm{using namespace gtx::quaternion;}
    00216
    00217 #endif//glm_gtx_quaternion