18#ifndef ROOT_Math_GenVector_RotationZYX
19#define ROOT_Math_GenVector_RotationZYX 1
105 template <
class OtherRotation>
112 template <
class OtherRotation>
131 assert(begin == end);
145 assert(begin == end);
209 template <
class CoordSystem,
class U>
218 template <
class CoordSystem,
class U>
229 template <
class CoordSystem>
243 template <
class ForeignVector>
248 return ForeignVector ( rxyz.
X(), rxyz.
Y(), rxyz.
Z() );
254 template <
class AVector>
306 if(
fPhi != rhs.
fPhi )
return false;
308 if(
fPsi != rhs.
fPsi )
return false;
336RotationZYX
operator* (RotationX
const & r1, RotationZYX
const & r2);
337RotationZYX
operator* (RotationY
const & r1, RotationZYX
const & r2);
338RotationZYX
operator* (RotationZ
const & r1, RotationZYX
const & r2);
345std::ostream & operator<< (std::ostream & os,
const RotationZYX &
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).
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 with the (3D) rotation represented by angles describing first a rotation of an angle p...
Scalar Phi() const
Return Phi angle (Z rotation angle)
RotationZYX & operator*=(const R &r)
Post-Multiply (on right) by another rotation : T = T*R.
void GetComponents(Scalar &phi, Scalar &theta, Scalar &psi) const
Get the components phi, theta, psi into three Scalars.
Scalar Distance(const R &r) const
Distance between two rotations.
RotationZYX(IT begin, IT end)
Construct given a pair of pointers or iterators defining the beginning and end of an array of three S...
Scalar Psi() const
Return Psi angle (X'' rotation angle)
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...
RotationZYX & operator=(OtherRotation const &r)
Assign from another supported rotation type (see gv_detail::convert )
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...
RotationZYX()
Default constructor.
constexpr RotationZYX(const OtherRotation &r)
Construct from another supported rotation type (see gv_detail::convert )
Scalar Theta() const
Return Theta angle (Y' rotation angle)
bool operator!=(const RotationZYX &rhs) const
RotationZYX(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.
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 angle (Z rotation angle)
void SetPsi(Scalar psi)
Set Psi angle (X'' rotation angle)
bool operator==(const RotationZYX &rhs) const
Equality/inequality operators.
void Rectify()
Re-adjust components place angles in canonical ranges.
void SetTheta(Scalar theta)
Set Theta angle (Y' rotation angle)
AVector operator*(const AVector &v) const
Overload operator * for rotation on a vector.
void Invert()
Invert a rotation in place.
void SetComponents(Scalar phi, Scalar theta, Scalar psi)
Set the components phi, theta, psi based on three Scalars.
RotationZYX Inverse() const
Return inverse of a 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.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...