| 
    EGSnrc C++ class library
    Report PIRS-898 (2021)
    
   Iwan Kawrakow, Ernesto Mainegra-Hing, Frederic Tessier, Reid Townson and Blake Walters 
   | 
 
A class providing affine transformations. More...
#include <egs_transformations.h>
Public Member Functions | |
| EGS_AffineTransform () | |
| Constructs a unit affine transformation.  | |
| EGS_AffineTransform (const EGS_AffineTransform &tr) | |
| Copy constructor.  | |
| EGS_AffineTransform (const EGS_RotationMatrix &m, const EGS_Vector &v) | |
| Constructs an affine transformation object from the rotation m and translation v.  | |
| EGS_AffineTransform (const EGS_RotationMatrix &m) | |
| Constructs an affine transformation object from the rotation m, which has no translation.  | |
| EGS_AffineTransform (const EGS_Vector &v) | |
| Constructs an affine transformation object from the translation v, which has no rotation.  | |
| EGS_AffineTransform | operator* (const EGS_AffineTransform &tr) const | 
| Returns the multiplication of the invoking object with tr.  More... | |
| EGS_AffineTransform | operator* (const EGS_RotationMatrix &m) const | 
| Returns the affine transformation  | |
| EGS_AffineTransform & | operator*= (const EGS_AffineTransform &tr) | 
| Multiplies the invoking object from the right with tr. Returns a reference to the result.  More... | |
| EGS_AffineTransform & | operator*= (const EGS_RotationMatrix &m) | 
| Multiplies the invoking object from the right with m. Returns a reference to the result.  More... | |
| EGS_AffineTransform | operator+ (const EGS_Vector &v) const | 
| EGS_AffineTransform & | operator+= (const EGS_Vector &v) | 
| EGS_Vector | operator* (const EGS_Vector &v) const | 
| Applies the transformation to the vector v from the left and returns the result.  | |
| void | transform (EGS_Vector &v) const | 
| Transforms the vector v.  | |
| void | inverseTransform (EGS_Vector &v) const | 
| Applies the inverse transformation to the vector v.  | |
| EGS_AffineTransform | inverse () const | 
| Returns the inverse affine transformation.  | |
| void | rotate (EGS_Vector &v) const | 
| Applies the rotation to the vector v.  | |
| void | rotateInverse (EGS_Vector &v) const | 
| Applies the inverse rotation to the vector v.  | |
| void | translate (EGS_Vector &v) const | 
| Applies the translation to the vector v.  | |
| const EGS_Vector & | getTranslation () const | 
| Returns the translation vector of the affine transformation object.  | |
| const EGS_RotationMatrix & | getRotation () const | 
| Returns the rotation matrix of the affine transformation object.  | |
| bool | isI () const | 
Returns true if the object is a unity transformation, false otherwise.  | |
| bool | hasTranslation () const | 
Returns true if the transformation involves a translation, false otherwise.  | |
| bool | hasRotation () const | 
Returns true if the transformation involves a rotation, false otherwise.  | |
Static Public Member Functions | |
| static EGS_AffineTransform * | getTransformation (EGS_Input *inp) | 
| Constructs an affine transformation object from the input pointed to by inp and returns a pointer to it.  More... | |
| static EGS_AffineTransform * | getTransformation (vector< EGS_Float > trnsl, vector< EGS_Float > rot) | 
Protected Attributes | |
| EGS_RotationMatrix | R | 
| EGS_Vector | t | 
| bool | has_t | 
| bool | has_R | 
Friends | |
| EGS_Vector | operator* (const EGS_Vector &v, const EGS_AffineTransform &tr) | 
| Applies the transformation tr to the invoking vector from the right and returns the result.  | |
| EGS_Vector & | operator*= (EGS_Vector &v, const EGS_AffineTransform &tr) | 
| Applies the transformation tr to the invoking vector from the right, assignes the result to v and returns a reference to it.  | |
A class providing affine transformations.
An affine transformation 
 consists of a rotation 
 and a translation 
, so that 
. See the getTransformation() documentation for description of the keys needed to define an affine transformation. 
Definition at line 422 of file egs_transformations.h.
| EGS_AffineTransform EGS_AffineTransform::operator* | ( | const EGS_AffineTransform & | tr | ) | const | 
Returns the multiplication of the invoking object with tr.
The multiplication of 2 affine transformations 
 and 
 is defined as the affine transformation 
 which, when applied on any vecor 
, results in the same vector that one would obtain by first transforming it with 
 and then with 
. It is easy to see that 
 and 
. 
Definition at line 490 of file egs_transformations.h.
| EGS_AffineTransform& EGS_AffineTransform::operator*= | ( | const EGS_AffineTransform & | tr | ) | 
Multiplies the invoking object from the right with tr. Returns a reference to the result.
Definition at line 506 of file egs_transformations.h.
| EGS_AffineTransform& EGS_AffineTransform::operator*= | ( | const EGS_RotationMatrix & | m | ) | 
Multiplies the invoking object from the right with m. Returns a reference to the result.
Definition at line 515 of file egs_transformations.h.
      
  | 
  static | 
Constructs an affine transformation object from the input pointed to by inp and returns a pointer to it.
A transformation is defined in the input file using the following set of keys:
:start transformation:
    translation = tx, ty, tz
    rotation    = 2, 3 or 9 floating point numbers
    or
    rotation vector = 3 floating point numbers
:stop transformation:
 There are many different ways to define a rotation. The  rotation vector  input defines a rotation which, when applied to the 3D vector defined by the input, transforms it into a vector along the positive z-axis. For instance, if one wanted to have a rotation of +45 degrees around the y-axis, one would use -1,0,1 as input to the  rotation vector  key. The input to the rotation key is interpreted as follows:
Definition at line 44 of file egs_transformations.cpp.
References EGS_AffineTransform(), egsWarning, EGS_Input::getInput(), EGS_RotationMatrix::inverse(), EGS_Input::isA(), EGS_RotationMatrix::isRotation(), EGS_RotationMatrix::rotZ(), and EGS_Input::takeInputItem().
Referenced by EGS_BoxShape::createObject(), EGS_TransformedSource::EGS_TransformedSource(), EGS_GeometryTester::getGeometryTester(), EGS_DynamicGeometry::getNextGeom(), EGS_DynamicShape::getNextShapePosition(), EGS_BaseShape::setTransformation(), and EGS_DynamicGeometry::updatePosition().
 1.9.1