17 #ifndef ROOT_Math_GenVector_Rotation3D 18 #define ROOT_Math_GenVector_Rotation3D 1 131 template<
class ForeignMatrix>
140 template<
class ForeignVector>
142 const ForeignVector& v2,
151 Scalar yx, Scalar yy, Scalar yz,
152 Scalar zx, Scalar zy, Scalar zz)
165 rhs.
fM[3], rhs.
fM[4], rhs.
fM[5],
166 rhs.
fM[6], rhs.
fM[7], rhs.
fM[8] );
208 template<
class ForeignMatrix>
212 m(1,0),
m(1,1),
m(1,2),
213 m(2,0),
m(2,1),
m(2,2) );
231 template<
class ForeignVector>
234 const ForeignVector& v2,
235 const ForeignVector& v3 ) {
247 template<
class ForeignVector>
251 ForeignVector& v3 )
const {
267 for (
int i = 0; i <9; ++i) {
284 for (
int i = 0; i <9; ++i) {
296 std::copy (
fM,
fM+9, begin );
305 template<
class ForeignMatrix>
318 template<
class ForeignMatrix>
331 Scalar yx, Scalar yy, Scalar yz,
332 Scalar zx, Scalar zy, Scalar zz) {
343 Scalar &yx, Scalar &yy, Scalar &yz,
344 Scalar &zx, Scalar &zy, Scalar &zz)
const {
356 template <
class CoordSystem,
class U>
369 template <
class CoordSystem,
class U>
380 template <
class CoordSystem>
394 template <
class ForeignVector>
399 return ForeignVector ( rxyz.
X(), rxyz.
Y(), rxyz.
Z() );
405 template <
class AVector>
467 if(
fM[0] != rhs.
fM[0] )
return false;
468 if(
fM[1] != rhs.
fM[1] )
return false;
469 if(
fM[2] != rhs.
fM[2] )
return false;
470 if(
fM[3] != rhs.
fM[3] )
return false;
471 if(
fM[4] != rhs.
fM[4] )
return false;
472 if(
fM[5] != rhs.
fM[5] )
return false;
473 if(
fM[6] != rhs.
fM[6] )
return false;
474 if(
fM[7] != rhs.
fM[7] )
return false;
475 if(
fM[8] != rhs.
fM[8] )
return false;
527 #endif // ROOT_Math_GenVector_Rotation3D Rotation3D(AxisAngle const &a)
Construct from an AxisAngle.
Class describing a generic LorentzVector in the 4D space-time, using the specified coordinate system ...
double dist(Rotation3D const &r1, Rotation3D const &r2)
Rotation3D(RotationZYX const &e)
Construct from RotationZYX.
bool operator==(const Rotation3D &rhs) const
Equality/inequality operators.
DisplacementVector3D< CoordSystem, Tag > & SetXYZ(Scalar a, Scalar b, Scalar c)
set the values of the vector from the cartesian components (x,y,z) (if the vector is held in polar or...
Namespace for new ROOT classes and functions.
void GetComponents(ForeignVector &v1, ForeignVector &v2, ForeignVector &v3) const
Get components into three vectors which will be the (orthonormal) columns of the rotation matrix...
Rotation3D & operator=(Rotation3D const &rhs)
Assignment operator.
Rotation class representing a 3D rotation about the Z axis by the angle of rotation.
void SetRotationMatrix(const ForeignMatrix &m)
Set components from a linear algebra matrix of size at least 3x3, which must support operator()(i...
void GetComponents(IT begin, IT end) const
Get the 9 matrix components into data specified by an iterator begin and another to the end of the de...
void SetComponents(Scalar xx, Scalar xy, Scalar xz, Scalar yx, Scalar yy, Scalar yz, Scalar zx, Scalar zy, Scalar zz)
Set the components from nine scalars – UNCHECKED for orthonormaility.
Class describing a generic position vector (point) in 3 dimensions.
Rotation3D & operator=(Quaternion const &q)
Assign from a Quaternion.
Rotation class with the (3D) rotation represented by angles describing first a rotation of an angle p...
Rotation3D Inverse() const
Return inverse of a rotation.
void GetRotationMatrix(ForeignMatrix &m) const
Get components into a linear algebra matrix of size at least 3x3, which must support operator()(i...
Rotation3D(const ForeignVector &v1, const ForeignVector &v2, const ForeignVector &v3)
Construct from three orthonormal vectors (which must have methods x(), y() and z()) which will be use...
Rotation3D & operator=(RotationZYX const &r)
Assign from RotationZYX.
void GetComponents(Scalar &xx, Scalar &xy, Scalar &xz, Scalar &yx, Scalar &yy, Scalar &yz, Scalar &zx, Scalar &zy, Scalar &zz) const
Get the nine components into nine scalars.
Rotation class with the (3D) rotation represented by a unit quaternion (u, i, j, k).
std::ostream & operator<<(std::ostream &os, const AxisAngle &a)
Stream Output and Input.
AxisAngle class describing rotation represented with direction axis (3D Vector) and an angle of rotat...
Scalar X() const
Cartesian X, converting if necessary from internal coordinate system.
bool operator!=(const Rotation3D &rhs) const
Rotation3D & operator=(AxisAngle const &a)
Assign from an AxisAngle.
Rotation3D(Rotation3D const &r)
copy constructor
Rotation class representing a 3D rotation about the Y axis by the angle of rotation.
Scalar Z() const
Cartesian Z, converting if necessary from internal coordinate system.
Scalar Y() const
Cartesian Y, converting if necessary from internal coordinate system.
Rotation3D & operator=(EulerAngles const &e)
Assign from EulerAngles.
void SetComponents(IT begin, IT end)
Set the 9 matrix components given an iterator to the start of the desired data, and another to the en...
Scalar E() const
return 4-th component (time, or energy for a 4-momentum vector)
void Rectify()
Re-adjust components to eliminate small deviations from perfect orthonormality.
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t Int_t m
AVector operator*(const AVector &v) const
Overload operator * for rotation on a vector.
Class describing a generic displacement vector in 3 dimensions.
Rotation3D & operator=(RotationZ const &r)
Assign from an axial rotation.
Rotation class representing a 3D rotation about the X axis by the angle of rotation.
Rotation3D & operator=(RotationX const &r)
Rotation3D(IT begin, IT end)
Construct given a pair of pointers or iterators defining the beginning and end of an array of nine Sc...
Rotation3D & operator=(const ForeignMatrix &m)
Assign from an orthonormal linear algebra matrix of size 3x3, which must support operator()(i,j) to obtain elements (0,0) thru (2,2).
void GetComponents(IT begin) const
Get the 9 matrix components into data specified by an iterator begin.
Rotation class with the (3D) rotation represented by a 3x3 orthogonal matrix.
Rotation3D(EulerAngles const &e)
Construct from EulerAngles.
Rotation3D & operator=(RotationY const &r)
Rotation3D & operator*=(const R &r)
Post-Multiply (on right) by another rotation : T = T*R.
void convert(R1 const &, R2 const)
EulerAngles class describing rotation as three angles (Euler Angles).
Rotation3D(Quaternion const &q)
Construct from a Quaternion.
Rotation3D(RotationY const &r)
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
Rotation3D(RotationX const &r)
Rotation3D(const ForeignMatrix &m)
Construct from a linear algebra matrix of size at least 3x3, which must support operator()(i,j) to obtain elements (0,0) thru (2,2).
Namespace for new Math classes and functions.
void SetComponents(const ForeignVector &v1, const ForeignVector &v2, const ForeignVector &v3)
Set components from three orthonormal vectors (which must have methods x(), y() and z()) which will b...
void Invert()
Invert a rotation in place.
Rotation3D()
Default constructor (identity rotation)
Rotation3D(RotationZ const &r)
Construct from an axial rotation.
AxisAngle::Scalar Distance(const AxisAngle &r1, const R &r2)
Distance between two rotations.
constexpr Double_t R()
Universal gas constant ( ) in
::ROOT::Math::DisplacementVector3D< Cartesian3D< Scalar > > Vect() const
get the spatial components of the Vector in a DisplacementVector based on Cartesian Coordinates ...
Rotation3D(Scalar xx, Scalar xy, Scalar xz, Scalar yx, Scalar yy, Scalar yz, Scalar zx, Scalar zy, Scalar zz)
Raw constructor from nine Scalar components (without any checking)
DisplacementVector3D< CoordSystem, U > operator()(const DisplacementVector3D< CoordSystem, U > &v) const
Rotation operation on a displacement vector in any coordinate system.