12 #pragma implementation
15 #include "CLHEP/Vector/defs.h"
16 #include "CLHEP/Vector/Rotation.h"
17 #include "CLHEP/Units/PhysicalConstants.h"
30 register double sinDelta = std::sin(ddelta), cosDelta = std::cos(ddelta);
31 register double oneMinusCosDelta = 1.0 - cosDelta;
35 register double uX = u.
getX();
36 register double uY = u.
getY();
37 register double uZ = u.
getZ();
39 rxx = oneMinusCosDelta * uX * uX + cosDelta;
40 rxy = oneMinusCosDelta * uX * uY - sinDelta * uZ;
41 rxz = oneMinusCosDelta * uX * uZ + sinDelta * uY;
43 ryx = oneMinusCosDelta * uY * uX + sinDelta * uZ;
44 ryy = oneMinusCosDelta * uY * uY + cosDelta;
45 ryz = oneMinusCosDelta * uY * uZ - sinDelta * uX;
47 rzx = oneMinusCosDelta * uZ * uX - sinDelta * uY;
48 rzy = oneMinusCosDelta * uZ * uY + sinDelta * uX;
49 rzz = oneMinusCosDelta * uZ * uZ + cosDelta;
71 double cosdelta = (
rxx +
ryy +
rzz - 1.0) / 2.0;
74 }
else if (cosdelta < -1.0) {
77 return std::acos( cosdelta );
91 if ( (Uz==0) && (Uy==0) && (Ux==0) ) {
HepAxisAngle axisAngle() const
HepRotation & set(const Hep3Vector &axis, double delta)
void setDelta(double delta)
void setAxis(const Hep3Vector &axis)