17#ifndef ROOT_Math_GenVector_Rotation3D
18#define ROOT_Math_GenVector_Rotation3D 1
134 template<
class ForeignMatrix>
143 template<
class ForeignVector>
211 template<
class ForeignMatrix>
215 m(1,0),
m(1,1),
m(1,2),
216 m(2,0),
m(2,1),
m(2,2) );
234 template<
class ForeignVector>
250 template<
class ForeignVector>
266 for (
int i = 0; i <9; ++i) {
280 for (
int i = 0; i <9; ++i) {
293 std::copy (
fM,
fM+9, begin );
302 template<
class ForeignMatrix>
315 template<
class ForeignMatrix>
357 return fM[i + 3 *
j];
360 " indices i and j must range in {0,1,2}");
367 template <
class CoordSystem,
class U>
380 template <
class CoordSystem,
class U>
391 template <
class CoordSystem>
405 template <
class ForeignVector>
416 template <
class AVector>
478 if(
fM[0] !=
rhs.fM[0] )
return false;
479 if(
fM[1] !=
rhs.fM[1] )
return false;
480 if(
fM[2] !=
rhs.fM[2] )
return false;
481 if(
fM[3] !=
rhs.fM[3] )
return false;
482 if(
fM[4] !=
rhs.fM[4] )
return false;
483 if(
fM[5] !=
rhs.fM[5] )
return false;
484 if(
fM[6] !=
rhs.fM[6] )
return false;
485 if(
fM[7] !=
rhs.fM[7] )
return false;
486 if(
fM[8] !=
rhs.fM[8] )
return false;
512Rotation3D
operator* (RotationX
const &
r1, Rotation3D
const &
r2);
513Rotation3D
operator* (RotationY
const &
r1, Rotation3D
const &
r2);
514Rotation3D
operator* (RotationZ
const &
r1, Rotation3D
const &
r2);
519Rotation3D
operator* (RotationX
const &
r1, RotationY
const &
r2);
520Rotation3D
operator* (RotationX
const &
r1, RotationZ
const &
r2);
522Rotation3D
operator* (RotationY
const &
r1, RotationX
const &
r2);
523Rotation3D
operator* (RotationY
const &
r1, RotationZ
const &
r2);
525Rotation3D
operator* (RotationZ
const &
r1, RotationX
const &
r2);
526Rotation3D
operator* (RotationZ
const &
r1, RotationY
const &
r2);
533std::ostream &
operator<< (std::ostream & os,
const Rotation3D &
r);
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
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 xy
AxisAngle class describing rotation represented with direction axis (3D Vector) and an angle of rotat...
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.
Rotation3D(AxisAngle const &a)
Construct from an AxisAngle.
constexpr Rotation3D(const ForeignMatrix &m)
Construct from a linear algebra matrix of size at least 3x3, which must support operator()(i,...
Rotation3D(RotationZ const &r)
Construct from an axial rotation.
void SetComponents(IT begin, IT end)
Set the 9 matrix components given an iterator to the start of the desired data, and another to the en...
Rotation3D & operator=(Quaternion const &q)
Assign from a Quaternion.
void GetComponents(IT begin) const
Get the 9 matrix components into data specified by an iterator begin.
Rotation3D(IT begin, IT end)
Construct given a pair of pointers or iterators defining the beginning and end of an array of nine Sc...
Rotation3D(RotationX const &r)
void SetComponents(Scalar xx, Scalar xy, Scalar xz, Scalar yx, Scalar yy, Scalar yz, Scalar zx, Scalar zy, Scalar zz)
Set the components from nine scalars – UNCHECKED for orthonormaility.
void Rectify()
Re-adjust components to eliminate small deviations from perfect orthonormality.
Rotation3D & operator=(AxisAngle const &a)
Assign from an AxisAngle.
void Invert()
Invert a rotation in place.
void SetRotationMatrix(const ForeignMatrix &m)
Set components from a linear algebra matrix of size at least 3x3, which must support operator()(i,...
Scalar operator()(size_t i, size_t j) const
Access operator, used to have direct access to rotation matrix's entries.
Rotation3D & operator=(Rotation3D const &rhs)
Assignment operator.
Rotation3D(RotationY const &r)
void GetComponents(ForeignVector &v1, ForeignVector &v2, ForeignVector &v3) const
Get components into three vectors which will be the (orthonormal) columns of the rotation matrix.
bool operator!=(const Rotation3D &rhs) const
Rotation3D & operator=(RotationZ const &r)
Assign from an axial rotation.
Rotation3D Inverse() const
Return inverse of a rotation.
Rotation3D & operator=(RotationZYX const &r)
Assign from RotationZYX.
Rotation3D(RotationZYX const &e)
Construct from RotationZYX.
AVector operator*(const AVector &v) const
Overload operator * for rotation on a vector.
Rotation3D(Rotation3D const &r)
copy constructor
Rotation3D(Quaternion const &q)
Construct from a Quaternion.
void SetComponents(const ForeignVector &v1, const ForeignVector &v2, const ForeignVector &v3)
Set components from three orthonormal vectors (which must have methods x(), y() and z()) which will b...
Rotation3D(EulerAngles const &e)
Construct from EulerAngles.
void GetComponents(IT begin, IT end) const
Get the 9 matrix components into data specified by an iterator begin and another to the end of the de...
Rotation3D(const ForeignVector &v1, const ForeignVector &v2, const ForeignVector &v3)
Construct from three orthonormal vectors (which must have methods x(), y() and z()) which will be use...
Rotation3D & operator=(RotationY const &r)
Rotation3D()
Default constructor (identity rotation)
void GetRotationMatrix(ForeignMatrix &m) const
Get components into a linear algebra matrix of size at least 3x3, which must support operator()(i,...
void GetComponents(Scalar &xx, Scalar &xy, Scalar &xz, Scalar &yx, Scalar &yy, Scalar &yz, Scalar &zx, Scalar &zy, Scalar &zz) const
Get the nine components into nine scalars.
Rotation3D & operator*=(const R &r)
Post-Multiply (on right) by another rotation : T = T*R.
Rotation3D(Scalar xx, Scalar xy, Scalar xz, Scalar yx, Scalar yy, Scalar yz, Scalar zx, Scalar zy, Scalar zz)
Raw constructor from nine Scalar components (without any checking)
Rotation3D & operator=(EulerAngles const &e)
Assign from EulerAngles.
Rotation3D & operator=(const ForeignMatrix &m)
Assign from an orthonormal linear algebra matrix of size 3x3, which must support operator()(i,...
Rotation3D & operator=(RotationX const &r)
bool operator==(const Rotation3D &rhs) const
Equality/inequality operators.
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.
Namespace for new Math classes and functions.
void Throw(const char *)
function throwing exception, by creating internally a GenVector_exception only when needed
double dist(Rotation3D const &r1, Rotation3D const &r2)
void convert(R1 const &, R2 const)
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.
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...