Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JMATH::JMatrix4D Class Reference

4 x 4 matrix More...

#include <JMatrix4D.hh>

Inheritance diagram for JMATH::JMatrix4D:
JMATH::JMath< JMatrix4D > JLANG::JEquals< JFirst_t, JSecond_t > JMATH::JMatrix4S

Public Member Functions

 JMatrix4D ()
 Default constructor.
 
 JMatrix4D (const double __a00, const double __a01, const double __a02, const double __a03, const double __a10, const double __a11, const double __a12, const double __a13, const double __a20, const double __a21, const double __a22, const double __a23, const double __a30, const double __a31, const double __a32, const double __a33)
 Contructor.
 
JMatrix4DsetIdentity ()
 Set to identity matrix.
 
void set (const JMatrix4D &A)
 Set matrix.
 
JMatrix4Dreset ()
 Set matrix to the null matrix.
 
JMatrix4Dtranspose ()
 Transpose.
 
JMatrix4Dnegate ()
 Negate matrix.
 
JMatrix4Dadd (const JMatrix4D &A)
 Matrix addition.
 
JMatrix4Dsub (const JMatrix4D &A)
 Matrix subtraction.
 
JMatrix4Dmul (const double factor)
 Scale matrix.
 
JMatrix4Ddiv (const double factor)
 Scale matrix.
 
const JMatrix4Dmul (const JMatrix4D &A, const JMatrix4D &B)
 Matrix multiplication.
 
bool equals (const JMatrix4D &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 &__x0, double &__x1, double &__x2, double &__x3) const
 Transform.
 
JMatrix4Dmul (const JSecond_t &object)
 Multiply with object.
 

Static Public Member Functions

static const JMatrix4DgetInstance ()
 Get reference to unique instance of this class object.
 
static const JMatrix4DgetIdentity ()
 Get reference to unique instance of this class object.
 

Public Attributes

double a00
 
double a01
 
double a02
 
double a03
 
double a10
 
double a11
 
double a12
 
double a13
 
double a20
 
double a21
 
double a22
 
double a23
 
double a30
 
double a31
 
double a32
 
double a33
 

Friends

JReaderoperator>> (JReader &in, JMatrix4D &matrix)
 Read matrix from input.
 
JWriteroperator<< (JWriter &out, const JMatrix4D &matrix)
 Write matrix to output.
 
std::ostream & operator<< (std::ostream &out, const JMatrix4D &A)
 Print ASCII formatted output.
 

Detailed Description

4 x 4 matrix

Definition at line 33 of file JMatrix4D.hh.

Constructor & Destructor Documentation

◆ JMatrix4D() [1/2]

JMATH::JMatrix4D::JMatrix4D ( )
inline

Default constructor.

Definition at line 45 of file JMatrix4D.hh.

45 :
46 a00(0.0), a01(0.0), a02(0.0), a03(0.0),
47 a10(0.0), a11(0.0), a12(0.0), a13(0.0),
48 a20(0.0), a21(0.0), a22(0.0), a23(0.0),
49 a30(0.0), a31(0.0), a32(0.0), a33(0.0)
50 {}

◆ JMatrix4D() [2/2]

JMATH::JMatrix4D::JMatrix4D ( const double __a00,
const double __a01,
const double __a02,
const double __a03,
const double __a10,
const double __a11,
const double __a12,
const double __a13,
const double __a20,
const double __a21,
const double __a22,
const double __a23,
const double __a30,
const double __a31,
const double __a32,
const double __a33 )
inline

Contructor.

Parameters
__a00(0,0)
__a01(0,1)
__a02(0,2)
__a03(0,3)
__a10(1,0)
__a11(1,1)
__a12(1,2)
__a13(1,3)
__a20(2,0)
__a21(2,1)
__a22(2,2)
__a23(2,3)
__a30(3,0)
__a31(3,1)
__a32(3,2)
__a33(3,3)

Definition at line 73 of file JMatrix4D.hh.

76 :
77 a00(__a00), a01(__a01), a02(__a02), a03(__a03),
78 a10(__a10), a11(__a11), a12(__a12), a13(__a13),
79 a20(__a20), a21(__a21), a22(__a22), a23(__a23),
80 a30(__a30), a31(__a31), a32(__a32), a33(__a33)
81 {}

Member Function Documentation

◆ getInstance()

static const JMatrix4D & JMATH::JMatrix4D::getInstance ( )
inlinestatic

Get reference to unique instance of this class object.

Returns
zero matrix

Definition at line 89 of file JMatrix4D.hh.

90 {
91 static JMatrix4D matrix;
92
93 return matrix;
94 }
JMatrix4D()
Default constructor.
Definition JMatrix4D.hh:45

◆ setIdentity()

JMatrix4D & JMATH::JMatrix4D::setIdentity ( )
inline

Set to identity matrix.

Returns
this matrix

Definition at line 102 of file JMatrix4D.hh.

103 {
104 a00 = 1.0; a01 = 0.0; a02 = 0.0; a03 = 0.0;
105 a10 = 0.0; a11 = 1.0; a12 = 0.0; a13 = 0.0;
106 a20 = 0.0; a21 = 0.0; a22 = 1.0; a23 = 0.0;
107 a30 = 0.0; a31 = 0.0; a32 = 0.0; a33 = 1.0;
108
109 return *this;
110 }

◆ getIdentity()

static const JMatrix4D & JMATH::JMatrix4D::getIdentity ( )
inlinestatic

Get reference to unique instance of this class object.

Returns
identity matrix

Definition at line 118 of file JMatrix4D.hh.

119 {
120 static JMatrix4D matrix(JMatrix4D().setIdentity());
121
122 return matrix;
123 }
JMatrix4D & setIdentity()
Set to identity matrix.
Definition JMatrix4D.hh:102

◆ set()

void JMATH::JMatrix4D::set ( const JMatrix4D & A)
inline

Set matrix.

Parameters
Amatrix

Definition at line 131 of file JMatrix4D.hh.

132 {
133 static_cast<JMatrix4D&>(*this) = A;
134 }

◆ reset()

JMatrix4D & JMATH::JMatrix4D::reset ( )
inline

Set matrix to the null matrix.

Returns
this matrix

Definition at line 142 of file JMatrix4D.hh.

143 {
144 *this = JMatrix4D();
145
146 return *this;
147 }

◆ transpose()

JMatrix4D & JMATH::JMatrix4D::transpose ( )
inline

Transpose.

Returns
this matrix

Definition at line 155 of file JMatrix4D.hh.

156 {
157 using std::swap;
158
159 swap(a10, a01);
160 swap(a20, a02);
161 swap(a21, a12);
162 swap(a30, a03);
163 swap(a31, a13);
164 swap(a32, a23);
165
166 return *this;
167 }

◆ negate()

JMatrix4D & JMATH::JMatrix4D::negate ( )
inline

Negate matrix.

Returns
-this matrix

Definition at line 175 of file JMatrix4D.hh.

176 {
177 a00 = -a00; a01 = -a01; a02 = -a02; a03 = -a03;
178 a10 = -a10; a11 = -a11; a12 = -a12; a13 = -a13;
179 a20 = -a20; a21 = -a21; a22 = -a22; a13 = -a23;
180 a30 = -a30; a31 = -a31; a32 = -a32; a33 = -a33;
181
182 return *this;
183 }

◆ add()

JMatrix4D & JMATH::JMatrix4D::add ( const JMatrix4D & A)
inline

Matrix addition.

Parameters
Amatrix
Returns
this matrix + A

Definition at line 192 of file JMatrix4D.hh.

193 {
194 a00 += A.a00; a01 += A.a01; a02 += A.a02; a03 += A.a03;
195 a10 += A.a10; a11 += A.a11; a12 += A.a12; a13 += A.a13;
196 a20 += A.a20; a21 += A.a21; a22 += A.a22; a23 += A.a23;
197 a30 += A.a30; a31 += A.a31; a32 += A.a32; a33 += A.a33;
198
199 return *this;
200 }

◆ sub()

JMatrix4D & JMATH::JMatrix4D::sub ( const JMatrix4D & A)
inline

Matrix subtraction.

Parameters
Amatrix
Returns
this matrix - A

Definition at line 209 of file JMatrix4D.hh.

210 {
211 a00 -= A.a00; a01 -= A.a01; a02 -= A.a02; a03 -= A.a03;
212 a10 -= A.a10; a11 -= A.a11; a12 -= A.a12; a13 -= A.a13;
213 a20 -= A.a20; a21 -= A.a21; a22 -= A.a22; a23 -= A.a23;
214 a30 -= A.a30; a31 -= A.a31; a32 -= A.a32; a33 -= A.a33;
215
216 return *this;
217 }

◆ mul() [1/3]

JMatrix4D & JMATH::JMatrix4D::mul ( const double factor)
inline

Scale matrix.

Parameters
factorfactor
Returns
this matrix * factor

Definition at line 226 of file JMatrix4D.hh.

227 {
228 a00 *= factor; a01 *= factor; a02 *= factor; a03 *= factor;
229 a10 *= factor; a11 *= factor; a12 *= factor; a13 *= factor;
230 a20 *= factor; a21 *= factor; a22 *= factor; a23 *= factor;
231 a30 *= factor; a31 *= factor; a32 *= factor; a33 *= factor;
232
233 return *this;
234 }

◆ div()

JMatrix4D & JMATH::JMatrix4D::div ( const double factor)
inline

Scale matrix.

Parameters
factorfactor
Returns
this matrix / factor

Definition at line 243 of file JMatrix4D.hh.

244 {
245 a00 /= factor; a01 /= factor; a02 /= factor; a03 /= factor;
246 a10 /= factor; a11 /= factor; a12 /= factor; a13 /= factor;
247 a20 /= factor; a21 /= factor; a22 /= factor; a23 /= factor;
248 a30 /= factor; a31 /= factor; a32 /= factor; a33 /= factor;
249
250 return *this;
251 }

◆ mul() [2/3]

const JMatrix4D & JMATH::JMatrix4D::mul ( const JMatrix4D & A,
const JMatrix4D & B )
inline

Matrix multiplication.

Parameters
Amatrix
Bmatrix
Returns
this matrix

Definition at line 261 of file JMatrix4D.hh.

263 {
264 a00 = A.a00 * B.a00 + A.a01 * B.a10 + A.a02 * B.a20 + A.a03 * B.a30;
265 a01 = A.a00 * B.a01 + A.a01 * B.a11 + A.a02 * B.a21 + A.a03 * B.a31;
266 a02 = A.a00 * B.a02 + A.a01 * B.a12 + A.a02 * B.a22 + A.a03 * B.a32;
267 a03 = A.a00 * B.a03 + A.a01 * B.a13 + A.a02 * B.a23 + A.a03 * B.a33;
268
269 a10 = A.a10 * B.a00 + A.a11 * B.a10 + A.a12 * B.a20 + A.a13 * B.a30;
270 a11 = A.a10 * B.a01 + A.a11 * B.a11 + A.a12 * B.a21 + A.a13 * B.a31;
271 a12 = A.a10 * B.a02 + A.a11 * B.a12 + A.a12 * B.a22 + A.a13 * B.a32;
272 a13 = A.a10 * B.a03 + A.a11 * B.a13 + A.a12 * B.a23 + A.a13 * B.a33;
273
274 a20 = A.a20 * B.a00 + A.a21 * B.a10 + A.a22 * B.a20 + A.a23 * B.a30;
275 a21 = A.a20 * B.a01 + A.a21 * B.a11 + A.a22 * B.a21 + A.a23 * B.a31;
276 a22 = A.a20 * B.a02 + A.a21 * B.a12 + A.a22 * B.a22 + A.a23 * B.a32;
277 a23 = A.a20 * B.a03 + A.a21 * B.a13 + A.a22 * B.a23 + A.a23 * B.a33;
278
279 a30 = A.a30 * B.a00 + A.a31 * B.a10 + A.a32 * B.a20 + A.a33 * B.a30;
280 a31 = A.a30 * B.a01 + A.a31 * B.a11 + A.a32 * B.a21 + A.a33 * B.a31;
281 a32 = A.a30 * B.a02 + A.a31 * B.a12 + A.a32 * B.a22 + A.a33 * B.a32;
282 a33 = A.a30 * B.a03 + A.a31 * B.a13 + A.a32 * B.a23 + A.a33 * B.a33;
283
284 return *this;
285 }

◆ equals()

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

Equality.

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

Definition at line 295 of file JMatrix4D.hh.

297 {
298 return (fabs(a00 - A.a00) <= eps &&
299 fabs(a01 - A.a01) <= eps &&
300 fabs(a02 - A.a02) <= eps &&
301 fabs(a03 - A.a03) <= eps &&
302 fabs(a10 - A.a10) <= eps &&
303 fabs(a11 - A.a11) <= eps &&
304 fabs(a12 - A.a12) <= eps &&
305 fabs(a13 - A.a13) <= eps &&
306 fabs(a20 - A.a20) <= eps &&
307 fabs(a21 - A.a21) <= eps &&
308 fabs(a22 - A.a22) <= eps &&
309 fabs(a23 - A.a23) <= eps &&
310 fabs(a30 - A.a30) <= eps &&
311 fabs(a31 - A.a31) <= eps &&
312 fabs(a32 - A.a32) <= eps &&
313 fabs(a33 - A.a33) <= eps);
314 }

◆ isIdentity()

bool JMATH::JMatrix4D::isIdentity ( const double eps = std::numeric_limits<double>::min()) const
inline

Test identity.

Parameters
epsnumerical precision
Returns
true if identity matrix; else false

Definition at line 323 of file JMatrix4D.hh.

324 {
325 return equals(getIdentity(), eps);
326 }
static const JMatrix4D & getIdentity()
Get reference to unique instance of this class object.
Definition JMatrix4D.hh:118
bool equals(const JMatrix4D &A, const double eps=std::numeric_limits< double >::min()) const
Equality.
Definition JMatrix4D.hh:295

◆ getDeterminant()

double JMATH::JMatrix4D::getDeterminant ( ) const
inline

Get determinant of matrix.

Returns
determinant of matrix

Definition at line 334 of file JMatrix4D.hh.

335 {
336 double det = 0.0;
337
338 det += a00 * JMatrix3D(a11, a12, a13,
339 a21, a22, a23,
340 a31, a32, a33).getDeterminant();
341
342 det -= a01 * JMatrix3D(a10, a12, a13,
343 a20, a22, a23,
344 a30, a32, a33).getDeterminant();
345
346 det += a02 * JMatrix3D(a10, a11, a13,
347 a20, a21, a23,
348 a30, a31, a33).getDeterminant();
349
350 det -= a03 * JMatrix3D(a10, a11, a12,
351 a20, a21, a22,
352 a30, a31, a32).getDeterminant();
353
354 return det;
355 }

◆ transform()

void JMATH::JMatrix4D::transform ( double & __x0,
double & __x1,
double & __x2,
double & __x3 ) const
inline

Transform.

Parameters
__x0x0 value
__x1x1 value
__x2x2 value
__x3x3 value

Definition at line 366 of file JMatrix4D.hh.

367 {
368 const double x0 = a00 * __x0 + a01 * __x1 + a02 * __x2 + a03 * __x3;
369 const double x1 = a10 * __x0 + a11 * __x1 + a12 * __x2 + a13 * __x3;
370 const double x2 = a20 * __x0 + a21 * __x1 + a22 * __x2 + a23 * __x3;
371 const double x3 = a30 * __x0 + a31 * __x1 + a32 * __x2 + a33 * __x3;
372
373 __x0 = x0;
374 __x1 = x1;
375 __x2 = x2;
376 __x3 = x3;
377 }

◆ mul() [3/3]

JMatrix4D & JMATH::JMath< JMatrix4D, 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 }

Friends And Related Symbol Documentation

◆ operator>>

JReader & operator>> ( JReader & in,
JMatrix4D & matrix )
friend

Read matrix from input.

Parameters
inreader
matrixmatrix
Returns
reader

Definition at line 387 of file JMatrix4D.hh.

388 {
389 in >> matrix.a00; in >> matrix.a01; in >> matrix.a02; in >> matrix.a03;
390 in >> matrix.a10; in >> matrix.a11; in >> matrix.a12; in >> matrix.a13;
391 in >> matrix.a20; in >> matrix.a21; in >> matrix.a22; in >> matrix.a23;
392 in >> matrix.a30; in >> matrix.a31; in >> matrix.a32; in >> matrix.a33;
393
394 return in;
395 }

◆ operator<< [1/2]

JWriter & operator<< ( JWriter & out,
const JMatrix4D & matrix )
friend

Write matrix to output.

Parameters
outwriter
matrixmatrix
Returns
writer

Definition at line 405 of file JMatrix4D.hh.

406 {
407 out << matrix.a00; out << matrix.a01; out << matrix.a02; out << matrix.a03;
408 out << matrix.a10; out << matrix.a11; out << matrix.a12; out << matrix.a13;
409 out << matrix.a20; out << matrix.a21; out << matrix.a22; out << matrix.a23;
410 out << matrix.a30; out << matrix.a31; out << matrix.a32; out << matrix.a33;
411
412 return out;
413 }

◆ operator<< [2/2]

std::ostream & operator<< ( std::ostream & out,
const JMatrix4D & A )
friend

Print ASCII formatted output.

Parameters
outoutput stream
Amatrix
Returns
output stream

Definition at line 423 of file JMatrix4D.hh.

424 {
425 using namespace std;
426
427 const JFormat format(out, getFormat<JMatrix4D>(JFormat_t(10, 3, std::ios::fixed | std::ios::showpos)));
428
429 out << format << A.a00 << ' ' << format << A.a01 << ' ' << format << A.a02 << ' ' << format << A.a03 << endl;
430 out << format << A.a10 << ' ' << format << A.a11 << ' ' << format << A.a12 << ' ' << format << A.a13 << endl;
431 out << format << A.a20 << ' ' << format << A.a21 << ' ' << format << A.a22 << ' ' << format << A.a23 << endl;
432 out << format << A.a30 << ' ' << format << A.a31 << ' ' << format << A.a32 << ' ' << format << A.a33 << endl;
433
434 return out;
435 }
JFormat_t & getFormat()
Get format for given type.
Definition JManip.hh:682
Data structure for format specifications.
Definition JManip.hh:524
Auxiliary class to temporarily define format specifications.
Definition JManip.hh:636

Member Data Documentation

◆ a00

double JMATH::JMatrix4D::a00

Definition at line 438 of file JMatrix4D.hh.

◆ a01

double JMATH::JMatrix4D::a01

Definition at line 438 of file JMatrix4D.hh.

◆ a02

double JMATH::JMatrix4D::a02

Definition at line 438 of file JMatrix4D.hh.

◆ a03

double JMATH::JMatrix4D::a03

Definition at line 438 of file JMatrix4D.hh.

◆ a10

double JMATH::JMatrix4D::a10

Definition at line 439 of file JMatrix4D.hh.

◆ a11

double JMATH::JMatrix4D::a11

Definition at line 439 of file JMatrix4D.hh.

◆ a12

double JMATH::JMatrix4D::a12

Definition at line 439 of file JMatrix4D.hh.

◆ a13

double JMATH::JMatrix4D::a13

Definition at line 439 of file JMatrix4D.hh.

◆ a20

double JMATH::JMatrix4D::a20

Definition at line 440 of file JMatrix4D.hh.

◆ a21

double JMATH::JMatrix4D::a21

Definition at line 440 of file JMatrix4D.hh.

◆ a22

double JMATH::JMatrix4D::a22

Definition at line 440 of file JMatrix4D.hh.

◆ a23

double JMATH::JMatrix4D::a23

Definition at line 440 of file JMatrix4D.hh.

◆ a30

double JMATH::JMatrix4D::a30

Definition at line 441 of file JMatrix4D.hh.

◆ a31

double JMATH::JMatrix4D::a31

Definition at line 441 of file JMatrix4D.hh.

◆ a32

double JMATH::JMatrix4D::a32

Definition at line 441 of file JMatrix4D.hh.

◆ a33

double JMATH::JMatrix4D::a33

Definition at line 441 of file JMatrix4D.hh.


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