35 void Quaternion::Rectify()
43 fU = - fU; fI = - fI; fJ = - fJ; fK = - fK;
46 Scalar a = 1.0 / std::sqrt(fU*fU + fI*fI + fJ*fJ + fK*fK);
72 Quaternion Quaternion::operator * (
const Rotation3D & r)
const {
74 return operator* ( Quaternion(r) );
77 Quaternion Quaternion::operator * (
const AxisAngle & a)
const {
79 return operator* ( Quaternion(a) );
82 Quaternion Quaternion::operator * (
const EulerAngles & e)
const {
84 return operator* ( Quaternion(e) );
87 Quaternion Quaternion::operator * (
const RotationZYX & r)
const {
89 return operator* ( Quaternion(r) );
92 Quaternion::Scalar Quaternion::Distance(
const Quaternion & q)
const {
94 Scalar chordLength = std::fabs(fU*q.fU + fI*q.fI + fJ*q.fJ + fK*q.fK);
95 if (chordLength > 1) chordLength = 1;
96 return acos(chordLength);
101 std::ostream & operator<< (std::ostream & os,
const Quaternion & q) {
104 os <<
"\n{" << q.U() <<
" " << q.I()
105 <<
" " << q.J() <<
" " << q.K() <<
"}\n";