- Main Page
- Namespaces
- Files

- File List

# quaternion.hpp

    00001
    00002 // OpenGL Mathematics Copyright (c) 2005 - 2009 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 namespace glm
    00025 {
    00026         namespace gtx{
    00028     namespace quaternion
    00029     {
    00030                 using namespace gtc::quaternion;
    00031
    00034                 template <typename valType>
    00035                 detail::tvec3<valType> cross(
    00036                         detail::tquat<valType> const & q,
    00037                         detail::tvec3<valType> const & v);
    00038
    00041                 template <typename valType>
    00042                 detail::tvec3<valType> cross(
    00043                         detail::tvec3<valType> const & v,
    00044                         detail::tquat<valType> const & q);
    00045
    00049                 template <typename valType>
    00050                 detail::tquat<valType> squad(
    00051                         detail::tquat<valType> const & q1,
    00052                         detail::tquat<valType> const & q2,
    00053                         detail::tquat<valType> const & s1,
    00054                         detail::tquat<valType> const & s2,
    00055                         valType const & h);
    00056
    00059                 template <typename valType>
    00060                 detail::tquat<valType> intermediate(
    00061                         detail::tquat<valType> const & prev,
    00062                         detail::tquat<valType> const & curr,
    00063                         detail::tquat<valType> const & next);
    00064
    00067         template <typename valType>
    00068                 detail::tquat<valType> exp(
    00069                         detail::tquat<valType> const & q,
    00070                         valType const & exponent);
    00071
    00074         template <typename valType>
    00075                 detail::tquat<valType> log(
    00076                         detail::tquat<valType> const & q);
    00077
    00080         template <typename valType>
    00081                 detail::tquat<valType> pow(
    00082                         detail::tquat<valType> const & x,
    00083                         valType const & y);
    00084
    00087                 //template <typename valType>
    00088                 //detail::tquat<valType> sqrt(
    00089                 //      detail::tquat<valType> const & q);
    00090
    00093                 template <typename valType>
    00094                 detail::tvec3<valType> rotate(
    00095                         detail::tquat<valType> const & q,
    00096                         detail::tvec3<valType> const & v);
    00097
    00100                 template <typename valType>
    00101                 detail::tvec4<valType> rotate(
    00102                         detail::tquat<valType> const & q,
    00103                         detail::tvec4<valType> const & v);
    00104
    00107                 template <typename valType>
    00108                 valType angle(
    00109                         detail::tquat<valType> const & x);
    00110
    00113                 template <typename valType>
    00114                 detail::tvec3<valType> axis(
    00115                         detail::tquat<valType> const & x);
    00116
    00119                 template <typename valType>
    00120                 detail::tquat<valType> angleAxis(
    00121                         valType const & angle,
    00122                         valType const & x,
    00123                         valType const & y,
    00124                         valType const & z);
    00125
    00128                 template <typename valType>
    00129                 detail::tquat<valType> angleAxis(
    00130                         valType const & angle,
    00131                         detail::tvec3<valType> const & v);
    00132
    00135                 template <typename valType>
    00136                 valType extractRealComponent(
    00137                         detail::tquat<valType> const & q);
    00138
    00141                 template <typename valType>
    00142                 valType roll(
    00143                         detail::tquat<valType> const & x);
    00144
    00147         template <typename valType>
    00148                 valType pitch(
    00149                         detail::tquat<valType> const & x);
    00150
    00153                 template <typename valType>
    00154                 valType yaw(
    00155                         detail::tquat<valType> const & x);
    00156
    00159                 template <typename valType>
    00160                 detail::tvec3<valType> eularAngles(
    00161                         detail::tquat<valType> const & x);
    00162
    00165         template <typename valType>
    00166                 detail::tmat3x3<valType> toMat3(
    00167                         detail::tquat<valType> const & x){return gtc::quaternion::mat3_cast(x);}
    00168
    00171                 template <typename valType>
    00172                 detail::tmat4x4<valType> toMat4(
    00173                         detail::tquat<valType> const & x){return gtc::quaternion::mat4_cast(x);}
    00174
    00177                 template <typename valType>
    00178                 detail::tquat<valType> toQuat(
    00179                         detail::tmat3x3<valType> const & x){return gtc::quaternion::quat_cast(x);}
    00180
    00183                 template <typename valType>
    00184                 detail::tquat<valType> toQuat(
    00185                         detail::tmat4x4<valType> const & x){return gtc::quaternion::quat_cast(x);}
    00186
    00187     }//namespace quaternion
    00188     }//namespace gtx
    00189 } //namespace glm
    00190
    00191 #define GLM_GTX_quaternion namespace gtx::quaternion
    00192 #ifndef GLM_GTX_GLOBAL
    00193 namespace glm {using GLM_GTX_quaternion;}
    00194 #endif//GLM_GTX_GLOBAL
    00195
    00196 #include "quaternion.inl"
    00197
    00198 #endif//glm_gtx_quaternion