CLHEP 2.4.6.4
C++ Class Library for High Energy Physics
Loading...
Searching...
No Matches
HepGeom::Rotate3D Class Reference

#include <Transform3D.h>

+ Inheritance diagram for HepGeom::Rotate3D:

Public Member Functions

 Rotate3D ()
 
 Rotate3D (const CLHEP::HepRotation &mt)
 
 Rotate3D (double a, const Point3D< double > &p1, const Point3D< double > &p2)
 
 Rotate3D (double a, const Vector3D< double > &v)
 
 Rotate3D (const Point3D< double > &fr1, const Point3D< double > &fr2, const Point3D< double > &to1, const Point3D< double > &to2)
 
- Public Member Functions inherited from HepGeom::Transform3D
 Transform3D ()
 
 Transform3D (const CLHEP::HepRotation &mt, 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 &mt)=default
 
 Transform3D (Transform3D &&mt)=default
 
 ~Transform3D ()=default
 
Transform3Doperator= (const Transform3D &mt)=default
 
Transform3Doperator= (Transform3D &&mt)=default
 
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
 
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
 

Additional Inherited Members

- Static Public Attributes inherited from HepGeom::Transform3D
static const Transform3D Identity = Transform3D ()
 
- Protected Member Functions inherited from 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)
 
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 inherited from HepGeom::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_
 

Detailed Description

Constructs a rotation transformation. This class provides additional constructors for Transform3D and should not be used as a separate class.

Example of use:

m = Rotate3D(30.*deg, HepVector3D(1.,1.,1.));
Author
Evgue.nosp@m.ni.T.nosp@m.chern.nosp@m.iaev.nosp@m.@cern.nosp@m..ch

Definition at line 372 of file Transform3D.h.

Constructor & Destructor Documentation

◆ Rotate3D() [1/5]

HepGeom::Rotate3D::Rotate3D ( )
inline

Default constructor: sets the Identity transformation.

Definition at line 376 of file Transform3D.h.

◆ Rotate3D() [2/5]

HepGeom::Rotate3D::Rotate3D ( const CLHEP::HepRotation mt)
inline

Constructor from CLHEP::HepRotation.

◆ Rotate3D() [3/5]

HepGeom::Rotate3D::Rotate3D ( double  a,
const Point3D< double > &  p1,
const Point3D< double > &  p2 
)

Constructor from angle and axis given by two points.

Parameters
aangle of rotation
p1begin point of the axis
p2end point of the axis

Definition at line 232 of file Transform3D.cc.

234 : Transform3D()
235 /***********************************************************************
236 * *
237 * Name: Rotate3D::Rotate3D Date: 24.09.96 *
238 * Author: E.Chernyaev (IHEP/Protvino) Revised: *
239 * *
240 * Function: Create 3D Rotation through angle "a" (counterclockwise) *
241 * around the axis p1->p2 *
242 * *
243 ***********************************************************************/
244 {
245 if (a == 0) return;
246
247 double cx = p2.x()-p1.x(), cy = p2.y()-p1.y(), cz = p2.z()-p1.z();
248 double ll = std::sqrt(cx*cx + cy*cy + cz*cz);
249 if (ll == 0) {
250 std::cerr << "Rotate3D: zero axis" << std::endl;
251 }else{
252 double cosa = std::cos(a), sina = std::sin(a);
253 cx /= ll; cy /= ll; cz /= ll;
254
255 double txx = cosa + (1-cosa)*cx*cx;
256 double txy = (1-cosa)*cx*cy - sina*cz;
257 double txz = (1-cosa)*cx*cz + sina*cy;
258
259 double tyx = (1-cosa)*cy*cx + sina*cz;
260 double tyy = cosa + (1-cosa)*cy*cy;
261 double tyz = (1-cosa)*cy*cz - sina*cx;
262
263 double tzx = (1-cosa)*cz*cx - sina*cy;
264 double tzy = (1-cosa)*cz*cy + sina*cx;
265 double tzz = cosa + (1-cosa)*cz*cz;
266
267 double tdx = p1.x(), tdy = p1.y(), tdz = p1.z();
268
269 setTransform(txx, txy, txz, tdx-txx*tdx-txy*tdy-txz*tdz,
270 tyx, tyy, tyz, tdy-tyx*tdx-tyy*tdy-tyz*tdz,
271 tzx, tzy, tzz, tdz-tzx*tdx-tzy*tdy-tzz*tdz);
272 }
273 }
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)
Definition: Transform3D.h:187

◆ Rotate3D() [4/5]

HepGeom::Rotate3D::Rotate3D ( double  a,
const Vector3D< double > &  v 
)
inline

Constructor from angle and axis.

Parameters
aangle of rotation
vaxis of rotation

◆ Rotate3D() [5/5]

HepGeom::Rotate3D::Rotate3D ( const Point3D< double > &  fr1,
const Point3D< double > &  fr2,
const Point3D< double > &  to1,
const Point3D< double > &  to2 
)
inline

Constructor for rotation given by original and rotated position of two points. It is assumed that there is no reflection.

Parameters
fr1original position of 1st point
fr2original position of 2nd point
to1rotated position of 1st point
to2rotated position of 2nd point

The documentation for this class was generated from the following files: