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";
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)
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...