29 double r1 = axis.
mag();
32 "Attempt to rotate around a zero vector axis! "));
35 register double scale=1.0/r1;
36 register double ux = scale*axis.
getX();
37 register double uy = scale*axis.
getY();
38 register double uz = scale*axis.
getZ();
39 double cd = std::cos(ddelta);
40 double sd = std::sin(ddelta);
41 register double ocd = 1 - cd;
46 {
register double ocdux = ocd * ux;
47 rx =
dx * ( cd + ocdux * ux ) +
48 dy * ( ocdux * uy - sd * uz ) +
49 dz * ( ocdux * uz + sd * uy ) ;
52 {
register double ocduy = ocd * uy;
53 ry =
dy * ( cd + ocduy * uy ) +
54 dz * ( ocduy * uz - sd * ux ) +
55 dx * ( ocduy * ux + sd * uz ) ;
58 {
register double ocduz = ocd * uz;
59 rz =
dz * ( cd + ocduz * uz ) +
60 dx * ( ocduz * ux - sd * uy ) +
61 dy * ( ocduz * uy + sd * ux ) ;
85 register double sinPhi = std::sin( phi1 ), cosPhi = std::cos( phi1 );
86 register double sinTheta = std::sin( theta1 ), cosTheta1 = std::cos( theta1 );
87 register double sinPsi = std::sin( psi1 ), cosPsi = std::cos( psi1 );
89 rx = (cosPsi * cosPhi - cosTheta1 * sinPsi * sinPhi) *
dx +
90 (cosPsi * sinPhi + cosTheta1 * sinPsi * cosPhi) *
dy +
91 (sinPsi * sinTheta) *
dz ;
93 ry = (- sinPsi * cosPhi - cosTheta1 * cosPsi * sinPhi) *
dx +
94 (- sinPsi * sinPhi + cosTheta1 * cosPsi * cosPhi) *
dy +
95 (cosPsi * sinTheta) *
dz ;
97 rz = (sinTheta * sinPhi) *
dx +
98 (- sinTheta * cosPhi) *
dy +