23 #ifndef _deQuaternion_h
24 #define _deQuaternion_h
42 inline deQuaternion(deFloat qx, deFloat qy, deFloat qz, deFloat qw) {
set(qx, qy, qz, qw); }
45 for (
size_t ii(0); ii < DE_QUATERNION_SIZE; ++ii)
46 _data[ii] = orig._data[ii];
50 operator deFloat*() {
return _data; }
52 operator const deFloat*()
const {
return _data; }
56 const deFloat&
operator[](
const deInt i)
const {
return _data[i]; }
70 DE_MATH_API
void zero();
76 DE_MATH_API
void get(
deVector3& axis, deFloat &angle)
const;
80 DE_MATH_API
void set(
const deInt axis,
const deFloat angle);
82 DE_MATH_API
void set(
const deVector3& axis,
const deFloat angle);
84 DE_MATH_API
void set(
const deFloat x,
const deFloat y,
const deFloat z,
const deFloat w);
86 DE_MATH_API
void set(
const deFloat* q);
121 deFloat _data[DE_QUATERNION_SIZE];
124 #endif // _deQuaternion_h
DE_MATH_API void zero()
this = (0, 0, 0, 0)
Definition: TaoDeQuaternionInl.h:34
3x1 vector classThis is a C++ wrapper class of deVector3f.
Definition: TaoDeVector3.h:32
DE_MATH_API void eulerZYX(const deVector3 &v)
this = [x, y, z] = ZYX Euler angles
Definition: TaoDeQuaternionInl.h:42
deFloat & operator[](const deInt i)
Definition: TaoDeQuaternion.h:54
DE_MATH_API void operator-=(const deQuaternion &q)
this[i] -= q[i]
Definition: TaoDeQuaternionInl.h:31
DE_MATH_API deFloat dot(const deQuaternion &q)
return this^T * q
Definition: TaoDeQuaternionInl.h:27
DE_MATH_API void operator*=(const deFloat s)
this[i] *= s
Definition: TaoDeQuaternionInl.h:32
deQuaternion()
Definition: TaoDeQuaternion.h:39
DE_MATH_API void operator=(const deQuaternion &q)
this = q
Definition: TaoDeQuaternionInl.h:29
DE_MATH_API void inversedMultiply(const deQuaternion &q1, const deQuaternion &q2)
this = q1^-1 * q2
Definition: TaoDeQuaternionInl.h:48
const deFloat & operator[](const deInt i) const
Definition: TaoDeQuaternion.h:56
DE_MATH_API void slerp(const deQuaternion &q, const deQuaternion &qg, const deFloat t, const deFloat addedSpins)
this = SLERP (spherical linear interpolation with extra spins)
Definition: TaoDeQuaternionInl.h:52
DE_MATH_API void lerp(const deQuaternion &q, const deQuaternion &qg, const deFloat t)
this = q + t * (qg - q)
Definition: TaoDeQuaternionInl.h:53
DE_MATH_API void negate(const deQuaternion &q)
this = -q
Definition: TaoDeQuaternionInl.h:43
deQuaternion(deFloat qx, deFloat qy, deFloat qz, deFloat qw)
Definition: TaoDeQuaternion.h:42
Quaternion classThis is a C++ wrapper class of deQuaternionf.
Definition: TaoDeQuaternion.h:35
DE_MATH_API void identity()
this = (0, 0, 0, 1)
Definition: TaoDeQuaternionInl.h:33
DE_MATH_API void normalize()
this[i] *= (1 / sqrt(this^T * this))
Definition: TaoDeQuaternionInl.h:35
DE_MATH_API void multiply(const deQuaternion &q1, const deQuaternion &q2)
this = q1 * q2
Definition: TaoDeQuaternionInl.h:47
DE_MATH_API void subtract(const deQuaternion &q1, const deQuaternion &q2)
this = q1 - q2
Definition: TaoDeQuaternionInl.h:46
3x3 matrix classThis is a C++ wrapper class of deMatrix3f.
Definition: TaoDeMatrix3.h:33
DE_MATH_API void consistentSign(const deQuaternion &q, const deQuaternion &qg)
this = converted qg sign consitent to q
Definition: TaoDeQuaternionInl.h:51
DE_MATH_API deInt operator==(const deQuaternion &q)
Definition: TaoDeQuaternionInl.h:26
DE_MATH_API void add(const deQuaternion &q1, const deQuaternion &q2)
this = q1 + q2
Definition: TaoDeQuaternionInl.h:45
DE_MATH_API void operator+=(const deQuaternion &q)
this[i] += q[i]
Definition: TaoDeQuaternionInl.h:30
DE_MATH_API void multiplyInversed(const deQuaternion &q1, const deQuaternion &q2)
this = q1 * q2^-1
Definition: TaoDeQuaternionInl.h:49
DE_MATH_API void inverse(const deQuaternion &q)
this = q^-1
Definition: TaoDeQuaternionInl.h:44
DE_MATH_API void velocity(const deQuaternion &q, const deVector3 &omega)
this = dq
Definition: TaoDeQuaternionInl.h:50
DE_MATH_API void set(const deMatrix3 &m)
this = m
Definition: TaoDeQuaternionInl.h:37