SCL  1.0
Standard Control Library : Control, dynamics, physics, and simulation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Macros Groups Pages
TaoDeQuaternionInl.h
1 /* Copyright (c) 2005 Arachi, Inc. and Stanford University. All rights reserved.
2  *
3  * Permission is hereby granted, free of charge, to any person obtaining
4  * a copy of this software and associated documentation files (the
5  * "Software"), to deal in the Software without restriction, including
6  * without limitation the rights to use, copy, modify, merge, publish,
7  * distribute, sublicense, and/or sell copies of the Software, and to
8  * permit persons to whom the Software is furnished to do so, subject
9  * to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included
12  * in all copies or substantial portions of the Software.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18  * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21  */
22 
23 #ifndef _deQuaternion_inl
24 #define _deQuaternion_inl
25 
26 DE_MATH_API deInt deQuaternion::operator==(const deQuaternion& q) { return deIsEqualQ4Q4(_data, q); }
27 DE_MATH_API deFloat deQuaternion::dot(const deQuaternion& q) { return deDotQ4Q4(_data, q); }
28 
29 DE_MATH_API void deQuaternion::operator=(const deQuaternion& q) { deSetQ4Q4(_data, q); }
30 DE_MATH_API void deQuaternion::operator+=(const deQuaternion& q) { deAddQ4Q4(_data, q); }
31 DE_MATH_API void deQuaternion::operator-=(const deQuaternion& q) { deSubQ4Q4(_data, q); }
32 DE_MATH_API void deQuaternion::operator*=(const deFloat s) { deMulQ4S1(_data, s); }
33 DE_MATH_API void deQuaternion::identity() { deIdentityQ4(_data); }
34 DE_MATH_API void deQuaternion::zero() { deZeroQ4(_data); }
35 DE_MATH_API void deQuaternion::normalize() { deNormalizeQ4(_data); }
36 DE_MATH_API void deQuaternion::get(deVector3& axis, deFloat &angle) const { deAxisAngleV3S1Q4(axis, &angle, _data); }
37 DE_MATH_API void deQuaternion::set(const deMatrix3& m) { deSetQ4M3(_data, m._data); }
38 DE_MATH_API void deQuaternion::set(const deInt axis, const deFloat angle) { deSetQ4S2(_data, axis, angle); }
39 DE_MATH_API void deQuaternion::set(const deVector3& axis, const deFloat angle) { deSetQ4V3S1(_data, axis, angle); }
40 DE_MATH_API void deQuaternion::set(const deFloat x, const deFloat y, const deFloat z, const deFloat w) { deSetQ4S4(_data, x, y, z, w); }
41 DE_MATH_API void deQuaternion::set(const deFloat* q) { deSetQ4Q4(_data, q); }
42 DE_MATH_API void deQuaternion::eulerZYX(const deVector3& v) { deSetQ4zyxV3(_data, v); }
43 DE_MATH_API void deQuaternion::negate(const deQuaternion& q) { deNegateQ4Q4(_data, q); }
44 DE_MATH_API void deQuaternion::inverse(const deQuaternion& q) { deInvertQ4Q4(_data, q); }
45 DE_MATH_API void deQuaternion::add(const deQuaternion& q1, const deQuaternion& q2) { deAddQ4Q4Q4(_data, q1, q2); }
46 DE_MATH_API void deQuaternion::subtract(const deQuaternion& q1, const deQuaternion& q2) { deSubQ4Q4Q4(_data, q1, q2); }
47 DE_MATH_API void deQuaternion::multiply(const deQuaternion& q1, const deQuaternion& q2) { deMulQ4Q4Q4(_data, q1, q2); }
48 DE_MATH_API void deQuaternion::inversedMultiply(const deQuaternion& q1, const deQuaternion& q2) { deMulQ4Q4iQ4(_data, q1, q2); }
49 DE_MATH_API void deQuaternion::multiplyInversed(const deQuaternion& q1, const deQuaternion& q2) { deMulQ4Q4Q4i(_data, q1, q2); }
50 DE_MATH_API void deQuaternion::velocity(const deQuaternion& q, const deVector3& omega) { deVelocityQ4Q4V3(_data, q, omega); }
51 DE_MATH_API void deQuaternion::consistentSign(const deQuaternion& q, const deQuaternion& qg) { deConsistentSignQ4Q4Q4(_data, q, qg); }
52 DE_MATH_API void deQuaternion::slerp(const deQuaternion& q, const deQuaternion& qg, const deFloat t, const deFloat addedSpins) { deSlerpQ4Q4Q4S2(_data, q, qg, t, addedSpins); }
53 DE_MATH_API void deQuaternion::lerp(const deQuaternion& q, const deQuaternion& qg, const deFloat t) { deLerpQ4Q4Q4S1(_data, q, qg, t); }
54 
55 #endif // _deQuaternion_inl
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
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
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
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
Quaternion classThis is a C++ wrapper class of deQuaternionf.
Definition: TaoDeQuaternion.h:35
DE_MATH_API void get(deVector3 &axis, deFloat &angle) const
convert to axis-angle notation
Definition: TaoDeQuaternionInl.h:36
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