Rotation class with the (3D) rotation represented by angles describing first a rotation of an angle phi (yaw) about the Z axis, followed by a rotation of an angle theta (pitch) about the Y axis, followed by a third rotation of an angle psi (roll) about the X axis.
Note that the rotations are extrinsic rotations happening around a fixed coordinate system. This is different than the convention of the ROOT::Math::EulerAngles class, where the rotation are intrinsic. Also it has not to be confused with the typical Goldstein definition of the Euler Angles (Z-X-Z or 313 sequence) which is used by the ROOT::Math::EulerAngles class, while the sequence here is Z-Y-X or 321. Applying a RotationZYX(phi, theta, psi) to a vector is then equal to applying RotationX(psi) * RotationY(theta) * RotationZ(phi) to the same vector.
Definition at line 61 of file RotationZYX.h.
Public Types | |
typedef double | Scalar |
Public Member Functions | |
RotationZYX () | |
Default constructor. | |
template<class OtherRotation > | |
RotationZYX (const OtherRotation &r) | |
Construct from another supported rotation type (see gv_detail::convert ) | |
template<class IT > | |
RotationZYX (IT begin, IT end) | |
Construct given a pair of pointers or iterators defining the beginning and end of an array of three Scalars, to be treated as the angles phi, theta and psi. | |
RotationZYX (Scalar phi, Scalar theta, Scalar psi) | |
Constructor from phi, theta and psi. | |
template<class R > | |
Scalar | Distance (const R &r) const |
Distance between two rotations. | |
template<class IT > | |
void | GetComponents (IT begin) const |
Get the axis and then the angle into data specified by an iterator begin. | |
template<class IT > | |
void | GetComponents (IT begin, IT end) const |
Get the axis and then the angle into data specified by an iterator begin and another to the end of the desired data (4 past start). | |
void | GetComponents (Scalar &phi, Scalar &theta, Scalar &psi) const |
Get the components phi, theta, psi into three Scalars. | |
RotationZYX | Inverse () const |
Return inverse of a rotation. | |
void | Invert () |
Invert a rotation in place. | |
bool | operator!= (const RotationZYX &rhs) const |
template<class CoordSystem , class U > | |
DisplacementVector3D< CoordSystem, U > | operator() (const DisplacementVector3D< CoordSystem, U > &v) const |
Rotation operation on a displacement vector in any coordinate system and tag. | |
template<class ForeignVector > | |
ForeignVector | operator() (const ForeignVector &v) const |
Rotation operation on an arbitrary vector v. | |
template<class CoordSystem > | |
LorentzVector< CoordSystem > | operator() (const LorentzVector< CoordSystem > &v) const |
Rotation operation on a Lorentz vector in any 4D coordinate system. | |
template<class CoordSystem , class U > | |
PositionVector3D< CoordSystem, U > | operator() (const PositionVector3D< CoordSystem, U > &v) const |
Rotation operation on a position vector in any coordinate system. | |
template<class AVector > | |
AVector | operator* (const AVector &v) const |
Overload operator * for rotation on a vector. | |
RotationZYX | operator* (const AxisAngle &a) const |
RotationZYX | operator* (const EulerAngles &q) const |
RotationZYX | operator* (const Quaternion &q) const |
RotationZYX | operator* (const Rotation3D &r) const |
RotationZYX | operator* (const RotationX &rx) const |
RotationZYX | operator* (const RotationY &ry) const |
RotationZYX | operator* (const RotationZ &rz) const |
RotationZYX | operator* (const RotationZYX &e) const |
Multiply (combine) two rotations. | |
template<class R > | |
RotationZYX & | operator*= (const R &r) |
Post-Multiply (on right) by another rotation : T = T*R. | |
template<class OtherRotation > | |
RotationZYX & | operator= (OtherRotation const &r) |
Assign from another supported rotation type (see gv_detail::convert ) | |
bool | operator== (const RotationZYX &rhs) const |
Equality/inequality operators. | |
Scalar | Phi () const |
Return Phi angle (Z rotation angle) | |
Scalar | Psi () const |
Return Psi angle (X'' rotation angle) | |
void | Rectify () |
Re-adjust components place angles in canonical ranges. | |
template<class IT > | |
void | SetComponents (IT begin, IT end) |
Set the three Euler angles given a pair of pointers or iterators defining the beginning and end of an array of three Scalars. | |
void | SetComponents (Scalar phi, Scalar theta, Scalar psi) |
Set the components phi, theta, psi based on three Scalars. | |
void | SetPhi (Scalar phi) |
Set Phi angle (Z rotation angle) | |
void | SetPsi (Scalar psi) |
Set Psi angle (X'' rotation angle) | |
void | SetTheta (Scalar theta) |
Set Theta angle (Y' rotation angle) | |
Scalar | Theta () const |
Return Theta angle (Y' rotation angle) | |
Static Private Member Functions | |
static double | Pi () |
Private Attributes | |
double | fPhi |
double | fPsi |
double | fTheta |
#include <Math/GenVector/RotationZYX.h>
Definition at line 65 of file RotationZYX.h.
|
inline |
Default constructor.
Definition at line 73 of file RotationZYX.h.
Constructor from phi, theta and psi.
Definition at line 78 of file RotationZYX.h.
|
inline |
Construct given a pair of pointers or iterators defining the beginning and end of an array of three Scalars, to be treated as the angles phi, theta and psi.
Definition at line 88 of file RotationZYX.h.
|
inlineexplicit |
Construct from another supported rotation type (see gv_detail::convert )
Definition at line 104 of file RotationZYX.h.
Distance between two rotations.
Definition at line 298 of file RotationZYX.h.
|
inline |
Get the axis and then the angle into data specified by an iterator begin.
Definition at line 150 of file RotationZYX.h.
|
inline |
Get the axis and then the angle into data specified by an iterator begin and another to the end of the desired data (4 past start).
Definition at line 138 of file RotationZYX.h.
|
inline |
Get the components phi, theta, psi into three Scalars.
Definition at line 167 of file RotationZYX.h.
|
inline |
Return inverse of a rotation.
Definition at line 267 of file RotationZYX.h.
void ROOT::Math::RotationZYX::Invert | ( | ) |
Invert a rotation in place.
Definition at line 138 of file RotationZYX.cxx.
|
inline |
Definition at line 309 of file RotationZYX.h.
|
inline |
Rotation operation on a displacement vector in any coordinate system and tag.
Definition at line 209 of file RotationZYX.h.
|
inline |
Rotation operation on an arbitrary vector v.
Preconditions: v must implement methods x(), y(), and z() and the arbitrary vector type must have a constructor taking (x,y,z)
Definition at line 243 of file RotationZYX.h.
|
inline |
Rotation operation on a Lorentz vector in any 4D coordinate system.
Definition at line 229 of file RotationZYX.h.
|
inline |
Rotation operation on a position vector in any coordinate system.
Definition at line 218 of file RotationZYX.h.
|
inline |
Overload operator * for rotation on a vector.
Definition at line 254 of file RotationZYX.h.
RotationZYX ROOT::Math::RotationZYX::operator* | ( | const AxisAngle & | a | ) | const |
Definition at line 54 of file RotationZYX.cxx.
RotationZYX ROOT::Math::RotationZYX::operator* | ( | const EulerAngles & | q | ) | const |
Definition at line 59 of file RotationZYX.cxx.
RotationZYX ROOT::Math::RotationZYX::operator* | ( | const Quaternion & | q | ) | const |
Definition at line 69 of file RotationZYX.cxx.
RotationZYX ROOT::Math::RotationZYX::operator* | ( | const Rotation3D & | r | ) | const |
Definition at line 49 of file RotationZYX.cxx.
RotationZYX ROOT::Math::RotationZYX::operator* | ( | const RotationX & | rx | ) | const |
Definition at line 74 of file RotationZYX.cxx.
RotationZYX ROOT::Math::RotationZYX::operator* | ( | const RotationY & | ry | ) | const |
Definition at line 79 of file RotationZYX.cxx.
RotationZYX ROOT::Math::RotationZYX::operator* | ( | const RotationZ & | rz | ) | const |
Definition at line 84 of file RotationZYX.cxx.
RotationZYX ROOT::Math::RotationZYX::operator* | ( | const RotationZYX & | e | ) | const |
Multiply (combine) two rotations.
Definition at line 64 of file RotationZYX.cxx.
|
inline |
Post-Multiply (on right) by another rotation : T = T*R.
Definition at line 292 of file RotationZYX.h.
|
inline |
Assign from another supported rotation type (see gv_detail::convert )
Definition at line 111 of file RotationZYX.h.
|
inline |
Equality/inequality operators.
Definition at line 303 of file RotationZYX.h.
|
inline |
Return Phi angle (Z rotation angle)
Definition at line 179 of file RotationZYX.h.
|
inlinestaticprivate |
Definition at line 319 of file RotationZYX.h.
|
inline |
Return Psi angle (X'' rotation angle)
Definition at line 199 of file RotationZYX.h.
void ROOT::Math::RotationZYX::Rectify | ( | ) |
Re-adjust components place angles in canonical ranges.
Definition at line 108 of file RotationZYX.cxx.
|
inline |
Set the three Euler angles given a pair of pointers or iterators defining the beginning and end of an array of three Scalars.
Definition at line 124 of file RotationZYX.h.
Set the components phi, theta, psi based on three Scalars.
Definition at line 159 of file RotationZYX.h.
Set Phi angle (Z rotation angle)
Definition at line 174 of file RotationZYX.h.
Set Psi angle (X'' rotation angle)
Definition at line 194 of file RotationZYX.h.
Set Theta angle (Y' rotation angle)
Definition at line 184 of file RotationZYX.h.
|
inline |
Return Theta angle (Y' rotation angle)
Definition at line 189 of file RotationZYX.h.
|
private |
Definition at line 315 of file RotationZYX.h.
|
private |
Definition at line 317 of file RotationZYX.h.
|
private |
Definition at line 316 of file RotationZYX.h.