CLHEP VERSION Reference Documentation
CLHEP Home Page CLHEP Documentation CLHEP Bug Reports |
#include <Transform3D.h>
Class for transformation of 3D geometrical objects. It allows different translations, rotations, scalings and reflections. Several specialized classes are derived from it:
TranslateX3D, TranslateY3D, TranslateZ3D, Translate3D,
RotateX3D, RotateY3D, RotateZ3D, Rotate3D,
ScaleX3D, ScaleY3D, ScaleZ3D, Scale3D,
ReflectX3D, ReflectY3D, ReflectZ3D, Reflect3D.
The idea behind these classes is to provide some additional constructors for Transform3D, they normally should not be used as separate classes.
Example:
HepGeom::Transform3D m; m = HepGeom::TranslateX3D(10.*cm);
Remark: For the reason that the operator* is left associative, the notation
v2 = m3*(m2*(m1*v1));
is much more effective then the notation
v2 = m3*m2*m1*v1;
In the first case three operations Transform3D*Vector3D are executed, in the second case two operations Transform3D*Transform3D and one Transform3D*Vector3D are performed. Transform3D*Transform3D is roughly three times slower than Transform3D*Vector3D.
Definition at line 172 of file CLHEP/Geometry/Transform3D.h.
HepGeom::Transform3D::Transform3D | ( | double | XX, |
double | XY, | ||
double | XZ, | ||
double | DX, | ||
double | YX, | ||
double | YY, | ||
double | YZ, | ||
double | DY, | ||
double | ZX, | ||
double | ZY, | ||
double | ZZ, | ||
double | DZ | ||
) | [inline, protected] |
Definition at line 179 of file CLHEP/Geometry/Transform3D.h.
HepGeom::Transform3D::Transform3D | ( | ) | [inline] |
Default constructor - sets the Identity transformation.
Definition at line 212 of file CLHEP/Geometry/Transform3D.h.
Referenced by inverse(), and operator*().
HepGeom::Transform3D::Transform3D | ( | const CLHEP::HepRotation & | m, |
const CLHEP::Hep3Vector & | v | ||
) | [inline] |
Constructor: rotation and then translation.
HepGeom::Transform3D::Transform3D | ( | const Point3D< double > & | fr0, |
const Point3D< double > & | fr1, | ||
const Point3D< double > & | fr2, | ||
const Point3D< double > & | to0, | ||
const Point3D< double > & | to1, | ||
const Point3D< double > & | to2 | ||
) |
Constructor: transformation of basis (assumed - no reflection).
Definition at line 67 of file Transform3D.cc.
References HepGeom::BasicVector3D< T >::cross(), setIdentity(), setTransform(), HepGeom::BasicVector3D< T >::x(), HepGeom::BasicVector3D< T >::y(), and HepGeom::BasicVector3D< T >::z().
HepGeom::Transform3D::Transform3D | ( | const Transform3D & | m | ) | [inline] |
Copy constructor.
Definition at line 232 of file CLHEP/Geometry/Transform3D.h.
HepGeom::Transform3D::~Transform3D | ( | ) | [inline] |
Destructor. Virtual for now as some persistency mechanism needs that, in future releases this might go away again.
Definition at line 242 of file CLHEP/Geometry/Transform3D.h.
HepGeom::Transform3D::Transform3D | ( | double | XX, |
double | XY, | ||
double | XZ, | ||
double | DX, | ||
double | YX, | ||
double | YY, | ||
double | YZ, | ||
double | DY, | ||
double | ZX, | ||
double | ZY, | ||
double | ZZ, | ||
double | DZ | ||
) | [inline, protected] |
Definition at line 179 of file Geometry/Transform3D.h.
HepGeom::Transform3D::Transform3D | ( | ) | [inline] |
Default constructor - sets the Identity transformation.
Definition at line 212 of file Geometry/Transform3D.h.
HepGeom::Transform3D::Transform3D | ( | const CLHEP::HepRotation & | m, |
const CLHEP::Hep3Vector & | v | ||
) | [inline] |
Constructor: rotation and then translation.
HepGeom::Transform3D::Transform3D | ( | const Point3D< double > & | fr0, |
const Point3D< double > & | fr1, | ||
const Point3D< double > & | fr2, | ||
const Point3D< double > & | to0, | ||
const Point3D< double > & | to1, | ||
const Point3D< double > & | to2 | ||
) |
Constructor: transformation of basis (assumed - no reflection).
HepGeom::Transform3D::Transform3D | ( | const Transform3D & | m | ) | [inline] |
Copy constructor.
Definition at line 232 of file Geometry/Transform3D.h.
HepGeom::Transform3D::~Transform3D | ( | ) | [inline] |
Destructor. Virtual for now as some persistency mechanism needs that, in future releases this might go away again.
Definition at line 242 of file Geometry/Transform3D.h.
double HepGeom::Transform3D::dx | ( | ) | const [inline] |
Gets dx-element of the transformation matrix.
Definition at line 280 of file CLHEP/Geometry/Transform3D.h.
References dx_.
Referenced by HepGeom::operator*(), HepGeom::Point3D< float >::transform(), and HepGeom::Point3D< double >::transform().
double HepGeom::Transform3D::dx | ( | ) | const [inline] |
Gets dx-element of the transformation matrix.
Definition at line 280 of file Geometry/Transform3D.h.
References dx_.
double HepGeom::Transform3D::dy | ( | ) | const [inline] |
Gets dy-element of the transformation matrix.
Definition at line 283 of file Geometry/Transform3D.h.
References dy_.
double HepGeom::Transform3D::dy | ( | ) | const [inline] |
Gets dy-element of the transformation matrix.
Definition at line 283 of file CLHEP/Geometry/Transform3D.h.
References dy_.
Referenced by HepGeom::operator*(), HepGeom::Point3D< float >::transform(), and HepGeom::Point3D< double >::transform().
double HepGeom::Transform3D::dz | ( | ) | const [inline] |
Gets dz-element of the transformation matrix.
Definition at line 286 of file Geometry/Transform3D.h.
References dz_.
double HepGeom::Transform3D::dz | ( | ) | const [inline] |
Gets dz-element of the transformation matrix.
Definition at line 286 of file CLHEP/Geometry/Transform3D.h.
References dz_.
Referenced by HepGeom::operator*(), HepGeom::Point3D< float >::transform(), and HepGeom::Point3D< double >::transform().
void HepGeom::Transform3D::getDecomposition | ( | Scale3D & | scale, |
Rotate3D & | rotation, | ||
Translate3D & | translation | ||
) | const |
Decomposition of general transformation. This function gets decomposition of the transformation in three consequentive specific transformations: Scale3D, then Rotate3D, then Translate3, i.e.
Transform3D = Translate3D * Rotate3D * Scale3D
scale | output: scaling transformation; if there was a reflection, then scale factor for z-component (scale(2,2)) will be negative. |
rotation | output: rotation transformaion. |
translation | output: translation transformaion. |
Definition at line 178 of file Transform3D.cc.
Referenced by main().
void HepGeom::Transform3D::getDecomposition | ( | Scale3D & | scale, |
Rotate3D & | rotation, | ||
Translate3D & | translation | ||
) | const |
Decomposition of general transformation. This function gets decomposition of the transformation in three consequentive specific transformations: Scale3D, then Rotate3D, then Translate3, i.e.
Transform3D = Translate3D * Rotate3D * Scale3D
scale | output: scaling transformation; if there was a reflection, then scale factor for z-component (scale(2,2)) will be negative. |
rotation | output: rotation transformaion. |
translation | output: translation transformaion. |
CLHEP::HepRotation HepGeom::Transform3D::getRotation | ( | ) | const [inline] |
Extracts the rotation matrix. This functions is obsolete - use getDecomposition() instead.
Referenced by XF::Pow::operator()().
CLHEP::HepRotation HepGeom::Transform3D::getRotation | ( | ) | const [inline] |
Extracts the rotation matrix. This functions is obsolete - use getDecomposition() instead.
CLHEP::Hep3Vector HepGeom::Transform3D::getTranslation | ( | ) | const [inline] |
Extracts the translation vector. This functions is obsolete - use getDecomposition() instead.
Referenced by XF::Pow::operator()().
CLHEP::Hep3Vector HepGeom::Transform3D::getTranslation | ( | ) | const [inline] |
Extracts the translation vector. This functions is obsolete - use getDecomposition() instead.
Transform3D HepGeom::Transform3D::inverse | ( | ) | const |
Returns the inverse transformation.
Transform3D HepGeom::Transform3D::inverse | ( | ) | const |
bool HepGeom::Transform3D::isNear | ( | const Transform3D & | t, |
double | tolerance = 2.2E-14 |
||
) | const |
bool HepGeom::Transform3D::isNear | ( | const Transform3D & | t, |
double | tolerance = 2.2E-14 |
||
) | const |
Returns true if the difference between corresponding matrix elements is less than the tolerance.
bool HepGeom::Transform3D::operator!= | ( | const Transform3D & | transform | ) | const [inline] |
Test for inequality.
Definition at line 354 of file CLHEP/Geometry/Transform3D.h.
References operator==().
bool HepGeom::Transform3D::operator!= | ( | const Transform3D & | transform | ) | const [inline] |
Test for inequality.
Definition at line 354 of file Geometry/Transform3D.h.
References operator==().
double HepGeom::Transform3D::operator() | ( | int | , |
int | |||
) | const |
Fortran-style subscripting: returns (i,j) element of the matrix.
double HepGeom::Transform3D::operator() | ( | int | i, |
int | j | ||
) | const |
Transform3D HepGeom::Transform3D::operator* | ( | const Transform3D & | b | ) | const |
Transform3D HepGeom::Transform3D::operator* | ( | const Transform3D & | b | ) | const |
Transformation by another Transform3D.
Transform3D& HepGeom::Transform3D::operator= | ( | const Transform3D & | m | ) | [inline] |
Transform3D& HepGeom::Transform3D::operator= | ( | const Transform3D & | m | ) | [inline] |
bool HepGeom::Transform3D::operator== | ( | const Transform3D & | transform | ) | const |
Test for equality.
bool HepGeom::Transform3D::operator== | ( | const Transform3D & | transform | ) | const |
const Transform3D_row HepGeom::Transform3D::operator[] | ( | int | ) | const [inline] |
Returns object of the helper class for C-style subscripting r[i][j]
const Transform3D_row HepGeom::Transform3D::operator[] | ( | int | ) | const [inline] |
Returns object of the helper class for C-style subscripting r[i][j]
void HepGeom::Transform3D::setIdentity | ( | ) | [inline] |
void HepGeom::Transform3D::setIdentity | ( | ) | [inline] |
void HepGeom::Transform3D::setTransform | ( | double | XX, |
double | XY, | ||
double | XZ, | ||
double | DX, | ||
double | YX, | ||
double | YY, | ||
double | YZ, | ||
double | DY, | ||
double | ZX, | ||
double | ZY, | ||
double | ZZ, | ||
double | DZ | ||
) | [inline, protected] |
Definition at line 187 of file CLHEP/Geometry/Transform3D.h.
References dx_, dy_, dz_, xx_, xy_, xz_, yx_, yy_, yz_, zx_, zy_, and zz_.
Referenced by HepGeom::Reflect3D::Reflect3D(), HepGeom::Rotate3D::Rotate3D(), HepGeom::RotateX3D::RotateX3D(), HepGeom::RotateY3D::RotateY3D(), HepGeom::RotateZ3D::RotateZ3D(), and Transform3D().
double HepGeom::Transform3D::xx | ( | ) | const [inline] |
Gets xx-element of the transformation matrix.
Definition at line 253 of file CLHEP/Geometry/Transform3D.h.
References xx_.
Referenced by main(), HepGeom::operator*(), HepGeom::Normal3D< float >::transform(), HepGeom::Vector3D< float >::transform(), HepGeom::Point3D< float >::transform(), HepGeom::Vector3D< double >::transform(), HepGeom::Normal3D< double >::transform(), and HepGeom::Point3D< double >::transform().
double HepGeom::Transform3D::xx | ( | ) | const [inline] |
Gets xx-element of the transformation matrix.
Definition at line 253 of file Geometry/Transform3D.h.
References xx_.
double HepGeom::Transform3D::xy | ( | ) | const [inline] |
Gets xy-element of the transformation matrix.
Definition at line 256 of file CLHEP/Geometry/Transform3D.h.
References xy_.
Referenced by main(), HepGeom::operator*(), HepGeom::Normal3D< float >::transform(), HepGeom::Vector3D< float >::transform(), HepGeom::Point3D< float >::transform(), HepGeom::Vector3D< double >::transform(), HepGeom::Normal3D< double >::transform(), and HepGeom::Point3D< double >::transform().
double HepGeom::Transform3D::xy | ( | ) | const [inline] |
Gets xy-element of the transformation matrix.
Definition at line 256 of file Geometry/Transform3D.h.
References xy_.
double HepGeom::Transform3D::xz | ( | ) | const [inline] |
Gets xz-element of the transformation matrix.
Definition at line 259 of file Geometry/Transform3D.h.
References xz_.
double HepGeom::Transform3D::xz | ( | ) | const [inline] |
Gets xz-element of the transformation matrix.
Definition at line 259 of file CLHEP/Geometry/Transform3D.h.
References xz_.
Referenced by main(), HepGeom::operator*(), HepGeom::Normal3D< float >::transform(), HepGeom::Vector3D< float >::transform(), HepGeom::Point3D< float >::transform(), HepGeom::Vector3D< double >::transform(), HepGeom::Normal3D< double >::transform(), and HepGeom::Point3D< double >::transform().
double HepGeom::Transform3D::yx | ( | ) | const [inline] |
Gets yx-element of the transformation matrix.
Definition at line 262 of file Geometry/Transform3D.h.
References yx_.
double HepGeom::Transform3D::yx | ( | ) | const [inline] |
Gets yx-element of the transformation matrix.
Definition at line 262 of file CLHEP/Geometry/Transform3D.h.
References yx_.
Referenced by main(), HepGeom::operator*(), HepGeom::Normal3D< float >::transform(), HepGeom::Vector3D< float >::transform(), HepGeom::Point3D< float >::transform(), HepGeom::Vector3D< double >::transform(), HepGeom::Normal3D< double >::transform(), and HepGeom::Point3D< double >::transform().
double HepGeom::Transform3D::yy | ( | ) | const [inline] |
Gets yy-element of the transformation matrix.
Definition at line 265 of file CLHEP/Geometry/Transform3D.h.
References yy_.
Referenced by main(), HepGeom::operator*(), HepGeom::Normal3D< float >::transform(), HepGeom::Vector3D< float >::transform(), HepGeom::Point3D< float >::transform(), HepGeom::Vector3D< double >::transform(), HepGeom::Normal3D< double >::transform(), and HepGeom::Point3D< double >::transform().
double HepGeom::Transform3D::yy | ( | ) | const [inline] |
Gets yy-element of the transformation matrix.
Definition at line 265 of file Geometry/Transform3D.h.
References yy_.
double HepGeom::Transform3D::yz | ( | ) | const [inline] |
Gets yz-element of the transformation matrix.
Definition at line 268 of file Geometry/Transform3D.h.
References yz_.
double HepGeom::Transform3D::yz | ( | ) | const [inline] |
Gets yz-element of the transformation matrix.
Definition at line 268 of file CLHEP/Geometry/Transform3D.h.
References yz_.
Referenced by main(), HepGeom::operator*(), HepGeom::Normal3D< float >::transform(), HepGeom::Vector3D< float >::transform(), HepGeom::Point3D< float >::transform(), HepGeom::Vector3D< double >::transform(), HepGeom::Normal3D< double >::transform(), and HepGeom::Point3D< double >::transform().
double HepGeom::Transform3D::zx | ( | ) | const [inline] |
Gets zx-element of the transformation matrix.
Definition at line 271 of file CLHEP/Geometry/Transform3D.h.
References zx_.
Referenced by main(), HepGeom::operator*(), HepGeom::Normal3D< float >::transform(), HepGeom::Vector3D< float >::transform(), HepGeom::Point3D< float >::transform(), HepGeom::Vector3D< double >::transform(), HepGeom::Normal3D< double >::transform(), and HepGeom::Point3D< double >::transform().
double HepGeom::Transform3D::zx | ( | ) | const [inline] |
Gets zx-element of the transformation matrix.
Definition at line 271 of file Geometry/Transform3D.h.
References zx_.
double HepGeom::Transform3D::zy | ( | ) | const [inline] |
Gets zy-element of the transformation matrix.
Definition at line 274 of file CLHEP/Geometry/Transform3D.h.
References zy_.
Referenced by main(), HepGeom::operator*(), HepGeom::Normal3D< float >::transform(), HepGeom::Vector3D< float >::transform(), HepGeom::Point3D< float >::transform(), HepGeom::Vector3D< double >::transform(), HepGeom::Normal3D< double >::transform(), and HepGeom::Point3D< double >::transform().
double HepGeom::Transform3D::zy | ( | ) | const [inline] |
Gets zy-element of the transformation matrix.
Definition at line 274 of file Geometry/Transform3D.h.
References zy_.
double HepGeom::Transform3D::zz | ( | ) | const [inline] |
Gets zz-element of the transformation matrix.
Definition at line 277 of file CLHEP/Geometry/Transform3D.h.
References zz_.
Referenced by main(), HepGeom::operator*(), HepGeom::Normal3D< float >::transform(), HepGeom::Vector3D< float >::transform(), HepGeom::Point3D< float >::transform(), HepGeom::Vector3D< double >::transform(), HepGeom::Normal3D< double >::transform(), and HepGeom::Point3D< double >::transform().
double HepGeom::Transform3D::zz | ( | ) | const [inline] |
Gets zz-element of the transformation matrix.
Definition at line 277 of file Geometry/Transform3D.h.
References zz_.
double HepGeom::Transform3D::dx_ [protected] |
Definition at line 174 of file CLHEP/Geometry/Transform3D.h.
Referenced by dx(), inverse(), isNear(), operator()(), operator*(), operator=(), operator==(), setIdentity(), and setTransform().
double HepGeom::Transform3D::dy_ [protected] |
Definition at line 174 of file CLHEP/Geometry/Transform3D.h.
Referenced by dy(), inverse(), isNear(), operator()(), operator*(), operator=(), operator==(), setIdentity(), and setTransform().
double HepGeom::Transform3D::dz_ [protected] |
Definition at line 174 of file CLHEP/Geometry/Transform3D.h.
Referenced by dz(), inverse(), isNear(), operator()(), operator*(), operator=(), operator==(), setIdentity(), and setTransform().
const Transform3D HepGeom::Transform3D::Identity = Transform3D () [static] |
Global identity transformation.
Definition at line 198 of file CLHEP/Geometry/Transform3D.h.
Referenced by main().
double HepGeom::Transform3D::xx_ [protected] |
Definition at line 174 of file CLHEP/Geometry/Transform3D.h.
Referenced by inverse(), isNear(), operator()(), operator*(), operator=(), operator==(), setIdentity(), setTransform(), and xx().
double HepGeom::Transform3D::xy_ [protected] |
Definition at line 174 of file CLHEP/Geometry/Transform3D.h.
Referenced by inverse(), isNear(), operator()(), operator*(), operator=(), operator==(), setIdentity(), setTransform(), and xy().
double HepGeom::Transform3D::xz_ [protected] |
Definition at line 174 of file CLHEP/Geometry/Transform3D.h.
Referenced by inverse(), isNear(), operator()(), operator*(), operator=(), operator==(), setIdentity(), setTransform(), and xz().
double HepGeom::Transform3D::yx_ [protected] |
Definition at line 174 of file CLHEP/Geometry/Transform3D.h.
Referenced by inverse(), isNear(), operator()(), operator*(), operator=(), operator==(), setIdentity(), setTransform(), and yx().
double HepGeom::Transform3D::yy_ [protected] |
Definition at line 174 of file CLHEP/Geometry/Transform3D.h.
Referenced by inverse(), isNear(), operator()(), operator*(), operator=(), operator==(), setIdentity(), setTransform(), and yy().
double HepGeom::Transform3D::yz_ [protected] |
Definition at line 174 of file CLHEP/Geometry/Transform3D.h.
Referenced by inverse(), isNear(), operator()(), operator*(), operator=(), operator==(), setIdentity(), setTransform(), and yz().
double HepGeom::Transform3D::zx_ [protected] |
Definition at line 174 of file CLHEP/Geometry/Transform3D.h.
Referenced by inverse(), isNear(), operator()(), operator*(), operator=(), operator==(), setIdentity(), setTransform(), and zx().
double HepGeom::Transform3D::zy_ [protected] |
Definition at line 174 of file CLHEP/Geometry/Transform3D.h.
Referenced by inverse(), isNear(), operator()(), operator*(), operator=(), operator==(), setIdentity(), setTransform(), and zy().
double HepGeom::Transform3D::zz_ [protected] |
Definition at line 174 of file CLHEP/Geometry/Transform3D.h.
Referenced by inverse(), isNear(), operator()(), operator*(), operator=(), operator==(), setIdentity(), setTransform(), and zz().