00001
00002
00004
00005
00006
00007
00009
00010
00012
00013
00014
00016
00017 #ifndef glm_gtx_quaternion
00018 #define glm_gtx_quaternion
00019
00020
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
00088
00089
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 }
00188 }
00189 }
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