SCL  1.0
Standard Control Library : Control, dynamics, physics, and simulation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Macros Groups Pages
TaoDeMatrix6.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 _deMatrix6_h
24 #define _deMatrix6_h
25 
33 class deMatrix6
34 {
35 public:
37  deMatrix3* operator[](const deInt row) { return (_mat3 + row * 2); }
39  const deMatrix3* operator[](const deInt row) const { return (_mat3 + row * 2); }
41  DE_MATH_API deFloat& elementAt(const deInt i, const deInt j);
43  DE_MATH_API const deFloat& elementAt(const deInt i, const deInt j) const;
45  DE_MATH_API void operator=(const deMatrix6& m);
47  DE_MATH_API void zero();
49  DE_MATH_API void identity();
51  DE_MATH_API void negate(const deMatrix6& m);
53  DE_MATH_API void add(const deMatrix6& m1, const deMatrix6& m2);
55  DE_MATH_API void subtract(const deMatrix6& m1, const deMatrix6& m2);
57  DE_MATH_API void multiply(const deMatrix6& m, const deFloat s);
59  DE_MATH_API void operator+=(const deMatrix6& m);
61  DE_MATH_API void operator-=(const deMatrix6& m);
63  DE_MATH_API void operator*=(const deFloat s);
65  DE_MATH_API void transpose(const deMatrix6& m);
67  void inverse(const deMatrix6& m);
69  void inverseSPD(const deMatrix6& m);
71  void ludecomp(const deMatrix6& m);
73  void ludecompSPD(const deMatrix6& m);
75  void multiply(const deMatrix6& m1, const deMatrix6& m2);
77  void transposedMultiply(const deMatrix6& m1, const deMatrix6& m2);
79  void multiplyTransposed(const deMatrix6& m1, const deMatrix6& m2);
81  void multiplyTransposed(const deVector6& v1, const deVector6& v2);
83  void similarityXform(const deMatrix6& L, const deMatrix6& I);
85  void similarityXformT(const deMatrix6& L, const deMatrix6& I);
89  // @{
91  DE_MATH_API void set(const deTransform& t);
93  void xform(const deTransform& t, const deMatrix6& m);
95  void similarityRform(const deTransform& t, const deMatrix6& L);
97  void similarityXform(const deTransform& t, const deMatrix6& I);
99  void similarityXformT(const deTransform& t, const deMatrix6& I);
101  void similarityXformInv(const deTransform& t, const deMatrix6& I);
102  // @}
103 
104 private:
105  deMatrix3 _mat3[4];
106 };
107 
108 #endif // _deMatrix6_h
void inverse(const deMatrix6 &m)
this = m^-1
Definition: TaoDeMatrix6.cpp:362
DE_MATH_API void operator-=(const deMatrix6 &m)
this -= m
Definition: TaoDeMatrix6Inl.h:64
void similarityRform(const deTransform &t, const deMatrix6 &L)
this = Li = R Li+1 Rt : L symmetric
Definition: TaoDeMatrix6.cpp:342
void similarityXform(const deMatrix6 &L, const deMatrix6 &I)
this = L * I * L^T : I is symmetric
Definition: TaoDeMatrix6.cpp:34
deMatrix3 * operator[](const deInt row)
Definition: TaoDeMatrix6.h:37
DE_MATH_API void multiply(const deMatrix6 &m, const deFloat s)
this[i] = m[i] * s
Definition: TaoDeMatrix6Inl.h:56
6x1 vector classThis class consists of two 3x1 vectors.
Definition: TaoDeVector6.h:33
DE_MATH_API void operator=(const deMatrix6 &m)
this = m
Definition: TaoDeMatrix6Inl.h:32
void xform(const deTransform &t, const deMatrix6 &m)
this = X * m
Definition: TaoDeMatrix6.cpp:179
Transformation class using rotational matrixThis class consists of a matrix for rotation and a vector...
Definition: TaoDeTransform.h:32
void transposedMultiply(const deMatrix6 &m1, const deMatrix6 &m2)
this = m1^T * m2
Definition: TaoDeMatrix6.cpp:126
void inverseSPD(const deMatrix6 &m)
this = m^-1 where m is SPD
Definition: TaoDeMatrix6.cpp:412
void ludecomp(const deMatrix6 &m)
this = LU decomposition of m
Definition: TaoDeMatrix6.cpp:387
DE_MATH_API void zero()
this = zero matrix
Definition: TaoDeMatrix6Inl.h:36
DE_MATH_API void subtract(const deMatrix6 &m1, const deMatrix6 &m2)
this = m1 - m2
Definition: TaoDeMatrix6Inl.h:52
DE_MATH_API void operator+=(const deMatrix6 &m)
this += m
Definition: TaoDeMatrix6Inl.h:60
DE_MATH_API void operator*=(const deFloat s)
this[i] -= s
Definition: TaoDeMatrix6Inl.h:68
void multiplyTransposed(const deMatrix6 &m1, const deMatrix6 &m2)
this = m1 * m2^T
Definition: TaoDeMatrix6.cpp:151
DE_MATH_API void set(const deTransform &t)
this = X where X = [R 0; dxR R]
Definition: TaoDeMatrix6Inl.h:76
void ludecompSPD(const deMatrix6 &m)
this = LU decomposition of m where m is SPD
Definition: TaoDeMatrix6.cpp:438
6x6 matrix classThis class consists of four 3x3 matrices.
Definition: TaoDeMatrix6.h:33
DE_MATH_API void negate(const deMatrix6 &m)
this = -m
Definition: TaoDeMatrix6Inl.h:44
const deMatrix3 * operator[](const deInt row) const
Definition: TaoDeMatrix6.h:39
DE_MATH_API void transpose(const deMatrix6 &m)
this = m^T
Definition: TaoDeMatrix6Inl.h:72
void similarityXformInv(const deTransform &t, const deMatrix6 &I)
this = Li+1 = Xinv Li Xinvt : L symmetric
Definition: TaoDeMatrix6.cpp:306
3x3 matrix classThis is a C++ wrapper class of deMatrix3f.
Definition: TaoDeMatrix3.h:33
DE_MATH_API void add(const deMatrix6 &m1, const deMatrix6 &m2)
this = m1 + m2
Definition: TaoDeMatrix6Inl.h:48
DE_MATH_API deFloat & elementAt(const deInt i, const deInt j)
Definition: TaoDeMatrix6Inl.h:26
void similarityXformT(const deMatrix6 &L, const deMatrix6 &I)
this = L^T * I * L : I is symmetric
Definition: TaoDeMatrix6.cpp:66
DE_MATH_API void identity()
this = identity matrix
Definition: TaoDeMatrix6Inl.h:40