quaternion.hpp Source File

- 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 {
    00030         namespace gtx{
    00032     namespace quaternion
    00033     {
    00034                 using namespace gtc::quaternion;
    00035
    00038
    00041                 template <typename valType>
    00042                 detail::tvec3<valType> cross(
    00043                         detail::tquat<valType> const & q,
    00044                         detail::tvec3<valType> const & v);
    00045
    00048                 template <typename valType>
    00049                 detail::tvec3<valType> cross(
    00050                         detail::tvec3<valType> const & v,
    00051                         detail::tquat<valType> const & q);
    00052
    00056                 template <typename valType>
    00057                 detail::tquat<valType> squad(
    00058                         detail::tquat<valType> const & q1,
    00059                         detail::tquat<valType> const & q2,
    00060                         detail::tquat<valType> const & s1,
    00061                         detail::tquat<valType> const & s2,
    00062                         valType const & h);
    00063
    00066                 template <typename valType>
    00067                 detail::tquat<valType> intermediate(
    00068                         detail::tquat<valType> const & prev,
    00069                         detail::tquat<valType> const & curr,
    00070                         detail::tquat<valType> const & next);
    00071
    00074         template <typename valType>
    00075                 detail::tquat<valType> exp(
    00076                         detail::tquat<valType> const & q,
    00077                         valType const & exponent);
    00078
    00081         template <typename valType>
    00082                 detail::tquat<valType> log(
    00083                         detail::tquat<valType> const & q);
    00084
    00087         template <typename valType>
    00088                 detail::tquat<valType> pow(
    00089                         detail::tquat<valType> const & x,
    00090                         valType const & y);
    00091
    00094                 //template <typename valType>
    00095                 //detail::tquat<valType> sqrt(
    00096                 //      detail::tquat<valType> const & q);
    00097
    00100                 template <typename valType>
    00101                 detail::tvec3<valType> rotate(
    00102                         detail::tquat<valType> const & q,
    00103                         detail::tvec3<valType> const & v);
    00104
    00107                 template <typename valType>
    00108                 detail::tvec4<valType> rotate(
    00109                         detail::tquat<valType> const & q,
    00110                         detail::tvec4<valType> const & v);
    00111
    00114                 template <typename valType>
    00115                 valType angle(
    00116                         detail::tquat<valType> const & x);
    00117
    00120                 template <typename valType>
    00121                 detail::tvec3<valType> axis(
    00122                         detail::tquat<valType> const & x);
    00123
    00126                 template <typename valType>
    00127                 detail::tquat<valType> angleAxis(
    00128                         valType const & angle,
    00129                         valType const & x,
    00130                         valType const & y,
    00131                         valType const & z);
    00132
    00135                 template <typename valType>
    00136                 detail::tquat<valType> angleAxis(
    00137                         valType const & angle,
    00138                         detail::tvec3<valType> const & v);
    00139
    00142                 template <typename valType>
    00143                 valType extractRealComponent(
    00144                         detail::tquat<valType> const & q);
    00145
    00148                 template <typename valType>
    00149                 valType roll(
    00150                         detail::tquat<valType> const & x);
    00151
    00154         template <typename valType>
    00155                 valType pitch(
    00156                         detail::tquat<valType> const & x);
    00157
    00160                 template <typename valType>
    00161                 valType yaw(
    00162                         detail::tquat<valType> const & x);
    00163
    00166                 template <typename valType>
    00167                 detail::tvec3<valType> eularAngles(
    00168                         detail::tquat<valType> const & x);
    00169
    00172         template <typename valType>
    00173                 detail::tmat3x3<valType> toMat3(
    00174                         detail::tquat<valType> const & x){return gtc::quaternion::mat3_cast(x);}
    00175
    00178                 template <typename valType>
    00179                 detail::tmat4x4<valType> toMat4(
    00180                         detail::tquat<valType> const & x){return gtc::quaternion::mat4_cast(x);}
    00181
    00184                 template <typename valType>
    00185                 detail::tquat<valType> toQuat(
    00186                         detail::tmat3x3<valType> const & x){return gtc::quaternion::quat_cast(x);}
    00187
    00190                 template <typename valType>
    00191                 detail::tquat<valType> toQuat(
    00192                         detail::tmat4x4<valType> const & x){return gtc::quaternion::quat_cast(x);}
    00193
    00195
    00196     }//namespace quaternion
    00197     }//namespace gtx
    00198 } //namespace glm
    00199
    00200 #include "quaternion.inl"
    00201
    00202 namespace glm{using namespace gtx::quaternion;}
    00203
    00204 #endif//glm_gtx_quaternion