SCL  1.0
Standard Control Library : Control, dynamics, physics, and simulation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Macros Groups Pages
TaoDeMatrix3Inl.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 _deMatrix3_inl
24 #define _deMatrix3_inl
25 
26 DE_MATH_API deFloat deMatrix3::det() const { return dedetM3(_data); }
27 
28 DE_MATH_API void deMatrix3::operator=(const deMatrix3& m) { deSetM3M3(_data, m._data); }
29 DE_MATH_API void deMatrix3::zero() { deZeroM3(_data); }
30 DE_MATH_API void deMatrix3::identity() { deIdentityM3(_data); }
31 DE_MATH_API void deMatrix3::negate(const deMatrix3& m) { deNegateM3M3(_data, m._data); }
32 DE_MATH_API void deMatrix3::add(const deMatrix3& m1, const deMatrix3& m2) { deAddM3M3M3(_data, m1._data, m2._data); }
33 DE_MATH_API void deMatrix3::subtract(const deMatrix3& m1, const deMatrix3& m2) { deSubM3M3M3(_data, m1._data, m2._data); }
34 DE_MATH_API void deMatrix3::multiply(const deMatrix3& m1, const deMatrix3& m2) { deMulM3M3M3(_data, m1._data, m2._data); }
35 DE_MATH_API void deMatrix3::transposedMultiply(const deMatrix3& m1, const deMatrix3& m2) { deMulM3M3tM3(_data, m1._data, m2._data); }
36 DE_MATH_API void deMatrix3::multiplyTransposed(const deMatrix3& m1, const deMatrix3& m2) { deMulM3M3M3t(_data, m1._data, m2._data); }
37 DE_MATH_API void deMatrix3::multiply(const deMatrix3& m, const deFloat s) { deMulM3M3S1(_data, m._data, s); }
38 DE_MATH_API void deMatrix3::operator+=(const deMatrix3& m) { deAddM3M3(_data, m._data); }
39 DE_MATH_API void deMatrix3::operator-=(const deMatrix3& m) { deSubM3M3(_data, m._data); }
40 DE_MATH_API void deMatrix3::operator*=(const deFloat s) { deMulM3S1(_data, s); }
41 DE_MATH_API void deMatrix3::diagonal(const deFloat x, const deFloat y, const deFloat z) { deDiagonalM3S3(_data, x, y, z); }
42 DE_MATH_API void deMatrix3::diagonal(const deVector3& v) { deDiagonalM3V3(_data, v); }
43 DE_MATH_API void deMatrix3::eulerXYZ(const deFloat x, const deFloat y, const deFloat z) { deSetM3xyzS3(_data, x, y, z); }
44 DE_MATH_API void deMatrix3::eulerZYX(const deFloat x, const deFloat y, const deFloat z) { deSetM3zyxS3(_data, x, y, z); }
45 DE_MATH_API void deMatrix3::set(const deInt axis, const deFloat angle) { deSetM3S2(_data, axis, angle); }
46 DE_MATH_API void deMatrix3::set(const deVector3& axis, const deFloat angle) { deSetM3V3S1(_data, axis, angle); }
47 DE_MATH_API void deMatrix3::inverseDet(const deMatrix3& m) { deInvertDetM3M3(_data, m._data); }
48 DE_MATH_API void deMatrix3::inverseDetSPD(const deMatrix3& m) { deInvertDetSPDM3M3(_data, m._data); }
49 DE_MATH_API void deMatrix3::ludecomp(const deMatrix3& m) { deLUdecomposeM3M3(_data, m._data); }
50 DE_MATH_API void deMatrix3::transpose(const deMatrix3& m) { deTransposeM3M3(_data, m._data); }
51 DE_MATH_API void deMatrix3::multiplyTransposed(const deVector3& v1, const deVector3& v2) { deMulM3V3V3t(_data, v1, v2); }
52 DE_MATH_API void deMatrix3::crossMultiply(const deVector3& v, const deMatrix3& m) { deMulM3V3xM3(_data, v, m._data); }
53 DE_MATH_API void deMatrix3::cross(const deVector3& v) { deSetM3V3x(_data, v); }
54 DE_MATH_API void deMatrix3::multiplyCross(const deMatrix3& m, const deVector3& v) { deMulM3M3V3x(_data, m._data, v); }
55 DE_MATH_API void deMatrix3::set(const deQuaternion& q) { deSetM3Q4(_data, q); }
56 DE_MATH_API void deMatrix3::set(const deFloat a0, const deFloat a1, const deFloat a2,
57  const deFloat a3, const deFloat a4, const deFloat a5,
58  const deFloat a6, const deFloat a7, const deFloat a8)
59  { deSetM3S9(_data, a0, a1, a2, a3, a4, a5, a6, a7, a8); }
60 
61 #endif // _deMatrix3_inl
DE_MATH_API void transpose(const deMatrix3 &m)
this = m^T
Definition: TaoDeMatrix3Inl.h:50
3x1 vector classThis is a C++ wrapper class of deVector3f.
Definition: TaoDeVector3.h:32
DE_MATH_API void operator+=(const deMatrix3 &m)
this += m
Definition: TaoDeMatrix3Inl.h:38
DE_MATH_API void subtract(const deMatrix3 &m1, const deMatrix3 &m2)
this = m1 - m2
Definition: TaoDeMatrix3Inl.h:33
DE_MATH_API void multiplyCross(const deMatrix3 &m, const deVector3 &v)
this = m * (v x)
Definition: TaoDeMatrix3Inl.h:54
DE_MATH_API void transposedMultiply(const deMatrix3 &m1, const deMatrix3 &m2)
this = m1^T * m2
Definition: TaoDeMatrix3Inl.h:35
DE_MATH_API void operator-=(const deMatrix3 &m)
this -= m
Definition: TaoDeMatrix3Inl.h:39
DE_MATH_API void diagonal(const deFloat x, const deFloat y, const deFloat z)
diag(this) = (x, y, z), offdiag(this) = 0
Definition: TaoDeMatrix3Inl.h:41
DE_MATH_API void identity()
this = identity matrix
Definition: TaoDeMatrix3Inl.h:30
DE_MATH_API void zero()
this = zero matrix
Definition: TaoDeMatrix3Inl.h:29
DE_MATH_API void add(const deMatrix3 &m1, const deMatrix3 &m2)
this = m1 + m2
Definition: TaoDeMatrix3Inl.h:32
DE_MATH_API void ludecomp(const deMatrix3 &m)
this = LU decomposition of m
Definition: TaoDeMatrix3Inl.h:49
DE_MATH_API void multiplyTransposed(const deMatrix3 &m1, const deMatrix3 &m2)
this = m1 * m2^T
Definition: TaoDeMatrix3Inl.h:36
DE_MATH_API void multiply(const deMatrix3 &m1, const deMatrix3 &m2)
this = m1 * m2
Definition: TaoDeMatrix3Inl.h:34
Quaternion classThis is a C++ wrapper class of deQuaternionf.
Definition: TaoDeQuaternion.h:35
DE_MATH_API void negate(const deMatrix3 &m)
this = -m
Definition: TaoDeMatrix3Inl.h:31
DE_MATH_API void operator=(const deMatrix3 &m)
this = m
Definition: TaoDeMatrix3Inl.h:28
DE_MATH_API void crossMultiply(const deVector3 &v, const deMatrix3 &m)
this = (v x) * m
Definition: TaoDeMatrix3Inl.h:52
DE_MATH_API void inverseDetSPD(const deMatrix3 &m)
this = m^-1 using determinent where m is SPD
Definition: TaoDeMatrix3Inl.h:48
DE_MATH_API void set(const deQuaternion &q)
this = q
Definition: TaoDeMatrix3Inl.h:55
DE_MATH_API deFloat det() const
Definition: TaoDeMatrix3Inl.h:26
3x3 matrix classThis is a C++ wrapper class of deMatrix3f.
Definition: TaoDeMatrix3.h:33
DE_MATH_API void cross(const deVector3 &v)
this = (v x)
Definition: TaoDeMatrix3Inl.h:53
DE_MATH_API void eulerXYZ(const deFloat x, const deFloat y, const deFloat z)
this = X-Y-Z Euler angles
Definition: TaoDeMatrix3Inl.h:43
DE_MATH_API void operator*=(const deFloat s)
this *= s
Definition: TaoDeMatrix3Inl.h:40
DE_MATH_API void eulerZYX(const deFloat x, const deFloat y, const deFloat z)
this = Z-Y-X Euler angles
Definition: TaoDeMatrix3Inl.h:44
DE_MATH_API void inverseDet(const deMatrix3 &m)
this = m^-1 using determinent
Definition: TaoDeMatrix3Inl.h:47