17#ifndef ROOT_Math_GenVector_EulerAngles
18#define ROOT_Math_GenVector_EulerAngles 1
84 template <
class OtherRotation>
90 template <
class OtherRotation>
158 assert(begin == end);
172 assert(begin == end);
236 template <
class CoordSystem,
class U>
245 template <
class CoordSystem,
class U>
256 template <
class CoordSystem>
270 template <
class ForeignVector>
275 return ForeignVector ( rxyz.
X(), rxyz.
Y(), rxyz.
Z() );
281 template <
class AVector>
333 if(
fPhi != rhs.
fPhi )
return false;
335 if(
fPsi != rhs.
fPsi )
return false;
363EulerAngles
operator* (RotationX
const & r1, EulerAngles
const & r2);
364EulerAngles
operator* (RotationY
const & r1, EulerAngles
const & r2);
365EulerAngles
operator* (RotationZ
const & r1, EulerAngles
const & r2);
372std::ostream & operator<< (std::ostream & os,
const EulerAngles &
e);
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
AxisAngle class describing rotation represented with direction axis (3D Vector) and an angle of rotat...
Class describing a generic displacement vector in 3 dimensions.
Scalar X() const
Cartesian X, converting if necessary from internal coordinate system.
Scalar Y() const
Cartesian Y, converting if necessary from internal coordinate system.
Scalar Z() const
Cartesian Z, converting if necessary from internal coordinate system.
EulerAngles class describing rotation as three angles (Euler Angles).
Scalar Psi() const
Return Psi Euler angle.
bool operator!=(const EulerAngles &rhs) const
Scalar Theta() const
Return Theta Euler angle.
void SetPsi(Scalar psi)
Set Psi Euler angle // JMM 30 Jan.
void SetTheta(Scalar theta)
Set Theta Euler angle // JMM 30 Jan.
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 th...
void GetComponents(Scalar &phi, Scalar &theta, Scalar &psi) const
Get the components phi, theta, psi into three Scalars.
EulerAngles()
Default constructor.
void SetComponents(Scalar phi, Scalar theta, Scalar psi)
Set the components phi, theta, psi based on three Scalars.
void GetComponents(IT begin) const
Get the axis and then the angle into data specified by an iterator begin.
void SetPhi(Scalar phi)
Set Phi Euler angle // JMM 30 Jan.
EulerAngles & operator*=(const R &r)
Post-Multiply (on right) by another rotation : T = T*R.
EulerAngles & operator=(OtherRotation const &r)
Assign from any other rotation (see gv_detail::convert )
AVector operator*(const AVector &v) const
Overload operator * for rotation on a vector.
EulerAngles(const OtherRotation &r)
Create from any other supported rotation (see gv_detail::convert )
void Invert()
Invert a rotation in place.
EulerAngles(IT begin, IT end)
Construct given a pair of pointers or iterators defining the beginning and end of an array of three S...
bool operator==(const EulerAngles &rhs) const
Equality/inequality operators.
EulerAngles Inverse() const
Return inverse of a rotation.
void Rectify()
Re-adjust components place angles in canonical ranges.
EulerAngles(Scalar phi, Scalar theta, Scalar psi)
Constructor from phi, theta and psi.
DisplacementVector3D< CoordSystem, U > operator()(const DisplacementVector3D< CoordSystem, U > &v) const
Rotation operation on a displacement vector in any coordinate system and tag.
Scalar Distance(const R &r) const
Distance between two rotations.
Scalar Phi() const
Return Phi Euler angle.
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...
Class describing a generic LorentzVector in the 4D space-time, using the specified coordinate system ...
Class describing a generic position vector (point) in 3 dimensions.
Rotation class with the (3D) rotation represented by a unit quaternion (u, i, j, k).
Rotation class with the (3D) rotation represented by a 3x3 orthogonal matrix.
Rotation class representing a 3D rotation about the X axis by the angle of rotation.
Rotation class representing a 3D rotation about the Y axis by the angle of rotation.
Rotation class representing a 3D rotation about the Z axis by the angle of rotation.
Namespace for new Math classes and functions.
double dist(Rotation3D const &r1, Rotation3D const &r2)
void convert(R1 const &, R2 const)
AxisAngle operator*(RotationX const &r1, AxisAngle const &r2)
Multiplication of an axial rotation by an AxisAngle.
AxisAngle::Scalar Distance(const AxisAngle &r1, const R &r2)
Distance between two rotations.
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.