Jpp  17.1.1
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Static Public Member Functions | Public Attributes | Friends | List of all members
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. More...
 
 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. More...
 
JMatrix4DsetIdentity ()
 Set to identity matrix. More...
 
void set (const JMatrix4D &A)
 Set matrix. More...
 
JMatrix4Dreset ()
 Set matrix to the null matrix. More...
 
JMatrix4Dtranspose ()
 Transpose. More...
 
JMatrix4Dnegate ()
 Negate matrix. More...
 
JMatrix4Dadd (const JMatrix4D &A)
 Matrix addition. More...
 
JMatrix4Dsub (const JMatrix4D &A)
 Matrix subtraction. More...
 
JMatrix4Dmul (const double factor)
 Scale matrix. More...
 
JMatrix4Ddiv (const double factor)
 Scale matrix. More...
 
const JMatrix4Dmul (const JMatrix4D &A, const JMatrix4D &B)
 Matrix multiplication. More...
 
bool equals (const JMatrix4D &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) const
 Transform. More...
 
JMatrix4Dmul (const JNullType &object)
 Multiply with object. More...
 

Static Public Member Functions

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

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. More...
 
JWriteroperator<< (JWriter &out, const JMatrix4D &matrix)
 Write matrix to output. More...
 
std::ostream & operator<< (std::ostream &out, const JMatrix4D &A)
 Print ASCII formatted output. More...
 

Detailed Description

4 x 4 matrix

Definition at line 33 of file JMatrix4D.hh.

Constructor & Destructor Documentation

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  {}
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

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  }
4 x 4 matrix
Definition: JMatrix4D.hh:33
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  }
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  }
4 x 4 matrix
Definition: JMatrix4D.hh:33
JMatrix4D & setIdentity()
Set to identity matrix.
Definition: JMatrix4D.hh:102
JMatrix4D()
Default constructor.
Definition: JMatrix4D.hh:45
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  }
4 x 4 matrix
Definition: JMatrix4D.hh:33
source $JPP_DIR setenv csh $JPP_DIR &dev null eval JShellParser o a A
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  }
JMatrix4D()
Default constructor.
Definition: JMatrix4D.hh:45
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  }
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  }
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  }
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  }
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  }
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  }
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  }
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  }
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  }
bool equals(const JMatrix4D &A, const double eps=std::numeric_limits< double >::min()) const
Equality.
Definition: JMatrix4D.hh:295
static const JMatrix4D & getIdentity()
Get reference to unique instance of this class object.
Definition: JMatrix4D.hh:118
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  }
3 x 3 matrix
double getDeterminant() const
Get determinant of matrix.
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  }
JMatrix4D & JMATH::JMath< JMatrix4D , JNullType >::mul ( const JNullType object)
inlineinherited

Multiply with object.

Parameters
objectobject
Returns
result object

Definition at line 357 of file JMath.hh.

358  {
359  return static_cast<JFirst_t&>(*this) = JCalculator<JFirst_t>::calculator.mul(static_cast<const JFirst_t&>(*this), object);
360  }
Auxiliary class for arithmetic operations on objects.
Definition: JCalculator.hh:18

Friends And Related Function Documentation

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  }
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Definition: JCanberra.sh:46
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  }
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  }
Auxiliary class to temporarily define format specifications.
Definition: JManip.hh:632
Data structure for format specifications.
Definition: JManip.hh:522

Member Data Documentation

double JMATH::JMatrix4D::a00

Definition at line 438 of file JMatrix4D.hh.

double JMATH::JMatrix4D::a01

Definition at line 438 of file JMatrix4D.hh.

double JMATH::JMatrix4D::a02

Definition at line 438 of file JMatrix4D.hh.

double JMATH::JMatrix4D::a03

Definition at line 438 of file JMatrix4D.hh.

double JMATH::JMatrix4D::a10

Definition at line 439 of file JMatrix4D.hh.

double JMATH::JMatrix4D::a11

Definition at line 439 of file JMatrix4D.hh.

double JMATH::JMatrix4D::a12

Definition at line 439 of file JMatrix4D.hh.

double JMATH::JMatrix4D::a13

Definition at line 439 of file JMatrix4D.hh.

double JMATH::JMatrix4D::a20

Definition at line 440 of file JMatrix4D.hh.

double JMATH::JMatrix4D::a21

Definition at line 440 of file JMatrix4D.hh.

double JMATH::JMatrix4D::a22

Definition at line 440 of file JMatrix4D.hh.

double JMATH::JMatrix4D::a23

Definition at line 440 of file JMatrix4D.hh.

double JMATH::JMatrix4D::a30

Definition at line 441 of file JMatrix4D.hh.

double JMATH::JMatrix4D::a31

Definition at line 441 of file JMatrix4D.hh.

double JMATH::JMatrix4D::a32

Definition at line 441 of file JMatrix4D.hh.

double JMATH::JMatrix4D::a33

Definition at line 441 of file JMatrix4D.hh.


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