57 double u11 = std::sqrt(m11);
60 double u22 = std::sqrt(m22-u21*u21);
61 double u32 = (m23-m12*m13/m11)/u22;
62 double u33 = std::sqrt(m33 - u31*u31 - u32*u32);
68 double v32 = -v33*u32/u22;
69 double v31 = -(v32*u21+v33*u31)/u11;
71 double v21 = -v22*u21/u11;
77 double n11 = v11*v11 + v21*v21 + v31*v31;
78 double n12 = v11*v21 + v21*v22 + v31*v32;
79 double n13 = v11*v31 + v21*v32 + v31*v33;
80 double n22 = v21*v21 + v22*v22 + v32*v32;
81 double n23 = v21*v31 + v22*v32 + v32*v33;
82 double n33 = v31*v31 + v32*v32 + v33*v33;
88 std::copy(
fM, &
fM[9], mA);
104static inline void swap(
double &
a,
double &
b) {
106 double t=
b;
b=
a;
a=t;
137std::ostream & operator<< (std::ostream & os,
const Rotation3D &
r) {
141 r.GetComponents(
m,
m+9);
142 os <<
"\n" <<
m[0] <<
" " <<
m[1] <<
" " <<
m[2];
143 os <<
"\n" <<
m[3] <<
" " <<
m[4] <<
" " <<
m[5];
144 os <<
"\n" <<
m[6] <<
" " <<
m[7] <<
" " <<
m[8] <<
"\n";
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...
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.
void Rectify()
Re-adjust components to eliminate small deviations from perfect orthonormality.
void Invert()
Invert a rotation in place.
AVector operator*(const AVector &v) const
Overload operator * for rotation on a vector.
Rotation3D()
Default constructor (identity rotation)
Rotation class with the (3D) rotation represented by angles describing first a rotation of an angle p...
Namespace for new Math classes and functions.
static void swap(double &a, double &b)
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.