14 #include "CLHEP/Vector/defs.h"
15 #include "CLHEP/Vector/AxisAngle.h"
21 static void ZMpvAxisAngleRep(
const HepAxisAngle & aa,
double array[] ) {
23 register double sinDelta = std::sin( aa.delta() );
24 register double cosDelta = std::cos( aa.delta() );
25 register double oneMinusCosDelta = 1.0 - cosDelta;
27 register double uX = aa.getAxis().getX();
28 register double uY = aa.getAxis().getY();
29 register double uZ = aa.getAxis().getZ();
31 array[0] = oneMinusCosDelta * uX * uX + cosDelta;
32 array[1] = oneMinusCosDelta * uX * uY - sinDelta * uZ;
33 array[2] = oneMinusCosDelta * uX * uZ + sinDelta * uY;
35 array[3] = oneMinusCosDelta * uY * uX + sinDelta * uZ;
36 array[4] = oneMinusCosDelta * uY * uY + cosDelta;
37 array[5] = oneMinusCosDelta * uY * uZ - sinDelta * uX;
39 array[6] = oneMinusCosDelta * uZ * uX - sinDelta * uY;
40 array[7] = oneMinusCosDelta * uZ * uY + sinDelta * uX;
41 array[8] = oneMinusCosDelta * uZ * uZ + cosDelta;
51 ZMpvAxisAngleRep( *
this, thisRep );
52 ZMpvAxisAngleRep( aa, aaRep );
55 for (
int i = 0;
i < 9;
i++ ) {
56 sum += thisRep[
i] * aaRep[
i];
60 return (d >= 0) ? d : 0;
67 return distance( aa ) <= epsilon * epsilon;
87 os <<
'(' << aa.
axis() <<
", " << aa.
delta() <<
')';
93 double &
x,
double & y,
double & z,