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);
104 static inline void swap(
double &
a,
double & b) {
106 double t=b; b=
a; a=t;
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";
Namespace for new ROOT classes and functions.
Rotation class with the (3D) rotation represented by angles describing first a rotation of an angle p...
Rotation class with the (3D) rotation represented by a unit quaternion (u, i, j, k).
std::ostream & operator<<(std::ostream &os, const AxisAngle &a)
Stream Output and Input.
AxisAngle class describing rotation represented with direction axis (3D Vector) and an angle of rotat...
static void swap(double &a, double &b)
void Rectify()
Re-adjust components to eliminate small deviations from perfect orthonormality.
Rotation class with the (3D) rotation represented by a 3x3 orthogonal matrix.
void GetComponents(ForeignVector &v1, ForeignVector &v2, ForeignVector &v3) const
Get components into three vectors which will be the (orthonormal) columns of the rotation matrix...
EulerAngles class describing rotation as three angles (Euler Angles).
Namespace for new Math classes and functions.
void Invert()
Invert a rotation in place.
Rotation3D()
Default constructor (identity rotation)
AVector operator*(const AVector &v) const
Overload operator * for rotation on a vector.