16#ifndef ROOT_MathX_GenVectorX_Quaternion
17#define ROOT_MathX_GenVectorX_Quaternion 1
79 template <
class OtherRotation>
101 template <
class OtherRotation>
205 template <
class CoordSystem,
class Tag>
218 template <
class CoordSystem,
class Tag>
229 template <
class CoordSystem>
243 template <
class ForeignVector>
254 template <
class AVector>
303 return *
this = (*this) *
r;
361#if !defined(ROOT_MATH_SYCL) && !defined(ROOT_MATH_CUDA)
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
winID h TVirtualViewer3D TVirtualGLPainter p
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...
DefaultCoordinateSystemTag Default tag for identifying any coordinate system.
EulerAngles class describing rotation as three angles (Euler Angles).
Rotation class with the (3D) rotation represented by a unit quaternion (u, i, j, k).
LorentzVector< CoordSystem > operator()(const LorentzVector< CoordSystem > &v) const
Rotation operation on a Lorentz vector in any 4D coordinate system.
void Invert()
Invert a rotation in place.
Quaternion Inverse() const
Return inverse of a rotation.
Scalar U() const
Access to the four quaternion components: U() is the coefficient of the identity Pauli matrix,...
bool operator==(const Quaternion &rhs) const
Equality/inequality operators.
AVector operator*(const AVector &v) const
Overload operator * for rotation on a vector.
void SetComponents(Scalar u, Scalar i, Scalar j, Scalar k)
Set the components based on four Scalars.
PositionVector3D< CoordSystem, Tag > operator()(const PositionVector3D< CoordSystem, Tag > &p) const
Rotation operation on a position vector in any coordinate system.
Quaternion & operator*=(const R &r)
Post-Multiply (on right) by another rotation : T = T*R.
Quaternion(Scalar u, Scalar i, Scalar j, Scalar k)
Construct from four Scalars representing the coefficients of u, i, j, k.
void Rectify()
Re-adjust components to eliminate small deviations from |Q| = 1 orthonormality.
bool operator!=(const Quaternion &rhs) const
Quaternion(IT begin, IT end)
Construct given a pair of pointers or iterators defining the beginning and end of an array of four Sc...
Quaternion(const OtherRotation &r)
Construct from another supported rotation type (see gv_detail::convert )
DisplacementVector3D< CoordSystem, Tag > operator()(const DisplacementVector3D< CoordSystem, Tag > &v) const
Rotation operation on a displacement vector in any coordinate system.
Quaternion()
Default constructor (identity rotation)
void GetComponents(IT begin, IT end) const
Get the components into data specified by an iterator begin and another to the end of the desired dat...
ForeignVector operator()(const ForeignVector &v) const
Rotation operation on an arbitrary vector v.
Scalar Distance(const Quaternion &q) const
Distance between two rotations in Quaternion form Note: The rotation group is isomorphic to a 3-spher...
void GetComponents(IT begin) const
Get the components into data specified by an iterator begin.
void SetComponents(IT begin, IT end)
Set the four components given an iterator to the start of the desired data, and another to the end (4...
XYZVector operator()(const XYZVector &v) const
void GetComponents(Scalar &u, Scalar &i, Scalar &j, Scalar &k) const
Get the components into four Scalars.
Quaternion & operator=(OtherRotation const &r)
Assign from another supported rotation type (see gv_detail::convert )
Quaternion operator*(const Quaternion &q) const
Multiply (combine) two rotations.
DisplacementVector3D< Cartesian3D< double >, DefaultCoordinateSystemTag > XYZVector
Rotation operation on a cartesian vector.
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...
Rotation class representing a 3D rotation about the Z axis by the angle of rotation.
double dist(Rotation3D const &r1, Rotation3D const &r2)
void convert(R1 const &, R2 const)
AxisAngle::Scalar Distance(const AxisAngle &r1, const R &r2)
Distance between two rotations.
std::ostream & operator<<(std::ostream &os, const AxisAngle &a)
Stream Output and Input.
AxisAngle operator*(RotationX const &r1, AxisAngle const &r2)
Multiplication of an axial rotation by an AxisAngle.