67 double u21 = m12 / u11;
68 double u31 = m13 / u11;
70 double u32 = (m23 - m12 * m13 / m11) / u22;
71 double u33 =
math_sqrt(m33 - u31 * u31 - u32 * u32);
76 double v32 = -v33 * u32 / u22;
77 double v31 = -(v32 * u21 + v33 * u31) / u11;
79 double v21 = -v22 * u21 / u11;
84 double n11 = v11 * v11 + v21 * v21 + v31 * v31;
85 double n12 = v11 * v21 + v21 * v22 + v31 * v32;
86 double n13 = v11 * v31 + v21 * v32 + v31 * v33;
87 double n22 = v21 * v21 + v22 * v22 + v32 * v32;
88 double n23 = v21 * v31 + v22 * v32 + v32 * v33;
89 double n33 = v31 * v31 + v32 * v32 + v33 * v33;
94 for (
size_t i = 0; i < 9; i++) {
110static inline void swap(
double &
a,
double &
b)
150#if !defined(ROOT_MATH_SYCL) && !defined(ROOT_MATH_CUDA)
157 r.GetComponents(
m,
m + 9);
158 os <<
"\n" <<
m[0] <<
" " <<
m[1] <<
" " <<
m[2];
159 os <<
"\n" <<
m[3] <<
" " <<
m[4] <<
" " <<
m[5];
160 os <<
"\n" <<
m[6] <<
" " <<
m[7] <<
" " <<
m[8] <<
"\n";
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 Invert()
Invert a rotation in place.
void Rectify()
Re-adjust components to eliminate small deviations from perfect orthonormality.
Rotation3D()
Default constructor (identity rotation).
AVector operator*(const AVector &v) const
Overload operator * for rotation on a vector.
Rotation class with the (3D) rotation represented by angles describing first a rotation of an angle p...
static void swap(double &a, double &b)
Scalar math_sqrt(Scalar x)
std::ostream & operator<<(std::ostream &os, const AxisAngle &a)
Stream Output and Input.