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

3 x 3 matrix More...

#include <JMatrix3D.hh>

Inheritance diagram for JMATH::JMatrix3D:
JMATH::JMath< JMatrix3D > JLANG::JEquals< JFirst_t, JSecond_t > JGEOMETRY3D::JRotation3D JMATH::JMatrix3S JDETECTOR::JRotation JGEOMETRY3D::JEulerMatrix3D JGEOMETRY3D::JTransformation3D JSIRENE::JHitInertiaTensor JSIRENE::JSphericityTensor

Public Member Functions

 JMatrix3D ()
 Default constructor.
 
 JMatrix3D (const double __a00, const double __a01, const double __a02, const double __a10, const double __a11, const double __a12, const double __a20, const double __a21, const double __a22)
 Contructor.
 
JMatrix3DsetIdentity ()
 Set to identity matrix.
 
void set (const JMatrix3D &A)
 Set matrix.
 
JMatrix3Dreset ()
 Set matrix to the null matrix.
 
JMatrix3Dtranspose ()
 Transpose.
 
JMatrix3Dnegate ()
 Negate matrix.
 
JMatrix3Dadd (const JMatrix3D &A)
 Matrix addition.
 
JMatrix3Dsub (const JMatrix3D &A)
 Matrix subtraction.
 
JMatrix3Dmul (const double factor)
 Scale matrix.
 
JMatrix3Ddiv (const double factor)
 Scale matrix.
 
JMatrix3Dmul (const JMatrix3D &A, const JMatrix3D &B)
 Matrix multiplication.
 
bool equals (const JMatrix3D &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, double &__z) const
 Transform.
 
JMatrix3Dmul (const JSecond_t &object)
 Multiply with object.
 

Static Public Member Functions

static const JMatrix3DgetInstance ()
 Get reference to unique instance of this class object.
 
static const JMatrix3DgetIdentity ()
 Get reference to unique instance of this class object.
 

Public Attributes

double a00
 
double a01
 
double a02
 
double a10
 
double a11
 
double a12
 
double a20
 
double a21
 
double a22
 

Friends

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

Detailed Description

3 x 3 matrix

Definition at line 32 of file JMath/JMatrix3D.hh.

Constructor & Destructor Documentation

◆ JMatrix3D() [1/2]

JMATH::JMatrix3D::JMatrix3D ( )
inline

Default constructor.

Definition at line 44 of file JMath/JMatrix3D.hh.

44 :
45 a00(0.0), a01(0.0), a02(0.0),
46 a10(0.0), a11(0.0), a12(0.0),
47 a20(0.0), a21(0.0), a22(0.0)
48 {}

◆ JMatrix3D() [2/2]

JMATH::JMatrix3D::JMatrix3D ( const double __a00,
const double __a01,
const double __a02,
const double __a10,
const double __a11,
const double __a12,
const double __a20,
const double __a21,
const double __a22 )
inline

Contructor.

Parameters
__a00(0,0)
__a01(0,1)
__a02(0,2)
__a10(1,0)
__a11(1,1)
__a12(1,2)
__a20(2,0)
__a21(2,1)
__a22(2,2)

Definition at line 64 of file JMath/JMatrix3D.hh.

66 :
67 a00(__a00), a01(__a01), a02(__a02),
68 a10(__a10), a11(__a11), a12(__a12),
69 a20(__a20), a21(__a21), a22(__a22)
70 {}

Member Function Documentation

◆ getInstance()

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

Get reference to unique instance of this class object.

Returns
zero matrix

Definition at line 78 of file JMath/JMatrix3D.hh.

79 {
80 static JMatrix3D matrix;
81
82 return matrix;
83 }
JMatrix3D()
Default constructor.

◆ setIdentity()

JMatrix3D & JMATH::JMatrix3D::setIdentity ( )
inline

Set to identity matrix.

Returns
this matrix

Definition at line 91 of file JMath/JMatrix3D.hh.

92 {
93 a00 = 1.0; a01 = 0.0; a02 = 0.0;
94 a10 = 0.0; a11 = 1.0; a12 = 0.0;
95 a20 = 0.0; a21 = 0.0; a22 = 1.0;
96
97 return *this;
98 }

◆ getIdentity()

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

Get reference to unique instance of this class object.

Returns
identity matrix

Definition at line 106 of file JMath/JMatrix3D.hh.

107 {
108 static JMatrix3D matrix(JMatrix3D().setIdentity());
109
110 return matrix;
111 }
JMatrix3D & setIdentity()
Set to identity matrix.

◆ set()

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

Set matrix.

Parameters
Amatrix

Definition at line 119 of file JMath/JMatrix3D.hh.

120 {
121 static_cast<JMatrix3D&>(*this) = A;
122 }

◆ reset()

JMatrix3D & JMATH::JMatrix3D::reset ( )
inline

Set matrix to the null matrix.

Returns
this matrix

Definition at line 130 of file JMath/JMatrix3D.hh.

131 {
132 *this = JMatrix3D();
133
134 return *this;
135 }

◆ transpose()

JMatrix3D & JMATH::JMatrix3D::transpose ( )
inline

Transpose.

Returns
this matrix

Definition at line 143 of file JMath/JMatrix3D.hh.

144 {
145 using std::swap;
146
147 swap(a10, a01);
148 swap(a20, a02);
149 swap(a21, a12);
150
151 return *this;
152 }

◆ negate()

JMatrix3D & JMATH::JMatrix3D::negate ( )
inline

Negate matrix.

Returns
-this matrix

Definition at line 160 of file JMath/JMatrix3D.hh.

161 {
162 a00 = -a00; a01 = -a01; a02 = -a02;
163 a10 = -a10; a11 = -a11; a12 = -a12;
164 a20 = -a20; a21 = -a21; a22 = -a22;
165
166 return *this;
167 }

◆ add()

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

Matrix addition.

Parameters
Amatrix
Returns
this matrix + A

Definition at line 176 of file JMath/JMatrix3D.hh.

177 {
178 a00 += A.a00; a01 += A.a01; a02 += A.a02;
179 a10 += A.a10; a11 += A.a11; a12 += A.a12;
180 a20 += A.a20; a21 += A.a21; a22 += A.a22;
181
182 return *this;
183 }

◆ sub()

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

Matrix subtraction.

Parameters
Amatrix
Returns
this matrix - A

Definition at line 192 of file JMath/JMatrix3D.hh.

193 {
194 a00 -= A.a00; a01 -= A.a01; a02 -= A.a02;
195 a10 -= A.a10; a11 -= A.a11; a12 -= A.a12;
196 a20 -= A.a20; a21 -= A.a21; a22 -= A.a22;
197
198 return *this;
199 }

◆ mul() [1/3]

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

Scale matrix.

Parameters
factorfactor
Returns
this matrix * factor

Definition at line 208 of file JMath/JMatrix3D.hh.

209 {
210 a00 *= factor; a01 *= factor; a02 *= factor;
211 a10 *= factor; a11 *= factor; a12 *= factor;
212 a20 *= factor; a21 *= factor; a22 *= factor;
213
214 return *this;
215 }

◆ div()

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

Scale matrix.

Parameters
factorfactor
Returns
this matrix / factor

Definition at line 224 of file JMath/JMatrix3D.hh.

225 {
226 a00 /= factor; a01 /= factor; a02 /= factor;
227 a10 /= factor; a11 /= factor; a12 /= factor;
228 a20 /= factor; a21 /= factor; a22 /= factor;
229
230 return *this;
231 }

◆ mul() [2/3]

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

Matrix multiplication.

Parameters
Amatrix
Bmatrix
Returns
this matrix

Definition at line 241 of file JMath/JMatrix3D.hh.

243 {
244 a00 = A.a00 * B.a00 + A.a01 * B.a10 + A.a02 * B.a20;
245 a01 = A.a00 * B.a01 + A.a01 * B.a11 + A.a02 * B.a21;
246 a02 = A.a00 * B.a02 + A.a01 * B.a12 + A.a02 * B.a22;
247
248 a10 = A.a10 * B.a00 + A.a11 * B.a10 + A.a12 * B.a20;
249 a11 = A.a10 * B.a01 + A.a11 * B.a11 + A.a12 * B.a21;
250 a12 = A.a10 * B.a02 + A.a11 * B.a12 + A.a12 * B.a22;
251
252 a20 = A.a20 * B.a00 + A.a21 * B.a10 + A.a22 * B.a20;
253 a21 = A.a20 * B.a01 + A.a21 * B.a11 + A.a22 * B.a21;
254 a22 = A.a20 * B.a02 + A.a21 * B.a12 + A.a22 * B.a22;
255
256 return *this;
257 }

◆ equals()

bool JMATH::JMatrix3D::equals ( const JMatrix3D & 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 267 of file JMath/JMatrix3D.hh.

269 {
270 return (fabs(a00 - A.a00) <= eps &&
271 fabs(a01 - A.a01) <= eps &&
272 fabs(a02 - A.a02) <= eps &&
273 fabs(a10 - A.a10) <= eps &&
274 fabs(a11 - A.a11) <= eps &&
275 fabs(a12 - A.a12) <= eps &&
276 fabs(a20 - A.a20) <= eps &&
277 fabs(a21 - A.a21) <= eps &&
278 fabs(a22 - A.a22) <= eps);
279 }

◆ isIdentity()

bool JMATH::JMatrix3D::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 288 of file JMath/JMatrix3D.hh.

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

◆ getDeterminant()

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

Get determinant of matrix.

Returns
determinant of matrix

Definition at line 299 of file JMath/JMatrix3D.hh.

300 {
301 double det = 0.0;
302
303 det += a00 * (a11 * a22 - a21 * a12);
304 det -= a01 * (a10 * a22 - a20 * a12);
305 det += a02 * (a10 * a21 - a20 * a11);
306
307 return det;
308 }

◆ transform()

void JMATH::JMatrix3D::transform ( double & __x,
double & __y,
double & __z ) const
inline

Transform.

Parameters
__xx value
__yy value
__zz value

Definition at line 318 of file JMath/JMatrix3D.hh.

319 {
320 const double x = a00 * __x + a01 * __y + a02 * __z;
321 const double y = a10 * __x + a11 * __y + a12 * __z;
322 const double z = a20 * __x + a21 * __y + a22 * __z;
323
324 __x = x;
325 __y = y;
326 __z = z;
327 }

◆ mul() [3/3]

JMatrix3D & JMATH::JMath< JMatrix3D, 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,
JMatrix3D & matrix )
friend

Read matrix from input.

Parameters
inreader
matrixmatrix
Returns
reader

Definition at line 337 of file JMath/JMatrix3D.hh.

338 {
339 in >> matrix.a00; in >> matrix.a01; in >> matrix.a02;
340 in >> matrix.a10; in >> matrix.a11; in >> matrix.a12;
341 in >> matrix.a20; in >> matrix.a21; in >> matrix.a22;
342
343 return in;
344 }

◆ operator<< [1/2]

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

Write matrix to output.

Parameters
outwriter
matrixmatrix
Returns
writer

Definition at line 354 of file JMath/JMatrix3D.hh.

355 {
356 out << matrix.a00; out << matrix.a01; out << matrix.a02;
357 out << matrix.a10; out << matrix.a11; out << matrix.a12;
358 out << matrix.a20; out << matrix.a21; out << matrix.a22;
359
360 return out;
361 }

◆ operator<< [2/2]

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

Print ASCII formatted output.

Parameters
outoutput stream
Amatrix
Returns
output stream

Definition at line 371 of file JMath/JMatrix3D.hh.

372 {
373 using namespace std;
374
375 const JFormat format(out, getFormat<JMatrix3D>(JFormat_t(10, 3, std::ios::fixed | std::ios::showpos)));
376
377 out << format << A.a00 << ' ' << format << A.a01 << ' ' << format << A.a02 << endl;
378 out << format << A.a10 << ' ' << format << A.a11 << ' ' << format << A.a12 << endl;
379 out << format << A.a20 << ' ' << format << A.a21 << ' ' << format << A.a22 << endl;
380
381 return out;
382 }
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::JMatrix3D::a00

Definition at line 385 of file JMath/JMatrix3D.hh.

◆ a01

double JMATH::JMatrix3D::a01

Definition at line 385 of file JMath/JMatrix3D.hh.

◆ a02

double JMATH::JMatrix3D::a02

Definition at line 385 of file JMath/JMatrix3D.hh.

◆ a10

double JMATH::JMatrix3D::a10

Definition at line 386 of file JMath/JMatrix3D.hh.

◆ a11

double JMATH::JMatrix3D::a11

Definition at line 386 of file JMath/JMatrix3D.hh.

◆ a12

double JMATH::JMatrix3D::a12

Definition at line 386 of file JMath/JMatrix3D.hh.

◆ a20

double JMATH::JMatrix3D::a20

Definition at line 387 of file JMath/JMatrix3D.hh.

◆ a21

double JMATH::JMatrix3D::a21

Definition at line 387 of file JMath/JMatrix3D.hh.

◆ a22

double JMATH::JMatrix3D::a22

Definition at line 387 of file JMath/JMatrix3D.hh.


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