20 namespace JPP {
using namespace JMATH; }
33 public JMath <JMatrix3D>,
64 JMatrix3D(
const double __a00,
const double __a01,
const double __a02,
65 const double __a10,
const double __a11,
const double __a12,
66 const double __a20,
const double __a21,
const double __a22) :
210 a00 *= factor;
a01 *= factor;
a02 *= factor;
211 a10 *= factor;
a11 *= factor;
a12 *= factor;
212 a20 *= factor;
a21 *= factor;
a22 *= factor;
226 a00 /= factor;
a01 /= factor;
a02 /= factor;
227 a10 /= factor;
a11 /= factor;
a12 /= factor;
228 a20 /= factor;
a21 /= factor;
a22 /= factor;
268 const double eps = std::numeric_limits<double>::min())
const
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);
288 bool isIdentity(
const double eps = std::numeric_limits<double>::min())
const
318 void transform(
double& __x,
double& __y,
double& __z)
const
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;
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;
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;
375 const JFormat format(out, getFormat<JMatrix3D>(
JFormat_t(10, 3, std::ios::fixed | std::ios::showpos)));
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;
Base class for data structures with artithmetic capabilities.
Interface for binary input.
Interface for binary output.
JMatrix3D()
Default constructor.
JMatrix3D & mul(const JMatrix3D &A, const JMatrix3D &B)
Matrix multiplication.
static const JMatrix3D & getIdentity()
Get reference to unique instance of this class object.
JMatrix3D & reset()
Set matrix to the null matrix.
void set(const JMatrix3D &A)
Set matrix.
JMatrix3D & setIdentity()
Set to identity matrix.
double getDeterminant() const
Get determinant of matrix.
JMatrix3D & transpose()
Transpose.
JMatrix3D & negate()
Negate matrix.
JMatrix3D & div(const double factor)
Scale matrix.
JMatrix3D & add(const JMatrix3D &A)
Matrix addition.
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.
void transform(double &__x, double &__y, double &__z) const
Transform.
bool isIdentity(const double eps=std::numeric_limits< double >::min()) const
Test identity.
friend JWriter & operator<<(JWriter &out, const JMatrix3D &matrix)
Write matrix to output.
JMatrix3D & sub(const JMatrix3D &A)
Matrix subtraction.
JMatrix3D & mul(const double factor)
Scale matrix.
bool equals(const JMatrix3D &A, const double eps=std::numeric_limits< double >::min()) const
Equality.
friend std::ostream & operator<<(std::ostream &out, const JMatrix3D &A)
Print ASCII formatted output.
friend JReader & operator>>(JReader &in, JMatrix3D &matrix)
Read matrix from input.
static const JMatrix3D & getInstance()
Get reference to unique instance of this class object.
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.