Jpp
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
JMATH::JMatrix5S Class Reference

5 x 5 symmetric matrix More...

#include <JMatrix5S.hh>

Inheritance diagram for JMATH::JMatrix5S:
JMATH::JMatrix5D JMATH::JMath< JMatrix5D > JLANG::JEquals< JFirst_t, JSecond_t >

Public Member Functions

 JMatrix5S ()
 Default constructor. More...
 
 JMatrix5S (const JMatrix5D &A)
 Contructor. More...
 
 JMatrix5S (const double __a00, const double __a01, const double __a02, const double __a03, const double __a04, const double __a11, const double __a12, const double __a13, const double __a14, const double __a22, const double __a23, const double __a24, const double __a33, const double __a34, const double __a44)
 Contructor. More...
 
void invert ()
 Invert matrix. More...
 
JMatrix5DsetIdentity ()
 Set to identity matrix. More...
 
void set (const JMatrix5D &A)
 Set matrix. More...
 
JMatrix5Dreset ()
 Set matrix to the null matrix. More...
 
JMatrix5Dtranspose ()
 Transpose. More...
 
JMatrix5Dnegate ()
 Negate matrix. More...
 
JMatrix5Dadd (const JMatrix5D &A)
 Matrix addition. More...
 
JMatrix5Dsub (const JMatrix5D &A)
 Matrix subtraction. More...
 
JMatrix5Dmul (const double factor)
 Scale matrix. More...
 
const JMatrix5Dmul (const JMatrix5D &A, const JMatrix5D &B)
 Matrix multiplication. More...
 
JMatrix5Dmul (const JSecond_t &object)
 Multiply with object. More...
 
JMatrix5Ddiv (const double factor)
 Scale matrix. More...
 
bool equals (const JMatrix5D &A, const double eps=std::numeric_limits< double >::min()) const
 Equality. More...
 
bool isIdentity (const double eps=std::numeric_limits< double >::min()) const
 Test identity. More...
 
double getDeterminant () const
 Get determinant of matrix. More...
 
void transform (double &__x0, double &__x1, double &__x2, double &__x3, double &__x4) const
 Transform. More...
 
double operator() (int row, int col) const
 Get matrix element. More...
 
double & operator() (int row, int col)
 Get matrix element. More...
 

Static Public Member Functions

static const JMatrix5DgetInstance ()
 Get reference to unique instance of this class object. More...
 
static const JMatrix5DgetIdentity ()
 Get reference to unique instance of this class object. More...
 

Public Attributes

double a00
 
double a01
 
double a02
 
double a03
 
double a04
 
double a10
 
double a11
 
double a12
 
double a13
 
double a14
 
double a20
 
double a21
 
double a22
 
double a23
 
double a24
 
double a30
 
double a31
 
double a32
 
double a33
 
double a34
 
double a40
 
double a41
 
double a42
 
double a43
 
double a44
 

Static Public Attributes

static const int NUMBER_OF_DIMENSIONS = 5
 

Detailed Description

5 x 5 symmetric matrix

Definition at line 26 of file JMatrix5S.hh.

Constructor & Destructor Documentation

◆ JMatrix5S() [1/3]

JMATH::JMatrix5S::JMatrix5S ( )
inline

Default constructor.

Definition at line 33 of file JMatrix5S.hh.

33  :
34  JMatrix5D()
35  {}

◆ JMatrix5S() [2/3]

JMATH::JMatrix5S::JMatrix5S ( const JMatrix5D A)
inline

Contructor.

Parameters
Amatrix

Definition at line 43 of file JMatrix5S.hh.

43  :
44  JMatrix5D(A)
45  {}

◆ JMatrix5S() [3/3]

JMATH::JMatrix5S::JMatrix5S ( const double  __a00,
const double  __a01,
const double  __a02,
const double  __a03,
const double  __a04,
const double  __a11,
const double  __a12,
const double  __a13,
const double  __a14,
const double  __a22,
const double  __a23,
const double  __a24,
const double  __a33,
const double  __a34,
const double  __a44 
)
inline

Contructor.

Parameters
__a00(0,0)
__a01(0,1)
__a02(0,2)
__a03(0,3)
__a04(0,4)
__a11(1,1)
__a12(1,2)
__a13(1,3)
__a14(1,4)
__a22(2,2)
__a23(2,3)
__a24(2,4)
__a33(3,3)
__a34(3,4)
__a44(4,4)

Definition at line 67 of file JMatrix5S.hh.

71  :
72  JMatrix5D(__a00, __a01, __a02, __a03, __a04,
73  __a01, __a11, __a12, __a13, __a14,
74  __a02, __a12, __a22, __a23, __a24,
75  __a03, __a13, __a23, __a33, __a34,
76  __a04, __a14, __a24, __a34, __a44)
77  {}

Member Function Documentation

◆ invert()

void JMATH::JMatrix5S::invert ( )
inline

Invert matrix.

Definition at line 83 of file JMatrix5S.hh.

84  {
85  using std::swap;
86 
87  if (isIdentity()) {
88  return;
89  }
90 
91  // LDU decomposition
92 
93  int p0 = 0; // permute row 0
94  int p1 = 0; // permute row 1
95  int p2 = 0; // permute row 2
96  int p3 = 0; // permute row 3
97 
98  double val;
99 
100  val = a00;
101 
102  if (fabs(a10) > fabs(val)) {
103  p0 = 1;
104  val = a10;
105  }
106 
107  if (fabs(a20) > fabs(val)) {
108  p0 = 2;
109  val = a20;
110  }
111 
112  if (fabs(a30) > fabs(val)) {
113  p0 = 3;
114  val = a30;
115  }
116 
117  if (fabs(a40) > fabs(val)) {
118  p0 = 4;
119  val = a40;
120  }
121 
122  switch (p0) {
123 
124  case 1:
125  swap(a00,a10);
126  swap(a01,a11);
127  swap(a02,a12);
128  swap(a03,a13);
129  swap(a04,a14);
130  break;
131 
132  case 2:
133  swap(a00,a20);
134  swap(a01,a21);
135  swap(a02,a22);
136  swap(a03,a23);
137  swap(a04,a24);
138  break;
139 
140  case 3:
141  swap(a00,a30);
142  swap(a01,a31);
143  swap(a02,a32);
144  swap(a03,a33);
145  swap(a04,a34);
146  break;
147 
148  case 4:
149  swap(a00,a40);
150  swap(a01,a41);
151  swap(a02,a42);
152  swap(a03,a43);
153  swap(a04,a44);
154  break;
155  }
156 
157  if (val == 0) {
158  throw JDivisionByZero("LDU decomposition zero pivot");
159  }
160 
161  a10 /= val;
162  a11 -= a10 * a01;
163  a12 -= a10 * a02;
164  a13 -= a10 * a03;
165  a14 -= a10 * a04;
166 
167  a20 /= val;
168  a21 -= a20 * a01;
169  a22 -= a20 * a02;
170  a23 -= a20 * a03;
171  a24 -= a20 * a04;
172 
173  a30 /= val;
174  a31 -= a30 * a01;
175  a32 -= a30 * a02;
176  a33 -= a30 * a03;
177  a34 -= a30 * a04;
178 
179  a40 /= val;
180  a41 -= a40 * a01;
181  a42 -= a40 * a02;
182  a43 -= a40 * a03;
183  a44 -= a40 * a04;
184 
185  val = a11;
186 
187  if (fabs(a21) > fabs(val)) {
188  p1 = 2;
189  val = a21;
190  }
191 
192  if (fabs(a31) > fabs(val)) {
193  p1 = 3;
194  val = a31;
195  }
196 
197  if (fabs(a41) > fabs(val)) {
198  p1 = 4;
199  val = a41;
200  }
201 
202  switch (p1) {
203 
204  case 2:
205  swap(a10,a20);
206  swap(a11,a21);
207  swap(a12,a22);
208  swap(a13,a23);
209  swap(a14,a24);
210  break;
211 
212  case 3:
213  swap(a10,a30);
214  swap(a11,a31);
215  swap(a12,a32);
216  swap(a13,a33);
217  swap(a14,a34);
218  break;
219 
220  case 4:
221  swap(a10,a40);
222  swap(a11,a41);
223  swap(a12,a42);
224  swap(a13,a43);
225  swap(a14,a44);
226  break;
227  }
228 
229  if (val == 0) {
230  throw JDivisionByZero("LDU decomposition zero pivot");
231  }
232 
233  a21 /= val;
234  a22 -= a21 * a12;
235  a23 -= a21 * a13;
236  a24 -= a21 * a14;
237 
238  a31 /= val;
239  a32 -= a31 * a12;
240  a33 -= a31 * a13;
241  a34 -= a31 * a14;
242 
243  a41 /= val;
244  a42 -= a41 * a12;
245  a43 -= a41 * a13;
246  a44 -= a41 * a14;
247 
248  val = a22;
249 
250  if (fabs(a32) > fabs(val)) {
251  p2 = 3;
252  val = a32;
253  }
254 
255  if (fabs(a42) > fabs(val)) {
256  p2 = 4;
257  val = a42;
258  }
259 
260  switch (p2) {
261 
262  case 3:
263  swap(a20,a30);
264  swap(a21,a31);
265  swap(a22,a32);
266  swap(a23,a33);
267  swap(a24,a34);
268  break;
269 
270  case 4:
271  swap(a20,a40);
272  swap(a21,a41);
273  swap(a22,a42);
274  swap(a23,a43);
275  swap(a24,a44);
276  break;
277  }
278 
279  if (val == 0) {
280  throw JDivisionByZero("LDU decomposition zero pivot");
281  }
282 
283  a32 /= val;
284  a33 -= a32 * a23;
285  a34 -= a32 * a24;
286 
287  a42 /= val;
288  a43 -= a42 * a23;
289  a44 -= a42 * a24;
290 
291  val = a33;
292 
293  if (fabs(a43) > fabs(val)) {
294  p3 = 4;
295  val = a43;
296  }
297 
298  switch (p3) {
299 
300  case 4:
301  swap(a30,a40);
302  swap(a31,a41);
303  swap(a32,a42);
304  swap(a33,a43);
305  swap(a34,a44);
306  break;
307  }
308 
309  if (val == 0) {
310  throw JDivisionByZero("LDU decomposition zero pivot");
311  }
312 
313  a43 /= val;
314  a44 -= a43 * a34;
315 
316  // invert D
317 
318  if (a44 == 0) {
319  throw JDivisionByZero("D matrix not invertable");
320  }
321 
322  a00 = 1.0 / a00;
323  a11 = 1.0 / a11;
324  a22 = 1.0 / a22;
325  a33 = 1.0 / a33;
326  a44 = 1.0 / a44;
327 
328  // invert U
329 
330  a01 *= -a00;
331  a01 *= a11;
332 
333  a02 *= -a00;
334  a02 -= a01 * a12;
335  a02 *= a22;
336 
337  a03 *= -a00;
338  a03 -= a01 * a13;
339  a03 -= a02 * a23;
340  a03 *= a33;
341 
342  a04 *= -a00;
343  a04 -= a01 * a14;
344  a04 -= a02 * a24;
345  a04 -= a03 * a34;
346  a04 *= a44;
347 
348  a12 *= -a11;
349  a12 *= a22;
350 
351  a13 *= -a11;
352  a13 -= a12 * a23;
353  a13 *= a33;
354 
355  a14 *= -a11;
356  a14 -= a12 * a24;
357  a14 -= a13 * a34;
358  a14 *= a44;
359 
360  a23 *= -a22;
361  a23 *= a33;
362 
363  a24 *= -a22;
364  a24 -= a23 * a34;
365  a24 *= a44;
366 
367  a34 *= -a33;
368  a34 *= a44;
369 
370  // invert L
371 
372  a43 = -a43;
373 
374  a42 = -a42;
375  a42 -= a43 * a32;
376 
377  a41 = -a41;
378  a41 -= a42 * a21;
379  a41 -= a43 * a31;
380 
381  a40 = -a40;
382  a40 -= a41 * a10;
383  a40 -= a42 * a20;
384  a40 -= a43 * a30;
385 
386  a32 = -a32;
387 
388  a31 = -a31;
389  a31 -= a32 * a21;
390 
391  a30 = -a30;
392  a30 -= a31 * a10;
393  a30 -= a32 * a20;
394 
395  a21 = -a21;
396  a20 = -a20;
397  a20 -= a21 * a10;
398  a10 = -a10;
399 
400  // U^-1 x L^-1
401 
402  a00 += a01 * a10 + a02 * a20 + a03 * a30 + a04 * a40;
403  a01 += a02 * a21 + a03 * a31 + a04 * a41;
404  a02 += a03 * a32 + a04 * a42;
405  a03 += a04 * a43;
406 
407  a10 *= a11;
408  a10 += a12 * a20 + a13 * a30 + a14 * a40;
409  a11 += a12 * a21 + a13 * a31 + a14 * a41;
410  a12 += a13 * a32 + a14 * a42;
411  a13 += a14 * a43;
412 
413  a20 *= a22;
414  a20 += a23 * a30 + a24 * a40;
415  a21 *= a22;
416  a21 += a23 * a31 + a24 * a41;
417  a22 += a23 * a32 + a24 * a42;
418  a23 += a24 * a43;
419 
420  a30 *= a33;
421  a30 += a34 * a40;
422  a31 *= a33;
423  a31 += a34 * a41;
424  a32 *= a33;
425  a32 += a34 * a42;
426  a33 += a34 * a43;
427 
428  a40 *= a44;
429  a41 *= a44;
430  a42 *= a44;
431  a43 *= a44;
432 
433  switch (p3) {
434 
435  case 4:
436  swap(a03,a04);
437  swap(a13,a14);
438  swap(a23,a24);
439  swap(a33,a34);
440  swap(a43,a44);
441  break;
442  }
443 
444  switch (p2) {
445 
446  case 3:
447  swap(a02,a03);
448  swap(a12,a13);
449  swap(a22,a23);
450  swap(a32,a33);
451  swap(a42,a43);
452  break;
453 
454  case 4:
455  swap(a02,a04);
456  swap(a12,a14);
457  swap(a22,a24);
458  swap(a32,a34);
459  swap(a42,a44);
460  break;
461  }
462 
463  switch (p1) {
464 
465  case 2:
466  swap(a01,a02);
467  swap(a11,a12);
468  swap(a21,a22);
469  swap(a31,a32);
470  swap(a41,a42);
471  break;
472 
473  case 3:
474  swap(a01,a03);
475  swap(a11,a13);
476  swap(a21,a23);
477  swap(a31,a33);
478  swap(a41,a43);
479  break;
480 
481  case 4:
482  swap(a01,a04);
483  swap(a11,a14);
484  swap(a21,a24);
485  swap(a31,a34);
486  swap(a41,a44);
487  break;
488  }
489 
490  switch (p0) {
491 
492  case 1:
493  swap(a00,a01);
494  swap(a10,a11);
495  swap(a20,a21);
496  swap(a30,a31);
497  swap(a40,a41);
498  break;
499 
500  case 2:
501  swap(a00,a02);
502  swap(a10,a12);
503  swap(a20,a22);
504  swap(a30,a32);
505  swap(a40,a42);
506  break;
507 
508  case 3:
509  swap(a00,a03);
510  swap(a10,a13);
511  swap(a20,a23);
512  swap(a30,a33);
513  swap(a40,a43);
514  break;
515 
516  case 4:
517  swap(a00,a04);
518  swap(a10,a14);
519  swap(a20,a24);
520  swap(a30,a34);
521  swap(a40,a44);
522  break;
523  }
524  }

◆ getInstance()

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

Get reference to unique instance of this class object.

Returns
zero matrix

Definition at line 101 of file JMatrix5D.hh.

102  {
103  static JMatrix5D matrix;
104 
105  return matrix;
106  }

◆ setIdentity()

JMatrix5D& JMATH::JMatrix5D::setIdentity ( )
inlineinherited

Set to identity matrix.

Returns
this matrix

Definition at line 114 of file JMatrix5D.hh.

115  {
116  a00 = 1.0; a01 = 0.0; a02 = 0.0; a03 = 0.0; a04 = 0.0;
117  a10 = 0.0; a11 = 1.0; a12 = 0.0; a13 = 0.0; a14 = 0.0;
118  a20 = 0.0; a21 = 0.0; a22 = 1.0; a23 = 0.0; a24 = 0.0;
119  a30 = 0.0; a31 = 0.0; a32 = 0.0; a33 = 1.0; a34 = 0.0;
120  a40 = 0.0; a41 = 0.0; a42 = 0.0; a43 = 0.0; a44 = 1.0;
121 
122  return *this;
123  }

◆ getIdentity()

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

Get reference to unique instance of this class object.

Returns
identity matrix

Definition at line 131 of file JMatrix5D.hh.

132  {
133  static JMatrix5D matrix(JMatrix5D().setIdentity());
134 
135  return matrix;
136  }

◆ set()

void JMATH::JMatrix5D::set ( const JMatrix5D A)
inlineinherited

Set matrix.

Parameters
Amatrix

Definition at line 144 of file JMatrix5D.hh.

145  {
146  static_cast<JMatrix5D&>(*this) = A;
147  }

◆ reset()

JMatrix5D& JMATH::JMatrix5D::reset ( )
inlineinherited

Set matrix to the null matrix.

Returns
this matrix

Definition at line 155 of file JMatrix5D.hh.

156  {
157  *this = JMatrix5D();
158 
159  return *this;
160  }

◆ transpose()

JMatrix5D& JMATH::JMatrix5D::transpose ( )
inlineinherited

Transpose.

Returns
this matrix

Definition at line 168 of file JMatrix5D.hh.

169  {
170  using std::swap;
171 
172  swap(a10, a01);
173  swap(a20, a02);
174  swap(a21, a12);
175  swap(a30, a03);
176  swap(a31, a13);
177  swap(a32, a23);
178  swap(a40, a04);
179  swap(a41, a14);
180  swap(a42, a24);
181  swap(a43, a34);
182 
183  return *this;
184  }

◆ negate()

JMatrix5D& JMATH::JMatrix5D::negate ( )
inlineinherited

Negate matrix.

Returns
-this matrix

Definition at line 192 of file JMatrix5D.hh.

193  {
194  a00 = -a00; a01 = -a01; a02 = -a02; a03 = -a03; a04 = -a04;
195  a10 = -a10; a11 = -a11; a12 = -a12; a13 = -a13; a14 = -a14;
196  a20 = -a20; a21 = -a21; a22 = -a22; a13 = -a23; a14 = -a24;
197  a30 = -a30; a31 = -a31; a32 = -a32; a33 = -a33; a34 = -a34;
198  a40 = -a40; a41 = -a41; a42 = -a42; a43 = -a43; a44 = -a44;
199 
200  return *this;
201  }

◆ add()

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

Matrix addition.

Parameters
Amatrix
Returns
this matrix + A

Definition at line 210 of file JMatrix5D.hh.

211  {
212  a00 += A.a00; a01 += A.a01; a02 += A.a02; a03 += A.a03; a04 += A.a04;
213  a10 += A.a10; a11 += A.a11; a12 += A.a12; a13 += A.a13; a14 += A.a14;
214  a20 += A.a20; a21 += A.a21; a22 += A.a22; a23 += A.a23; a24 += A.a24;
215  a30 += A.a30; a31 += A.a31; a32 += A.a32; a33 += A.a33; a34 += A.a34;
216  a40 += A.a40; a41 += A.a41; a42 += A.a42; a43 += A.a43; a44 += A.a44;
217 
218  return *this;
219  }

◆ sub()

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

Matrix subtraction.

Parameters
Amatrix
Returns
this matrix - A

Definition at line 228 of file JMatrix5D.hh.

229  {
230  a00 -= A.a00; a01 -= A.a01; a02 -= A.a02; a03 -= A.a03; a04 -= A.a04;
231  a10 -= A.a10; a11 -= A.a11; a12 -= A.a12; a13 -= A.a13; a14 -= A.a14;
232  a20 -= A.a20; a21 -= A.a21; a22 -= A.a22; a23 -= A.a23; a24 -= A.a24;
233  a30 -= A.a30; a31 -= A.a31; a32 -= A.a32; a33 -= A.a33; a34 -= A.a34;
234  a40 -= A.a40; a41 -= A.a41; a42 -= A.a42; a43 -= A.a43; a44 -= A.a44;
235 
236  return *this;
237  }

◆ mul() [1/3]

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

Scale matrix.

Parameters
factorfactor
Returns
this matrix * factor

Definition at line 246 of file JMatrix5D.hh.

247  {
248  a00 *= factor; a01 *= factor; a02 *= factor; a03 *= factor; a04 *= factor;
249  a10 *= factor; a11 *= factor; a12 *= factor; a13 *= factor; a14 *= factor;
250  a20 *= factor; a21 *= factor; a22 *= factor; a23 *= factor; a24 *= factor;
251  a30 *= factor; a31 *= factor; a32 *= factor; a33 *= factor; a34 *= factor;
252  a40 *= factor; a41 *= factor; a42 *= factor; a43 *= factor; a44 *= factor;
253 
254  return *this;
255  }

◆ mul() [2/3]

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

Matrix multiplication.

Parameters
Amatrix
Bmatrix
Returns
this matrix

Definition at line 283 of file JMatrix5D.hh.

285  {
286  a00 = A.a00 * B.a00 + A.a01 * B.a10 + A.a02 * B.a20 + A.a03 * B.a30 + A.a04 * B.a40;
287  a01 = A.a00 * B.a01 + A.a01 * B.a11 + A.a02 * B.a21 + A.a03 * B.a31 + A.a04 * B.a41;
288  a02 = A.a00 * B.a02 + A.a01 * B.a12 + A.a02 * B.a22 + A.a03 * B.a32 + A.a04 * B.a42;
289  a03 = A.a00 * B.a03 + A.a01 * B.a13 + A.a02 * B.a23 + A.a03 * B.a33 + A.a04 * B.a43;
290  a04 = A.a00 * B.a04 + A.a01 * B.a14 + A.a02 * B.a24 + A.a03 * B.a34 + A.a04 * B.a44;
291 
292  a10 = A.a10 * B.a00 + A.a11 * B.a10 + A.a12 * B.a20 + A.a13 * B.a30 + A.a14 * B.a40;
293  a11 = A.a10 * B.a01 + A.a11 * B.a11 + A.a12 * B.a21 + A.a13 * B.a31 + A.a14 * B.a41;
294  a12 = A.a10 * B.a02 + A.a11 * B.a12 + A.a12 * B.a22 + A.a13 * B.a32 + A.a14 * B.a42;
295  a13 = A.a10 * B.a03 + A.a11 * B.a13 + A.a12 * B.a23 + A.a13 * B.a33 + A.a14 * B.a43;
296  a14 = A.a10 * B.a04 + A.a11 * B.a14 + A.a12 * B.a24 + A.a13 * B.a34 + A.a14 * B.a44;
297 
298  a20 = A.a20 * B.a00 + A.a21 * B.a10 + A.a22 * B.a20 + A.a23 * B.a30 + A.a24 * B.a40;
299  a21 = A.a20 * B.a01 + A.a21 * B.a11 + A.a22 * B.a21 + A.a23 * B.a31 + A.a24 * B.a41;
300  a22 = A.a20 * B.a02 + A.a21 * B.a12 + A.a22 * B.a22 + A.a23 * B.a32 + A.a24 * B.a42;
301  a23 = A.a20 * B.a03 + A.a21 * B.a13 + A.a22 * B.a23 + A.a23 * B.a33 + A.a24 * B.a43;
302  a24 = A.a20 * B.a04 + A.a21 * B.a14 + A.a22 * B.a24 + A.a23 * B.a34 + A.a24 * B.a44;
303 
304  a30 = A.a30 * B.a00 + A.a31 * B.a10 + A.a32 * B.a20 + A.a33 * B.a30 + A.a34 * B.a40;
305  a31 = A.a30 * B.a01 + A.a31 * B.a11 + A.a32 * B.a21 + A.a33 * B.a31 + A.a34 * B.a41;
306  a32 = A.a30 * B.a02 + A.a31 * B.a12 + A.a32 * B.a22 + A.a33 * B.a32 + A.a34 * B.a42;
307  a33 = A.a30 * B.a03 + A.a31 * B.a13 + A.a32 * B.a23 + A.a33 * B.a33 + A.a34 * B.a43;
308  a34 = A.a30 * B.a04 + A.a31 * B.a14 + A.a32 * B.a24 + A.a33 * B.a34 + A.a34 * B.a44;
309 
310  a40 = A.a40 * B.a00 + A.a41 * B.a10 + A.a42 * B.a20 + A.a43 * B.a30 + A.a44 * B.a40;
311  a41 = A.a40 * B.a01 + A.a41 * B.a11 + A.a42 * B.a21 + A.a43 * B.a31 + A.a44 * B.a41;
312  a42 = A.a40 * B.a02 + A.a41 * B.a12 + A.a42 * B.a22 + A.a43 * B.a32 + A.a44 * B.a42;
313  a43 = A.a40 * B.a03 + A.a41 * B.a13 + A.a42 * B.a23 + A.a43 * B.a33 + A.a44 * B.a43;
314  a44 = A.a40 * B.a04 + A.a41 * B.a14 + A.a42 * B.a24 + A.a43 * B.a34 + A.a44 * B.a44;
315 
316  return *this;
317  }

◆ mul() [3/3]

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

Multiply with object.

Parameters
objectobject
Returns
result object

Definition at line 273 of file JMath.hh.

274  {
275  return static_cast<JFirst_t&>(*this) = JCalculator<JFirst_t>::calculator.mul(static_cast<const JFirst_t&>(*this), object);
276  }

◆ div()

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

Scale matrix.

Parameters
factorfactor
Returns
this matrix / factor

Definition at line 264 of file JMatrix5D.hh.

265  {
266  a00 /= factor; a01 /= factor; a02 /= factor; a03 /= factor; a04 /= factor;
267  a10 /= factor; a11 /= factor; a12 /= factor; a13 /= factor; a14 /= factor;
268  a20 /= factor; a21 /= factor; a22 /= factor; a23 /= factor; a24 /= factor;
269  a30 /= factor; a31 /= factor; a32 /= factor; a33 /= factor; a34 /= factor;
270  a40 /= factor; a41 /= factor; a42 /= factor; a43 /= factor; a44 /= factor;
271 
272  return *this;
273  }

◆ equals()

bool JMATH::JMatrix5D::equals ( const JMatrix5D 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 327 of file JMatrix5D.hh.

329  {
330  return (fabs(a00 - A.a00) <= eps &&
331  fabs(a01 - A.a01) <= eps &&
332  fabs(a02 - A.a02) <= eps &&
333  fabs(a03 - A.a03) <= eps &&
334  fabs(a04 - A.a04) <= eps &&
335  fabs(a10 - A.a10) <= eps &&
336  fabs(a11 - A.a11) <= eps &&
337  fabs(a12 - A.a12) <= eps &&
338  fabs(a13 - A.a13) <= eps &&
339  fabs(a14 - A.a14) <= eps &&
340  fabs(a20 - A.a20) <= eps &&
341  fabs(a21 - A.a21) <= eps &&
342  fabs(a22 - A.a22) <= eps &&
343  fabs(a23 - A.a23) <= eps &&
344  fabs(a24 - A.a24) <= eps &&
345  fabs(a30 - A.a30) <= eps &&
346  fabs(a31 - A.a31) <= eps &&
347  fabs(a32 - A.a32) <= eps &&
348  fabs(a33 - A.a33) <= eps &&
349  fabs(a34 - A.a34) <= eps &&
350  fabs(a40 - A.a40) <= eps &&
351  fabs(a41 - A.a41) <= eps &&
352  fabs(a42 - A.a42) <= eps &&
353  fabs(a43 - A.a43) <= eps &&
354  fabs(a44 - A.a44) <= eps);
355  }

◆ isIdentity()

bool JMATH::JMatrix5D::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 364 of file JMatrix5D.hh.

365  {
366  return equals(getIdentity(), eps);
367  }

◆ getDeterminant()

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

Get determinant of matrix.

Returns
determinant of matrix

Definition at line 375 of file JMatrix5D.hh.

376  {
377  double det = 0.0;
378 
379  det += a00 * JMatrix4D(a11, a12, a13, a14,
380  a21, a22, a23, a24,
381  a31, a32, a33, a34,
382  a41, a42, a43, a44).getDeterminant();
383 
384  det -= a01 * JMatrix4D(a10, a12, a13, a14,
385  a20, a22, a23, a24,
386  a30, a32, a33, a34,
387  a40, a42, a43, a44).getDeterminant();
388 
389  det += a02 * JMatrix4D(a10, a11, a13, a14,
390  a20, a21, a23, a24,
391  a30, a31, a33, a34,
392  a40, a41, a43, a44).getDeterminant();
393 
394  det -= a03 * JMatrix4D(a10, a11, a12, a14,
395  a20, a21, a22, a24,
396  a30, a31, a32, a34,
397  a40, a41, a42, a44).getDeterminant();
398 
399  det += a04 * JMatrix4D(a10, a11, a12, a13,
400  a20, a21, a22, a23,
401  a30, a31, a32, a33,
402  a40, a41, a42, a43).getDeterminant();
403 
404  return det;
405  }

◆ transform()

void JMATH::JMatrix5D::transform ( double &  __x0,
double &  __x1,
double &  __x2,
double &  __x3,
double &  __x4 
) const
inlineinherited

Transform.

Parameters
__x0x0 value
__x1x1 value
__x2x2 value
__x3x3 value
__x4x4 value

Definition at line 417 of file JMatrix5D.hh.

418  {
419  const double x0 = a00 * __x0 + a01 * __x1 + a02 * __x2 + a03 * __x3 + a04 * __x4;
420  const double x1 = a10 * __x0 + a11 * __x1 + a12 * __x2 + a13 * __x3 + a14 * __x4;
421  const double x2 = a20 * __x0 + a21 * __x1 + a22 * __x2 + a23 * __x3 + a24 * __x4;
422  const double x3 = a30 * __x0 + a31 * __x1 + a32 * __x2 + a33 * __x3 + a34 * __x4;
423  const double x4 = a40 * __x0 + a41 * __x1 + a42 * __x2 + a43 * __x3 + a44 * __x4;
424 
425  __x0 = x0;
426  __x1 = x1;
427  __x2 = x2;
428  __x3 = x3;
429  __x4 = x4;
430  }

◆ operator()() [1/2]

double JMATH::JMatrix5D::operator() ( int  row,
int  col 
) const
inlineinherited

Get matrix element.

Parameters
rowrow number
colcolumn number
Returns
matrix element at (row,col)

Definition at line 501 of file JMatrix5D.hh.

502  {
503  return (&a00)[row * NUMBER_OF_DIMENSIONS + col];
504  }

◆ operator()() [2/2]

double& JMATH::JMatrix5D::operator() ( int  row,
int  col 
)
inlineinherited

Get matrix element.

Parameters
rowrow number
colcolumn number
Returns
matrix element at (row,col)

Definition at line 514 of file JMatrix5D.hh.

515  {
516  return (&a00)[row * NUMBER_OF_DIMENSIONS + col];
517  }

Member Data Documentation

◆ NUMBER_OF_DIMENSIONS

const int JMATH::JMatrix5D::NUMBER_OF_DIMENSIONS = 5
staticinherited

Definition at line 520 of file JMatrix5D.hh.

◆ a00

double JMATH::JMatrix5D::a00
inherited

Definition at line 522 of file JMatrix5D.hh.

◆ a01

double JMATH::JMatrix5D::a01
inherited

Definition at line 522 of file JMatrix5D.hh.

◆ a02

double JMATH::JMatrix5D::a02
inherited

Definition at line 522 of file JMatrix5D.hh.

◆ a03

double JMATH::JMatrix5D::a03
inherited

Definition at line 522 of file JMatrix5D.hh.

◆ a04

double JMATH::JMatrix5D::a04
inherited

Definition at line 522 of file JMatrix5D.hh.

◆ a10

double JMATH::JMatrix5D::a10
inherited

Definition at line 523 of file JMatrix5D.hh.

◆ a11

double JMATH::JMatrix5D::a11
inherited

Definition at line 523 of file JMatrix5D.hh.

◆ a12

double JMATH::JMatrix5D::a12
inherited

Definition at line 523 of file JMatrix5D.hh.

◆ a13

double JMATH::JMatrix5D::a13
inherited

Definition at line 523 of file JMatrix5D.hh.

◆ a14

double JMATH::JMatrix5D::a14
inherited

Definition at line 523 of file JMatrix5D.hh.

◆ a20

double JMATH::JMatrix5D::a20
inherited

Definition at line 524 of file JMatrix5D.hh.

◆ a21

double JMATH::JMatrix5D::a21
inherited

Definition at line 524 of file JMatrix5D.hh.

◆ a22

double JMATH::JMatrix5D::a22
inherited

Definition at line 524 of file JMatrix5D.hh.

◆ a23

double JMATH::JMatrix5D::a23
inherited

Definition at line 524 of file JMatrix5D.hh.

◆ a24

double JMATH::JMatrix5D::a24
inherited

Definition at line 524 of file JMatrix5D.hh.

◆ a30

double JMATH::JMatrix5D::a30
inherited

Definition at line 525 of file JMatrix5D.hh.

◆ a31

double JMATH::JMatrix5D::a31
inherited

Definition at line 525 of file JMatrix5D.hh.

◆ a32

double JMATH::JMatrix5D::a32
inherited

Definition at line 525 of file JMatrix5D.hh.

◆ a33

double JMATH::JMatrix5D::a33
inherited

Definition at line 525 of file JMatrix5D.hh.

◆ a34

double JMATH::JMatrix5D::a34
inherited

Definition at line 525 of file JMatrix5D.hh.

◆ a40

double JMATH::JMatrix5D::a40
inherited

Definition at line 526 of file JMatrix5D.hh.

◆ a41

double JMATH::JMatrix5D::a41
inherited

Definition at line 526 of file JMatrix5D.hh.

◆ a42

double JMATH::JMatrix5D::a42
inherited

Definition at line 526 of file JMatrix5D.hh.

◆ a43

double JMATH::JMatrix5D::a43
inherited

Definition at line 526 of file JMatrix5D.hh.

◆ a44

double JMATH::JMatrix5D::a44
inherited

Definition at line 526 of file JMatrix5D.hh.


The documentation for this class was generated from the following file:
JMATH::JMatrix5D::a31
double a31
Definition: JMatrix5D.hh:525
JMATH::JMatrix5D::a04
double a04
Definition: JMatrix5D.hh:522
JMATH::JMatrix5D::getIdentity
static const JMatrix5D & getIdentity()
Get reference to unique instance of this class object.
Definition: JMatrix5D.hh:131
JMATH::JMatrix5D::a21
double a21
Definition: JMatrix5D.hh:524
JMATH::JMatrix5D::a32
double a32
Definition: JMatrix5D.hh:525
JMATH::JMatrix5D::a20
double a20
Definition: JMatrix5D.hh:524
JMATH::JMatrix5D::a30
double a30
Definition: JMatrix5D.hh:525
JMATH::JMatrix5D::a01
double a01
Definition: JMatrix5D.hh:522
JMATH::JMatrix5D::a34
double a34
Definition: JMatrix5D.hh:525
JMATH::JMatrix5D::NUMBER_OF_DIMENSIONS
static const int NUMBER_OF_DIMENSIONS
Definition: JMatrix5D.hh:520
JMATH::JMatrix4D
4 x 4 matrix
Definition: JMatrix4D.hh:33
JMATH::JMatrix5D::a11
double a11
Definition: JMatrix5D.hh:523
JMATH::JMatrix5D::a13
double a13
Definition: JMatrix5D.hh:523
JMATH::JMatrix5D::a12
double a12
Definition: JMatrix5D.hh:523
JMATH::JMatrix5D::a00
double a00
Definition: JMatrix5D.hh:522
JMATH::JMatrix5D::a41
double a41
Definition: JMatrix5D.hh:526
JMATH::JMatrix5D::a02
double a02
Definition: JMatrix5D.hh:522
JMATH::JMatrix5D::a33
double a33
Definition: JMatrix5D.hh:525
JMATH::JMatrix5D::a10
double a10
Definition: JMatrix5D.hh:523
JMATH::JMatrix5D::a40
double a40
Definition: JMatrix5D.hh:526
JMATH::JMatrix4D::getDeterminant
double getDeterminant() const
Get determinant of matrix.
Definition: JMatrix4D.hh:334
JMATH::JMatrix5D::a03
double a03
Definition: JMatrix5D.hh:522
JMATH::JMatrix5D::setIdentity
JMatrix5D & setIdentity()
Set to identity matrix.
Definition: JMatrix5D.hh:114
JMATH::JMatrix5D::a42
double a42
Definition: JMatrix5D.hh:526
JMATH::JMatrix5D
5 x 5 matrix
Definition: JMatrix5D.hh:33
JMATH::JMatrix5D::a22
double a22
Definition: JMatrix5D.hh:524
JMATH::JMatrix5D::JMatrix5D
JMatrix5D()
Default constructor.
Definition: JMatrix5D.hh:45
JMATH::JMatrix5D::equals
bool equals(const JMatrix5D &A, const double eps=std::numeric_limits< double >::min()) const
Equality.
Definition: JMatrix5D.hh:327
JMATH::JCalculator
Auxiliary class for arithmetic operations on objects.
Definition: JCalculator.hh:18
p1
TPaveText * p1
Definition: JDrawModule3D.cc:35
JMATH::JMatrix5D::a23
double a23
Definition: JMatrix5D.hh:524
JMATH::JMatrix5D::a14
double a14
Definition: JMatrix5D.hh:523
JMATH::JMatrix5D::a43
double a43
Definition: JMatrix5D.hh:526
JMATH::JMatrix5D::isIdentity
bool isIdentity(const double eps=std::numeric_limits< double >::min()) const
Test identity.
Definition: JMatrix5D.hh:364
JMATH::JMatrix5D::a24
double a24
Definition: JMatrix5D.hh:524
JMATH::JMatrix5D::a44
double a44
Definition: JMatrix5D.hh:526