AxisAngle class describing rotation represented with direction axis (3D Vector) and an angle of rotation around that axis.
Definition at line 41 of file AxisAngle.h.
Public Types | |
typedef DisplacementVector3D< Cartesian3D< Scalar > > | AxisVector |
definition of vector axis More... | |
typedef double | Scalar |
typedef DisplacementVector3D< Cartesian3D< double >, DefaultCoordinateSystemTag > | XYZVector |
Rotation operation on a cartesian vector. More... | |
Public Member Functions | |
AxisAngle () | |
Default constructor (axis is z and angle is zero) More... | |
template<class AnyVector > | |
AxisAngle (const AnyVector &v, Scalar angle) | |
Construct from a non-zero vector (x,y,z) and an angle. More... | |
template<class OtherRotation > | |
AxisAngle (const OtherRotation &r) | |
Construct from another supported rotation type (see gv_detail::convert ) More... | |
template<class IT > | |
AxisAngle (IT begin, IT end) | |
Construct given a pair of pointers or iterators defining the beginning and end of an array of four Scalars, to be treated as the x, y, and z components of a unit axis vector, and the angle of rotation. More... | |
Scalar | Angle () const |
access to rotation angle More... | |
AxisVector | Axis () const |
accesss to rotation axis More... | |
template<class R > | |
Scalar | Distance (const R &r) const |
Distance between two rotations. More... | |
template<class AnyVector > | |
void | GetComponents (AnyVector &axis, Scalar &angle) const |
Set components into a non-zero vector (x,y,z) and an angle. More... | |
template<class IT > | |
void | GetComponents (IT begin) const |
Get the axis and then the angle into data specified by an iterator begin. More... | |
template<class IT > | |
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 the desired data (4 past start). More... | |
AxisAngle | Inverse () const |
Return inverse of an AxisAngle rotation. More... | |
void | Invert () |
Invert an AxisAngle rotation in place. More... | |
bool | operator!= (const AxisAngle &rhs) const |
template<class CoordSystem , class Tag > | |
DisplacementVector3D< CoordSystem, Tag > | operator() (const DisplacementVector3D< CoordSystem, Tag > &v) const |
Rotation operation on a displacement vector in any coordinate system. More... | |
template<class ForeignVector > | |
ForeignVector | operator() (const ForeignVector &v) const |
Rotation operation on an arbitrary vector v. More... | |
template<class CoordSystem > | |
LorentzVector< CoordSystem > | operator() (const LorentzVector< CoordSystem > &v) const |
Rotation operation on a Lorentz vector in any 4D coordinate system. More... | |
template<class CoordSystem , class Tag > | |
PositionVector3D< CoordSystem, Tag > | operator() (const PositionVector3D< CoordSystem, Tag > &p) const |
Rotation operation on a position vector in any coordinate system. More... | |
XYZVector | operator() (const XYZVector &v) const |
template<class AVector > | |
AVector | operator* (const AVector &v) const |
Overload operator * for rotation on a vector. More... | |
AxisAngle | operator* (const AxisAngle &a) const |
AxisAngle | operator* (const EulerAngles &e) const |
AxisAngle | operator* (const Quaternion &q) const |
AxisAngle | operator* (const Rotation3D &r) const |
Multiply (combine) two rotations. More... | |
AxisAngle | operator* (const RotationX &rx) const |
AxisAngle | operator* (const RotationY &ry) const |
AxisAngle | operator* (const RotationZ &rz) const |
AxisAngle | operator* (const RotationZYX &r) const |
template<class R > | |
AxisAngle & | operator*= (const R &r) |
Post-Multiply (on right) by another rotation : T = T*R. More... | |
template<class OtherRotation > | |
AxisAngle & | operator= (OtherRotation const &r) |
Assign from another supported rotation type (see gv_detail::convert ) More... | |
bool | operator== (const AxisAngle &rhs) const |
Equality/inequality operators. More... | |
void | Rectify () |
Re-adjust components to eliminate small deviations from the axis being a unit vector and angles out of the canonical range (-pi,pi]. More... | |
template<class AnyVector > | |
void | SetComponents (const AnyVector &v, Scalar angle) |
Set components from a non-zero vector (x,y,z) and an angle. More... | |
template<class IT > | |
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 of an array of four Scalars. More... | |
Private Member Functions | |
void | RectifyAngle () |
Static Private Member Functions | |
static double | Pi () |
Private Attributes | |
Scalar | fAngle |
AxisVector | fAxis |
#include <Math/GenVector/AxisAngle.h>
definition of vector axis
Definition at line 50 of file AxisAngle.h.
typedef double ROOT::Math::AxisAngle::Scalar |
Definition at line 45 of file AxisAngle.h.
typedef DisplacementVector3D<Cartesian3D<double>, DefaultCoordinateSystemTag > ROOT::Math::AxisAngle::XYZVector |
Rotation operation on a cartesian vector.
Definition at line 189 of file AxisAngle.h.
|
inline |
Default constructor (axis is z and angle is zero)
Definition at line 56 of file AxisAngle.h.
|
inline |
Construct from a non-zero vector (x,y,z) and an angle.
Precondition: the Vector needs to implement x(), y(), z(), and unit()
Definition at line 63 of file AxisAngle.h.
|
inline |
Construct given a pair of pointers or iterators defining the beginning and end of an array of four Scalars, to be treated as the x, y, and z components of a unit axis vector, and the angle of rotation.
Precondition: The first three components are assumed to represent the rotation axis vector and the 4-th the rotation angle. The angle is assumed to be in the range (-pi,pi]. The axis vector is automatically normalized to be a unit vector
Definition at line 77 of file AxisAngle.h.
|
inlineexplicit |
Construct from another supported rotation type (see gv_detail::convert )
Definition at line 93 of file AxisAngle.h.
|
inline |
access to rotation angle
Definition at line 182 of file AxisAngle.h.
|
inline |
accesss to rotation axis
Definition at line 177 of file AxisAngle.h.
Distance between two rotations.
Definition at line 287 of file AxisAngle.h.
|
inline |
Set components into a non-zero vector (x,y,z) and an angle.
The vector is intended to be a cartesian dispalcement vector but any vector class assignable from one will work.
Definition at line 169 of file AxisAngle.h.
|
inline |
Get the axis and then the angle into data specified by an iterator begin.
Definition at line 144 of file AxisAngle.h.
|
inline |
Get the axis and then the angle into data specified by an iterator begin and another to the end of the desired data (4 past start).
Definition at line 132 of file AxisAngle.h.
|
inline |
Return inverse of an AxisAngle rotation.
Definition at line 260 of file AxisAngle.h.
|
inline |
Invert an AxisAngle rotation in place.
Definition at line 255 of file AxisAngle.h.
|
inline |
Definition at line 297 of file AxisAngle.h.
|
inline |
Rotation operation on a displacement vector in any coordinate system.
Definition at line 197 of file AxisAngle.h.
|
inline |
Rotation operation on an arbitrary vector v.
Preconditions: v must implement methods x(), y(), and z() and the arbitrary vector type must have a constructor taking (x,y,z)
Definition at line 236 of file AxisAngle.h.
|
inline |
Rotation operation on a Lorentz vector in any 4D coordinate system.
Definition at line 221 of file AxisAngle.h.
|
inline |
Rotation operation on a position vector in any coordinate system.
Definition at line 210 of file AxisAngle.h.
|
inline |
Overload operator * for rotation on a vector.
Definition at line 247 of file AxisAngle.h.
Definition at line 41 of file AxisAngleXother.cxx.
AxisAngle ROOT::Math::AxisAngle::operator* | ( | const EulerAngles & | e | ) | const |
Definition at line 46 of file AxisAngleXother.cxx.
AxisAngle ROOT::Math::AxisAngle::operator* | ( | const Quaternion & | q | ) | const |
Definition at line 56 of file AxisAngleXother.cxx.
AxisAngle ROOT::Math::AxisAngle::operator* | ( | const Rotation3D & | r | ) | const |
Multiply (combine) two rotations.
Definition at line 35 of file AxisAngleXother.cxx.
Definition at line 89 of file AxisAngleXother.cxx.
Definition at line 120 of file AxisAngleXother.cxx.
Definition at line 151 of file AxisAngleXother.cxx.
AxisAngle ROOT::Math::AxisAngle::operator* | ( | const RotationZYX & | r | ) | const |
Definition at line 51 of file AxisAngleXother.cxx.
Post-Multiply (on right) by another rotation : T = T*R.
Definition at line 280 of file AxisAngle.h.
|
inline |
Assign from another supported rotation type (see gv_detail::convert )
Definition at line 100 of file AxisAngle.h.
|
inline |
Equality/inequality operators.
Definition at line 292 of file AxisAngle.h.
|
inlinestaticprivate |
Definition at line 308 of file AxisAngle.h.
void ROOT::Math::AxisAngle::Rectify | ( | ) |
Re-adjust components to eliminate small deviations from the axis being a unit vector and angles out of the canonical range (-pi,pi].
Definition at line 47 of file AxisAngle.cxx.
|
private |
Definition at line 31 of file AxisAngle.cxx.
|
inline |
Set components from a non-zero vector (x,y,z) and an angle.
Precondition: the Vector needs to implement x(), y(), z(), and unit()
Definition at line 158 of file AxisAngle.h.
|
inline |
Set the axis and then the angle given a pair of pointers or iterators defining the beginning and end of an array of four Scalars.
Precondition: The first three components are assumed to represent the rotation axis vector and the 4-th the rotation angle. The angle is assumed to be in the range (-pi,pi]. The axis vector is automatically normalized to be a unit vector
Definition at line 116 of file AxisAngle.h.
|
private |
Definition at line 304 of file AxisAngle.h.
|
private |
Definition at line 303 of file AxisAngle.h.