CLHEP 2.0.4.7 Reference Documentation
   
CLHEP Home Page     CLHEP Documentation     CLHEP Bug Reports

HepGeom::Transform3D Class Reference

#include <Transform3D.h>

Inheritance diagram for HepGeom::Transform3D:

HepGeom::Reflect3D HepGeom::Rotate3D HepGeom::Scale3D HepGeom::Translate3D HepGeom::ReflectX3D HepGeom::ReflectY3D HepGeom::ReflectZ3D HepGeom::RotateX3D HepGeom::RotateY3D HepGeom::RotateZ3D HepGeom::ScaleX3D HepGeom::ScaleY3D HepGeom::ScaleZ3D HepGeom::TranslateX3D HepGeom::TranslateY3D HepGeom::TranslateZ3D List of all members.

Public Member Functions

 Transform3D ()
 Transform3D (const CLHEP::HepRotation &m, const CLHEP::Hep3Vector &v)
 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)
 Transform3D (const Transform3D &m)
 ~Transform3D ()
const Transform3D_row operator[] (int) const
double operator() (int, int) const
double xx () const
double xy () const
double xz () const
double yx () const
double yy () const
double yz () const
double zx () const
double zy () const
double zz () const
double dx () const
double dy () const
double dz () const
Transform3Doperator= (const Transform3D &m)
void setIdentity ()
Transform3D inverse () const
Transform3D operator * (const Transform3D &b) const
void getDecomposition (Scale3D &scale, Rotate3D &rotation, Translate3D &translation) const
bool isNear (const Transform3D &t, double tolerance=2.2E-14) const
CLHEP::HepRotation getRotation () const
CLHEP::Hep3Vector getTranslation () const
bool operator== (const Transform3D &transform) const
bool operator!= (const Transform3D &transform) const

Static Public Attributes

static const Transform3D Identity = Transform3D ()

Protected Member Functions

 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)
void 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)

Protected Attributes

double xx_
double xy_
double xz_
double dx_
double yx_
double yy_
double yz_
double dy_
double zx_
double zy_
double zz_
double dz_

Classes

class  Transform3D_row

Detailed Description

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.

Author:
<Evgueni.Tcherniaev@cern.ch>

Definition at line 172 of file Transform3D.h.


Constructor & Destructor Documentation

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 Transform3D.h.

HepGeom::Transform3D::Transform3D (  )  [inline]

Default constructor - sets the Identity transformation.

Definition at line 212 of file 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 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 Transform3D.h.


Member Function Documentation

double HepGeom::Transform3D::dx (  )  const [inline]

Gets dx-element of the transformation matrix.

Definition at line 280 of file Transform3D.h.

References dx_.

Referenced by HepGeom::operator *(), HepGeom::Point3D< double >::transform(), and HepGeom::Point3D< float >::transform().

double HepGeom::Transform3D::dy (  )  const [inline]

Gets dy-element of the transformation matrix.

Definition at line 283 of file Transform3D.h.

References dy_.

Referenced by HepGeom::operator *(), HepGeom::Point3D< double >::transform(), and HepGeom::Point3D< float >::transform().

double HepGeom::Transform3D::dz (  )  const [inline]

Gets dz-element of the transformation matrix.

Definition at line 286 of file Transform3D.h.

References dz_.

Referenced by HepGeom::operator *(), HepGeom::Point3D< double >::transform(), and HepGeom::Point3D< float >::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

Parameters:
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().

CLHEP::HepRotation HepGeom::Transform3D::getRotation (  )  const [inline]

Extracts the rotation matrix. This functions is obsolete - use getDecomposition() instead.

Referenced by main().

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.

Definition at line 146 of file Transform3D.cc.

References dx_, dy_, dz_, Transform3D(), xx_, xy_, xz_, yx_, yy_, yz_, zx_, zy_, and zz_.

Referenced by main().

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.

Definition at line 208 of file Transform3D.cc.

References dx_, dy_, dz_, xx_, xy_, xz_, yx_, yy_, yz_, zx_, zy_, and zz_.

Transform3D HepGeom::Transform3D::operator * ( const Transform3D b  )  const

Transformation by another Transform3D.

Definition at line 56 of file Transform3D.cc.

References dx_, dy_, dz_, Transform3D(), xx_, xy_, xz_, yx_, yy_, yz_, zx_, zy_, and zz_.

bool HepGeom::Transform3D::operator!= ( const Transform3D transform  )  const [inline]

Test for inequality.

Definition at line 354 of file Transform3D.h.

References operator==().

double HepGeom::Transform3D::operator() ( int  ,
int   
) const

Fortran-style subscripting: returns (i,j) element of the matrix.

Definition at line 28 of file Transform3D.cc.

References dx_, dy_, dz_, xx_, xy_, xz_, yx_, yy_, yz_, zx_, zy_, and zz_.

Transform3D& HepGeom::Transform3D::operator= ( const Transform3D m  )  [inline]

Assignment.

Definition at line 290 of file Transform3D.h.

References dx_, dy_, dz_, xx_, xy_, xz_, yx_, yy_, yz_, zx_, zy_, and zz_.

bool HepGeom::Transform3D::operator== ( const Transform3D transform  )  const

Test for equality.

Definition at line 225 of file Transform3D.cc.

References dx_, dy_, dz_, xx_, xy_, xz_, yx_, yy_, yz_, zx_, zy_, and zz_.

Referenced by operator!=().

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]

Sets the Identity transformation.

Definition at line 299 of file Transform3D.h.

References dx_, dy_, dz_, xx_, xy_, xz_, yx_, yy_, yz_, zx_, zy_, and zz_.

Referenced by HepGeom::Reflect3D::Reflect3D(), and Transform3D().

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 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 Transform3D.h.

References xx_.

Referenced by main(), HepGeom::operator *(), HepGeom::Vector3D< double >::transform(), HepGeom::Vector3D< float >::transform(), HepGeom::Point3D< double >::transform(), HepGeom::Point3D< float >::transform(), HepGeom::Normal3D< double >::transform(), and HepGeom::Normal3D< float >::transform().

double HepGeom::Transform3D::xy (  )  const [inline]

Gets xy-element of the transformation matrix.

Definition at line 256 of file Transform3D.h.

References xy_.

Referenced by main(), HepGeom::operator *(), HepGeom::Vector3D< double >::transform(), HepGeom::Vector3D< float >::transform(), HepGeom::Point3D< double >::transform(), HepGeom::Point3D< float >::transform(), HepGeom::Normal3D< double >::transform(), and HepGeom::Normal3D< float >::transform().

double HepGeom::Transform3D::xz (  )  const [inline]

Gets xz-element of the transformation matrix.

Definition at line 259 of file Transform3D.h.

References xz_.

Referenced by main(), HepGeom::operator *(), HepGeom::Vector3D< double >::transform(), HepGeom::Vector3D< float >::transform(), HepGeom::Point3D< double >::transform(), HepGeom::Point3D< float >::transform(), HepGeom::Normal3D< double >::transform(), and HepGeom::Normal3D< float >::transform().

double HepGeom::Transform3D::yx (  )  const [inline]

Gets yx-element of the transformation matrix.

Definition at line 262 of file Transform3D.h.

References yx_.

Referenced by main(), HepGeom::operator *(), HepGeom::Vector3D< double >::transform(), HepGeom::Vector3D< float >::transform(), HepGeom::Point3D< double >::transform(), HepGeom::Point3D< float >::transform(), HepGeom::Normal3D< double >::transform(), and HepGeom::Normal3D< float >::transform().

double HepGeom::Transform3D::yy (  )  const [inline]

Gets yy-element of the transformation matrix.

Definition at line 265 of file Transform3D.h.

References yy_.

Referenced by main(), HepGeom::operator *(), HepGeom::Vector3D< double >::transform(), HepGeom::Vector3D< float >::transform(), HepGeom::Point3D< double >::transform(), HepGeom::Point3D< float >::transform(), HepGeom::Normal3D< double >::transform(), and HepGeom::Normal3D< float >::transform().

double HepGeom::Transform3D::yz (  )  const [inline]

Gets yz-element of the transformation matrix.

Definition at line 268 of file Transform3D.h.

References yz_.

Referenced by main(), HepGeom::operator *(), HepGeom::Vector3D< double >::transform(), HepGeom::Vector3D< float >::transform(), HepGeom::Point3D< double >::transform(), HepGeom::Point3D< float >::transform(), HepGeom::Normal3D< double >::transform(), and HepGeom::Normal3D< float >::transform().

double HepGeom::Transform3D::zx (  )  const [inline]

Gets zx-element of the transformation matrix.

Definition at line 271 of file Transform3D.h.

References zx_.

Referenced by main(), HepGeom::operator *(), HepGeom::Vector3D< double >::transform(), HepGeom::Vector3D< float >::transform(), HepGeom::Point3D< double >::transform(), HepGeom::Point3D< float >::transform(), HepGeom::Normal3D< double >::transform(), and HepGeom::Normal3D< float >::transform().

double HepGeom::Transform3D::zy (  )  const [inline]

Gets zy-element of the transformation matrix.

Definition at line 274 of file Transform3D.h.

References zy_.

Referenced by main(), HepGeom::operator *(), HepGeom::Vector3D< double >::transform(), HepGeom::Vector3D< float >::transform(), HepGeom::Point3D< double >::transform(), HepGeom::Point3D< float >::transform(), HepGeom::Normal3D< double >::transform(), and HepGeom::Normal3D< float >::transform().

double HepGeom::Transform3D::zz (  )  const [inline]

Gets zz-element of the transformation matrix.

Definition at line 277 of file Transform3D.h.

References zz_.

Referenced by main(), HepGeom::operator *(), HepGeom::Vector3D< double >::transform(), HepGeom::Vector3D< float >::transform(), HepGeom::Point3D< double >::transform(), HepGeom::Point3D< float >::transform(), HepGeom::Normal3D< double >::transform(), and HepGeom::Normal3D< float >::transform().


Member Data Documentation

double HepGeom::Transform3D::dx_ [protected]

Definition at line 174 of file 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 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 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 Transform3D.h.

Referenced by main().

double HepGeom::Transform3D::xx_ [protected]

Definition at line 174 of file 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 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 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 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 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 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 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 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 Transform3D.h.

Referenced by inverse(), isNear(), operator *(), operator()(), operator=(), operator==(), setIdentity(), setTransform(), and zz().


The documentation for this class was generated from the following files:
Generated on Thu Jul 1 22:02:32 2010 for CLHEP by  doxygen 1.4.7