14 Rotation3D Rotation3D::operator * (
const RotationX & rx)
const {
16 Scalar s = rx.SinAngle();
17 Scalar c = rx.CosAngle();
20 fM[kXX], fM[kXY]*c + fM[kXZ]*s, fM[kXZ]*c - fM[kXY]*s
21 , fM[kYX], fM[kYY]*c + fM[kYZ]*s, fM[kYZ]*c - fM[kYY]*s
22 , fM[kZX], fM[kZY]*c + fM[kZZ]*s, fM[kZZ]*c - fM[kZY]*s
26 Rotation3D Rotation3D::operator * (
const RotationY & ry)
const {
28 Scalar s = ry.SinAngle();
29 Scalar c = ry.CosAngle();
32 fM[kXX]*c - fM[kXZ]*s, fM[kXY], fM[kXX]*s + fM[kXZ]*c
33 , fM[kYX]*c - fM[kYZ]*s, fM[kYY], fM[kYX]*s + fM[kYZ]*c
34 , fM[kZX]*c - fM[kZZ]*s, fM[kZY], fM[kZX]*s + fM[kZZ]*c
39 Rotation3D Rotation3D::operator * (
const RotationZ & rz)
const {
41 Scalar s = rz.SinAngle();
42 Scalar c = rz.CosAngle();
45 fM[kXX]*c + fM[kXY]*s, fM[kXY]*c - fM[kXX]*s, fM[kXZ]
46 , fM[kYX]*c + fM[kYY]*s, fM[kYY]*c - fM[kYX]*s, fM[kYZ]
47 , fM[kZX]*c + fM[kZY]*s, fM[kZY]*c - fM[kZX]*s, fM[kZZ]
51 Rotation3D operator* (RotationX
const & r1, Rotation3D
const & r2) {
54 return Rotation3D(r1)*r2;
57 Rotation3D operator* (RotationY
const & r1, Rotation3D
const & r2) {
60 return Rotation3D(r1)*r2;
63 Rotation3D operator* (RotationZ
const & r1, Rotation3D
const & r2) {
66 return Rotation3D(r1)*r2;
69 typedef Rotation3D::Scalar Scalar;
72 Rotation3D operator* (RotationX
const & rx, RotationY
const & ry) {
73 Scalar sx = rx.SinAngle();
74 Scalar cx = rx.CosAngle();
75 Scalar sy = ry.SinAngle();
76 Scalar cy = ry.CosAngle();
80 -sy*cx , sx , cx*cy );
84 Rotation3D operator* (RotationX
const & rx, RotationZ
const & rz) {
85 Scalar sx = rx.SinAngle();
86 Scalar cx = rx.CosAngle();
87 Scalar sz = rz.SinAngle();
88 Scalar cz = rz.CosAngle();
96 Rotation3D operator* (RotationY
const & ry, RotationX
const & rx) {
97 Scalar sx = rx.SinAngle();
98 Scalar cx = rx.CosAngle();
99 Scalar sy = ry.SinAngle();
100 Scalar cy = ry.CosAngle();
102 ( cy , sx*sy , sy*cx ,
104 -sy , cy*sx , cx*cy );
108 Rotation3D operator* (RotationY
const & ry, RotationZ
const & rz) {
109 Scalar sy = ry.SinAngle();
110 Scalar cy = ry.CosAngle();
111 Scalar sz = rz.SinAngle();
112 Scalar cz = rz.CosAngle();
114 ( cy*cz ,-cy*sz , sy ,
116 -cz*sy , sy*sz , cy );
120 Rotation3D operator* (RotationZ
const & rz, RotationX
const & rx) {
121 Scalar sx = rx.SinAngle();
122 Scalar cx = rx.CosAngle();
123 Scalar sz = rz.SinAngle();
124 Scalar cz = rz.CosAngle();
126 ( cz ,-cx*sz , sx*sz ,
132 Rotation3D operator* (RotationZ
const & rz, RotationY
const & ry) {
133 Scalar sy = ry.SinAngle();
134 Scalar cy = ry.CosAngle();
135 Scalar sz = rz.SinAngle();
136 Scalar cz = rz.CosAngle();
138 ( cy*cz , -sz , cz*sy ,