Jpp master_rocky-44-g75b7c4f75
the software that should make you happy
Loading...
Searching...
No Matches
JMATH::JMatrix2S Class Reference

2 x 2 symmetric matrix More...

#include <JMatrix2S.hh>

Inheritance diagram for JMATH::JMatrix2S:
JMATH::JMatrix2D JMATH::JMath< JMatrix2D > JLANG::JEquals< JFirst_t, JSecond_t >

Public Member Functions

 JMatrix2S ()
 Default constructor.
 
 JMatrix2S (const JMatrix2D &A)
 Contructor.
 
 JMatrix2S (const double __a00, const double __a10, const double __a11)
 Contructor.
 
void invert ()
 Invert matrix.
 
JMatrix2D & setIdentity ()
 Set to identity matrix.
 
void set (const JMatrix2D &A)
 Set matrix.
 
JMatrix2D & reset ()
 Set matrix to the null matrix.
 
JMatrix2D & transpose ()
 Transpose.
 
JMatrix2D & negate ()
 Negate matrix.
 
JMatrix2D & add (const JMatrix2D &A)
 Matrix addition.
 
JMatrix2D & sub (const JMatrix2D &A)
 Matrix subtraction.
 
JMatrix2D & mul (const double factor)
 Scale matrix.
 
JMatrix2D & mul (const JMatrix2D &A, const JMatrix2D &B)
 Matrix multiplication.
 
JMatrix2D & mul (const JSecond_t &object)
 Multiply with object.
 
JMatrix2D & div (const double factor)
 Scale matrix.
 
bool equals (const JMatrix2D &A, const double eps=std::numeric_limits< double >::min()) const
 Equality.
 
bool isIdentity (const double eps=std::numeric_limits< double >::min()) const
 Test identity.
 
double getDeterminant () const
 Get determinant of matrix.
 
void transform (double &__x, double &__y) const
 Transform.
 

Static Public Member Functions

static const JMatrix2D & getInstance ()
 Get reference to unique instance of this class object.
 
static const JMatrix2D & getIdentity ()
 Get reference to unique instance of this class object.
 

Public Attributes

double a00
 
double a01
 
double a10
 
double a11
 

Detailed Description

2 x 2 symmetric matrix

Definition at line 26 of file JMatrix2S.hh.

Constructor & Destructor Documentation

◆ JMatrix2S() [1/3]

JMATH::JMatrix2S::JMatrix2S ( )
inline

Default constructor.

Definition at line 33 of file JMatrix2S.hh.

33 :
34 JMatrix2D()
35 {}
JMatrix2D()
Default constructor.

◆ JMatrix2S() [2/3]

JMATH::JMatrix2S::JMatrix2S ( const JMatrix2D & A)
inline

Contructor.

Parameters
Amatrix

Definition at line 43 of file JMatrix2S.hh.

43 :
44 JMatrix2D(A)
45 {}

◆ JMatrix2S() [3/3]

JMATH::JMatrix2S::JMatrix2S ( const double __a00,
const double __a10,
const double __a11 )
inline

Contructor.


The upper triangle is internally set.

Parameters
__a00(0,0)
__a10(1,0)
__a11(1,1)

Definition at line 56 of file JMatrix2S.hh.

57 :
58 JMatrix2D(__a00, __a10,
59 __a10, __a11)
60 {}

Member Function Documentation

◆ invert()

void JMATH::JMatrix2S::invert ( )
inline

Invert matrix.

Definition at line 66 of file JMatrix2S.hh.

67 {
68 using std::swap;
69
70 // LDU decomposition
71
72 int p0 = 0; // permute row 0
73
74 double val;
75
76 val = a00;
77
78 if (fabs(a10) > fabs(val)) {
79
80 p0 = 1;
81 val = a10;
82
83 swap(a00,a10);
84 swap(a01,a11);
85 }
86
87 if (val == 0) {
88 throw JDivisionByZero("LDU decomposition zero pivot");
89 }
90
91 a10 /= val;
92 a11 -= a10 * a01;
93
94 // invert D
95
96 if (a11 == 0) {
97 throw JDivisionByZero("D matrix not invertable");
98 }
99
100 a00 = 1.0 / a00;
101 a11 = 1.0 / a11;
102
103 // invert U
104
105 a01 *= -a00;
106 a01 *= a11;
107
108 // invert L
109
110 a10 = -a10;
111
112 // U^-1 x L^-1
113
114 a00 += a01 * a10;
115 a10 *= a11;
116
117 switch (p0) {
118
119 case 1:
120 swap(a00,a01);
121 swap(a10,a11);
122 break;
123 }
124 }

◆ getInstance()

static const JMatrix2D & JMATH::JMatrix2D::getInstance ( )
inlinestaticinherited

Get reference to unique instance of this class object.

Returns
zero matrix

Definition at line 70 of file JMath/JMatrix2D.hh.

71 {
72 static JMatrix2D matrix;
73
74 return matrix;
75 }

◆ setIdentity()

JMatrix2D & JMATH::JMatrix2D::setIdentity ( )
inlineinherited

Set to identity matrix.

Returns
this matrix

Definition at line 83 of file JMath/JMatrix2D.hh.

84 {
85 a00 = 1.0; a01 = 0.0;
86 a10 = 0.0; a11 = 1.0;
87
88 return *this;
89 }

◆ getIdentity()

static const JMatrix2D & JMATH::JMatrix2D::getIdentity ( )
inlinestaticinherited

Get reference to unique instance of this class object.

Returns
identity matrix

Definition at line 97 of file JMath/JMatrix2D.hh.

98 {
99 static JMatrix2D matrix(JMatrix2D().setIdentity());
100
101 return matrix;
102 }
JMatrix2D & setIdentity()
Set to identity matrix.

◆ set()

void JMATH::JMatrix2D::set ( const JMatrix2D & A)
inlineinherited

Set matrix.

Parameters
Amatrix

Definition at line 110 of file JMath/JMatrix2D.hh.

111 {
112 static_cast<JMatrix2D&>(*this) = A;
113 }

◆ reset()

JMatrix2D & JMATH::JMatrix2D::reset ( )
inlineinherited

Set matrix to the null matrix.

Returns
this matrix

Definition at line 121 of file JMath/JMatrix2D.hh.

122 {
123 *this = JMatrix2D();
124
125 return *this;
126 }

◆ transpose()

JMatrix2D & JMATH::JMatrix2D::transpose ( )
inlineinherited

Transpose.

Returns
this matrix

Definition at line 134 of file JMath/JMatrix2D.hh.

135 {
136 using std::swap;
137
138 swap(a10, a01);
139
140 return *this;
141 }

◆ negate()

JMatrix2D & JMATH::JMatrix2D::negate ( )
inlineinherited

Negate matrix.

Returns
-this matrix

Definition at line 149 of file JMath/JMatrix2D.hh.

150 {
151 a00 = -a00; a01 = -a01;
152 a10 = -a10; a11 = -a11;
153
154 return *this;
155 }

◆ add()

JMatrix2D & JMATH::JMatrix2D::add ( const JMatrix2D & A)
inlineinherited

Matrix addition.

Parameters
Amatrix
Returns
this matrix + A

Definition at line 164 of file JMath/JMatrix2D.hh.

165 {
166 a00 += A.a00; a01 += A.a01;
167 a10 += A.a10; a11 += A.a11;
168
169 return *this;
170 }

◆ sub()

JMatrix2D & JMATH::JMatrix2D::sub ( const JMatrix2D & A)
inlineinherited

Matrix subtraction.

Parameters
Amatrix
Returns
this matrix - A

Definition at line 179 of file JMath/JMatrix2D.hh.

180 {
181 a00 -= A.a00; a01 -= A.a01;
182 a10 -= A.a10; a11 -= A.a11;
183
184 return *this;
185 }

◆ mul() [1/3]

JMatrix2D & JMATH::JMatrix2D::mul ( const double factor)
inlineinherited

Scale matrix.

Parameters
factorfactor
Returns
this matrix * factor

Definition at line 194 of file JMath/JMatrix2D.hh.

195 {
196 a00 *= factor; a01 *= factor;
197 a10 *= factor; a11 *= factor;
198
199 return *this;
200 }

◆ mul() [2/3]

JMatrix2D & JMATH::JMatrix2D::mul ( const JMatrix2D & A,
const JMatrix2D & B )
inlineinherited

Matrix multiplication.

Parameters
Amatrix
Bmatrix
Returns
this matrix

Definition at line 225 of file JMath/JMatrix2D.hh.

227 {
228 a00 = A.a00 * B.a00 + A.a01 * B.a10;
229 a01 = A.a00 * B.a01 + A.a01 * B.a11;
230
231 a10 = A.a10 * B.a00 + A.a11 * B.a10;
232 a11 = A.a10 * B.a01 + A.a11 * B.a11;
233
234 return *this;
235 }

◆ mul() [3/3]

JMatrix2D & JMATH::JMath< JMatrix2D, JSecond_t >::mul ( const JSecond_t & object)
inlineinherited

Multiply with object.

Parameters
objectobject
Returns
result object

Definition at line 354 of file JMath.hh.

355 {
356 return static_cast<JFirst_t&>(*this) = JFirst_t().mul(static_cast<const JFirst_t&>(*this), object);
357 }

◆ div()

JMatrix2D & JMATH::JMatrix2D::div ( const double factor)
inlineinherited

Scale matrix.

Parameters
factorfactor
Returns
this matrix / factor

Definition at line 209 of file JMath/JMatrix2D.hh.

210 {
211 a00 /= factor; a01 /= factor;
212 a10 /= factor; a11 /= factor;
213
214 return *this;
215 }

◆ equals()

bool JMATH::JMatrix2D::equals ( const JMatrix2D & A,
const double eps = std::numeric_limits<double>::min() ) const
inlineinherited

Equality.

Parameters
Amatrix
epsnumerical precision
Returns
true if matrices identical; else false

Definition at line 245 of file JMath/JMatrix2D.hh.

247 {
248 return (fabs(a00 - A.a00) <= eps &&
249 fabs(a01 - A.a01) <= eps &&
250 fabs(a10 - A.a10) <= eps &&
251 fabs(a11 - A.a11) <= eps);
252 }

◆ isIdentity()

bool JMATH::JMatrix2D::isIdentity ( const double eps = std::numeric_limits<double>::min()) const
inlineinherited

Test identity.

Parameters
epsnumerical precision
Returns
true if identity matrix; else false

Definition at line 261 of file JMath/JMatrix2D.hh.

262 {
263 return equals(getIdentity(), eps);
264 }
static const JMatrix2D & getIdentity()
Get reference to unique instance of this class object.
bool equals(const JMatrix2D &A, const double eps=std::numeric_limits< double >::min()) const
Equality.

◆ getDeterminant()

double JMATH::JMatrix2D::getDeterminant ( ) const
inlineinherited

Get determinant of matrix.

Returns
determinant of matrix

Definition at line 272 of file JMath/JMatrix2D.hh.

273 {
274 return a00 * a11 - a01 * a10;
275 }

◆ transform()

void JMATH::JMatrix2D::transform ( double & __x,
double & __y ) const
inlineinherited

Transform.

Parameters
__xx value
__yy value

Definition at line 284 of file JMath/JMatrix2D.hh.

285 {
286 const double x = a00 * __x + a01 * __y;
287 const double y = a10 * __x + a11 * __y;
288
289 __x = x;
290 __y = y;
291 }

Member Data Documentation

◆ a00

double JMATH::JMatrix2D::a00
inherited

Definition at line 346 of file JMath/JMatrix2D.hh.

◆ a01

double JMATH::JMatrix2D::a01
inherited

Definition at line 346 of file JMath/JMatrix2D.hh.

◆ a10

double JMATH::JMatrix2D::a10
inherited

Definition at line 347 of file JMath/JMatrix2D.hh.

◆ a11

double JMATH::JMatrix2D::a11
inherited

Definition at line 347 of file JMath/JMatrix2D.hh.


The documentation for this class was generated from the following file: