17#ifndef ROOT_MathX_GenVectorX_AxisAngle
18#define ROOT_MathX_GenVectorX_AxisAngle 1
65 template <
class AnyVector>
99 template <
class OtherRotation>
108 template <
class OtherRotation>
175 template <
class AnyVector>
187 template <
class AnyVector>
215 template <
class CoordSystem,
class Tag>
228 template <
class CoordSystem,
class Tag>
239 template <
class CoordSystem>
253 template <
class ForeignVector>
264 template <
class AVector>
305 return *
this = (*this) *
r;
336 static double Pi() {
return 3.14159265358979323; }
362#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
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 Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
Option_t Option_t TPoint TPoint angle
AxisAngle class describing rotation represented with direction axis (3D Vector) and an angle of rotat...
LorentzVector< CoordSystem > operator()(const LorentzVector< CoordSystem > &v) const
Rotation operation on a Lorentz vector in any 4D coordinate system.
Scalar Distance(const R &r) const
Distance between two rotations.
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...
DisplacementVector3D< CoordSystem, Tag > operator()(const DisplacementVector3D< CoordSystem, Tag > &v) const
Rotation operation on a displacement vector in any coordinate system.
AVector operator*(const AVector &v) const
Overload operator * for rotation on a vector.
PositionVector3D< CoordSystem, Tag > operator()(const PositionVector3D< CoordSystem, Tag > &p) const
Rotation operation on a position vector in any coordinate system.
DisplacementVector3D< Cartesian3D< Scalar > > AxisVector
definition of vector axis
AxisAngle()
Default constructor (axis is z and angle is zero)
void SetComponents(IT begin, IT end)
Set the axis and then the angle given a pair of pointers or iterators defining the beginning and end ...
void SetComponents(const AnyVector &v, Scalar angle)
Set components from a non-zero vector (x,y,z) and an angle.
ForeignVector operator()(const ForeignVector &v) const
Rotation operation on an arbitrary vector v.
void Invert()
Invert an AxisAngle rotation in place.
XYZVector operator()(const XYZVector &v) const
AxisAngle & operator=(OtherRotation const &r)
Assign from another supported rotation type (see gv_detail::convert )
AxisVector Axis() const
access to rotation axis
void GetComponents(IT begin) const
Get the axis and then the angle into data specified by an iterator begin.
AxisAngle & operator*=(const R &r)
Post-Multiply (on right) by another rotation : T = T*R.
Scalar Angle() const
access to rotation angle
bool operator==(const AxisAngle &rhs) const
Equality/inequality operators.
AxisAngle(const AnyVector &v, Scalar angle)
Construct from a non-zero vector (x,y,z) and an angle.
void GetComponents(AnyVector &axis, Scalar &angle) const
Set components into a non-zero vector (x,y,z) and an angle.
AxisAngle(IT begin, IT end)
Construct given a pair of pointers or iterators defining the beginning and end of an array of four Sc...
void Rectify()
Re-adjust components to eliminate small deviations from the axis being a unit vector and angles out o...
DisplacementVector3D< Cartesian3D< double >, DefaultCoordinateSystemTag > XYZVector
Rotation operation on a cartesian vector.
AxisAngle(const OtherRotation &r)
Construct from another supported rotation type (see gv_detail::convert )
AxisAngle Inverse() const
Return inverse of an AxisAngle rotation.
bool operator!=(const AxisAngle &rhs) const
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).
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.