ROOT
6.07/01
Reference Guide
|
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 new Y' axis, followed by a third rotation of an angle psi (roll) about the final X'' axis.
This is sometimes referred to as the Euler 321 sequence. 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.
Definition at line 71 of file RotationZYX.h.
Public Types | |
typedef double | Scalar |
Public Member Functions | |
RotationZYX () | |
Default constructor. More... | |
RotationZYX (Scalar phi, Scalar theta, Scalar psi) | |
Constructor from phi, theta and psi. More... | |
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. More... | |
void | Rectify () |
Re-adjust components place angles in canonical ranges. More... | |
template<class OtherRotation > | |
RotationZYX (const OtherRotation &r) | |
Construct from another supported rotation type (see gv_detail::convert ) More... | |
template<class OtherRotation > | |
RotationZYX & | operator= (OtherRotation const &r) |
Assign from another supported rotation type (see gv_detail::convert ) More... | |
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. More... | |
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). More... | |
template<class IT > | |
void | GetComponents (IT begin) const |
Get the axis and then the angle into data specified by an iterator begin. More... | |
void | SetComponents (Scalar phi, Scalar theta, Scalar psi) |
Set the components phi, theta, psi based on three Scalars. More... | |
void | GetComponents (Scalar &phi, Scalar &theta, Scalar &psi) const |
Get the components phi, theta, psi into three Scalars. More... | |
void | SetPhi (Scalar phi) |
Set Phi angle (Z rotation angle) More... | |
Scalar | Phi () const |
Return Phi angle (Z rotation angle) More... | |
void | SetTheta (Scalar theta) |
Set Theta angle (Y' rotation angle) More... | |
Scalar | Theta () const |
Return Theta angle (Y' rotation angle) More... | |
void | SetPsi (Scalar psi) |
Set Psi angle (X'' rotation angle) More... | |
Scalar | Psi () const |
Return Psi angle (X'' rotation angle) More... | |
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. More... | |
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. More... | |
template<class CoordSystem > | |
LorentzVector< CoordSystem > | operator() (const LorentzVector< CoordSystem > &v) const |
Rotation operation on a Lorentz vector in any 4D coordinate system. More... | |
template<class ForeignVector > | |
ForeignVector | operator() (const ForeignVector &v) const |
Rotation operation on an arbitrary vector v. More... | |
template<class AVector > | |
AVector | operator* (const AVector &v) const |
Overload operator * for rotation on a vector. More... | |
void | Invert () |
Invert a rotation in place. More... | |
RotationZYX | Inverse () const |
Return inverse of a rotation. More... | |
RotationZYX | operator* (const RotationZYX &e) const |
Multiply (combine) two rotations. More... | |
RotationZYX | operator* (const Rotation3D &r) const |
RotationZYX | operator* (const AxisAngle &a) const |
RotationZYX | operator* (const Quaternion &q) const |
RotationZYX | operator* (const EulerAngles &q) const |
RotationZYX | operator* (const RotationX &rx) const |
RotationZYX | operator* (const RotationY &ry) const |
RotationZYX | operator* (const RotationZ &rz) const |
template<class R > | |
RotationZYX & | operator*= (const R &r) |
Post-Multiply (on right) by another rotation : T = T*R. More... | |
template<class R > | |
Scalar | Distance (const R &r) const |
Distance between two rotations. More... | |
bool | operator== (const RotationZYX &rhs) const |
Equality/inequality operators. More... | |
bool | operator!= (const RotationZYX &rhs) const |
Static Private Member Functions | |
static double | Pi () |
Private Attributes | |
double | fPhi |
double | fTheta |
double | fPsi |
#include <Math/GenVector/RotationZYX.h>
Definition at line 75 of file RotationZYX.h.
|
inline |
Constructor from phi, theta and psi.
Definition at line 88 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 98 of file RotationZYX.h.
|
inlineexplicit |
Construct from another supported rotation type (see gv_detail::convert )
Definition at line 114 of file RotationZYX.h.
Distance between two rotations.
Definition at line 314 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 152 of file RotationZYX.h.
Referenced by ROOT::Math::gv_detail::convert().
|
inline |
Get the axis and then the angle into data specified by an iterator begin.
Definition at line 166 of file RotationZYX.h.
|
inline |
Get the components phi, theta, psi into three Scalars.
Definition at line 183 of file RotationZYX.h.
|
inline |
Return inverse of a rotation.
Definition at line 283 of file RotationZYX.h.
void ROOT::Math::RotationZYX::Invert | ( | ) |
Invert a rotation in place.
Definition at line 139 of file RotationZYX.cxx.
Referenced by Inverse().
|
inline |
Definition at line 325 of file RotationZYX.h.
|
inline |
Rotation operation on a displacement vector in any coordinate system and tag.
Definition at line 225 of file RotationZYX.h.
Referenced by operator()(), and operator*().
|
inline |
Rotation operation on a position vector in any coordinate system.
Definition at line 234 of file RotationZYX.h.
|
inline |
Rotation operation on a Lorentz vector in any 4D coordinate system.
Definition at line 245 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 259 of file RotationZYX.h.
|
inline |
Overload operator * for rotation on a vector.
Definition at line 270 of file RotationZYX.h.
RotationZYX ROOT::Math::RotationZYX::operator* | ( | const RotationZYX & | e | ) | const |
Multiply (combine) two rotations.
Definition at line 65 of file RotationZYX.cxx.
RotationZYX ROOT::Math::RotationZYX::operator* | ( | const Rotation3D & | r | ) | const |
Definition at line 50 of file RotationZYX.cxx.
RotationZYX ROOT::Math::RotationZYX::operator* | ( | const AxisAngle & | a | ) | const |
Definition at line 55 of file RotationZYX.cxx.
RotationZYX ROOT::Math::RotationZYX::operator* | ( | const Quaternion & | q | ) | const |
Definition at line 70 of file RotationZYX.cxx.
RotationZYX ROOT::Math::RotationZYX::operator* | ( | const EulerAngles & | q | ) | const |
Definition at line 60 of file RotationZYX.cxx.
RotationZYX ROOT::Math::RotationZYX::operator* | ( | const RotationX & | rx | ) | const |
Definition at line 75 of file RotationZYX.cxx.
RotationZYX ROOT::Math::RotationZYX::operator* | ( | const RotationY & | ry | ) | const |
Definition at line 80 of file RotationZYX.cxx.
RotationZYX ROOT::Math::RotationZYX::operator* | ( | const RotationZ & | rz | ) | const |
Definition at line 85 of file RotationZYX.cxx.
|
inline |
Post-Multiply (on right) by another rotation : T = T*R.
Definition at line 308 of file RotationZYX.h.
|
inline |
Assign from another supported rotation type (see gv_detail::convert )
Definition at line 121 of file RotationZYX.h.
|
inline |
Equality/inequality operators.
Definition at line 319 of file RotationZYX.h.
Referenced by operator!=().
|
inline |
Return Phi angle (Z rotation angle)
Definition at line 195 of file RotationZYX.h.
Referenced by ROOT::Math::operator<<(), and testTransform3D().
|
inlinestaticprivate |
Definition at line 335 of file RotationZYX.h.
Referenced by operator*(), and Rectify().
|
inline |
Return Psi angle (X'' rotation angle)
Definition at line 215 of file RotationZYX.h.
Referenced by ROOT::Math::operator<<(), and testTransform3D().
void ROOT::Math::RotationZYX::Rectify | ( | ) |
Re-adjust components place angles in canonical ranges.
Definition at line 109 of file RotationZYX.cxx.
Referenced by RotationZYX(), SetComponents(), SetPhi(), SetPsi(), and SetTheta().
|
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 135 of file RotationZYX.h.
Referenced by ROOT::Math::gv_detail::convert(), and RotationZYX().
Set the components phi, theta, psi based on three Scalars.
Definition at line 175 of file RotationZYX.h.
Set Phi angle (Z rotation angle)
Definition at line 190 of file RotationZYX.h.
Set Psi angle (X'' rotation angle)
Definition at line 210 of file RotationZYX.h.
Set Theta angle (Y' rotation angle)
Definition at line 200 of file RotationZYX.h.
|
inline |
Return Theta angle (Y' rotation angle)
Definition at line 205 of file RotationZYX.h.
Referenced by ROOT::Math::operator<<(), and testTransform3D().
|
private |
Definition at line 331 of file RotationZYX.h.
Referenced by GetComponents(), operator*(), operator==(), Phi(), Rectify(), SetComponents(), and SetPhi().
|
private |
Definition at line 333 of file RotationZYX.h.
Referenced by GetComponents(), operator*(), operator==(), Psi(), Rectify(), SetComponents(), and SetPsi().
|
private |
Definition at line 332 of file RotationZYX.h.
Referenced by GetComponents(), operator*(), operator==(), Rectify(), SetComponents(), SetTheta(), and Theta().