13 #pragma implementation
16 #include "CLHEP/Vector/Rotation.h"
23 void HepRotation::decompose(HepAxisAngle & rotation, Hep3Vector & boost)
const {
25 rotation = axisAngle();
28 void HepRotation::decompose(Hep3Vector & boost, HepAxisAngle & rotation)
const {
30 rotation = axisAngle();
33 double HepRotation::distance2(
const HepRotation & r )
const {
34 double sum = rxx * r.rxx + rxy * r.rxy + rxz * r.rxz
35 + ryx * r.ryx + ryy * r.ryy + ryz * r.ryz
36 + rzx * r.rzx + rzy * r.rzy + rzz * r.rzz;
37 double answer = 3.0 - sum;
38 return (answer >= 0 ) ? answer : 0;
41 double HepRotation::howNear(
const HepRotation & r )
const {
42 return std::sqrt( distance2( r ) );
45 bool HepRotation::isNear(
const HepRotation & r,
46 double epsilon)
const {
47 return distance2( r ) <= epsilon*epsilon;
50 double HepRotation::norm2()
const {
51 double answer = 3.0 - rxx - ryy - rzz;
52 return (answer >= 0 ) ? answer : 0;