21namespace JPP { 
using namespace JMATH; }
 
   34    public JMath  <JMatrix4D>,
 
   73    JMatrix4D(
const double __a00, 
const double __a01, 
const double __a02, 
const double __a03,
 
   74              const double __a10, 
const double __a11, 
const double __a12, 
const double __a13,
 
   75              const double __a20, 
const double __a21, 
const double __a22, 
const double __a23,
 
   76              const double __a30, 
const double __a31, 
const double __a32, 
const double __a33) :
 
 
  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;
 
 
  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;
 
 
  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;
 
  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;
 
  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;
 
  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;
 
 
  296                const double     eps = std::numeric_limits<double>::min())
 const 
  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);
 
 
  323    bool isIdentity(
const double eps = std::numeric_limits<double>::min())
 const 
 
  366    void transform(
double& __x0, 
double& __x1, 
double& __x2, 
double& __x3)
 const 
  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;
 
 
  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;
 
 
  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;
 
 
  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;
 
 
 
JFormat_t & getFormat()
Get format for given type.
 
Base class for data structures with artithmetic capabilities.
 
Interface for binary input.
 
Interface for binary output.
 
double getDeterminant() const
Get determinant of matrix.
 
JMatrix4D & setIdentity()
Set to identity matrix.
 
void transform(double &__x0, double &__x1, double &__x2, double &__x3) const
Transform.
 
const JMatrix4D & mul(const JMatrix4D &A, const JMatrix4D &B)
Matrix multiplication.
 
static const JMatrix4D & getIdentity()
Get reference to unique instance of this class object.
 
bool isIdentity(const double eps=std::numeric_limits< double >::min()) const
Test identity.
 
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.
 
JMatrix4D & add(const JMatrix4D &A)
Matrix addition.
 
JMatrix4D & sub(const JMatrix4D &A)
Matrix subtraction.
 
JMatrix4D()
Default constructor.
 
JMatrix4D & reset()
Set matrix to the null matrix.
 
double getDeterminant() const
Get determinant of matrix.
 
friend JReader & operator>>(JReader &in, JMatrix4D &matrix)
Read matrix from input.
 
JMatrix4D & transpose()
Transpose.
 
static const JMatrix4D & getInstance()
Get reference to unique instance of this class object.
 
JMatrix4D & negate()
Negate matrix.
 
JMatrix4D & div(const double factor)
Scale matrix.
 
void set(const JMatrix4D &A)
Set matrix.
 
bool equals(const JMatrix4D &A, const double eps=std::numeric_limits< double >::min()) const
Equality.
 
friend std::ostream & operator<<(std::ostream &out, const JMatrix4D &A)
Print ASCII formatted output.
 
friend JWriter & operator<<(JWriter &out, const JMatrix4D &matrix)
Write matrix to output.
 
JMatrix4D & mul(const double factor)
Scale matrix.
 
Auxiliary classes and methods for mathematical operations.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
Template definition of auxiliary base class for comparison of data structures.
 
Auxiliary base class for aritmetic operations of derived class types.