Previous: mateu Up: ../plot79_m.html Next: matgt
SUBROUTINE MATEUI (E1,E2,E3, T) C$ (Euler Rotation - Inverse) C$ Given a rotation matrix, find the Euler angles which will C$ reconstruct it. Euler angles have several definitions in C$ the literature, and the one used here is taken from the C$ well-known book by Herbert Goldstein, "Classical C$ Mechanics", Addison-Wesley (1950). C$ C$ The input argument is: C$ T(4,4).........Matrix in which rotation is stored. The C$ transformed coordinates are given by C$ (x',y',z',h') = (x,y,z,h)T. If T C$ corresponds to a true rotation matrix, then C$ it will satisfy det(T) = +1, and C$ T(transpose) = T(inverse), so T(transpose)*T C$ = unit matrix. C$ C$ The output arguments are: C$ E1,E2,E3.......Euler angles (degrees) of rotation. These C$ are usually called (phi, theta, psi) or C$ (alpha, beta, gamma) by most authors. The C$ angles E1 and E2 are identical to the C$ spherical polar coordinate angles phi and C$ theta. The angles returned are in 0 .. 360. C$ It should be noted, however, that the C$ returned angles are not unique. C$ C$ If there is doubt about the accuracy of the rotation C$ matrix, then MATEU can be used to compute a new T from the C$ returned angles, and this matrix can be compared with the C$ one presented to this routine. C$ C$ Note also from the following description of the rotations C$ that if E2 = 0, the total rotation is E1+E3 about Z. In C$ such a case, E1 and E3 are arbitrary, so we set E3 = 0. C$ C$ The rotations are made in three steps to get from (x,y,z) C$ coordinates to (x',y',z') coordinates in the rotated C$ system. The coordinate systems are RIGHT-HANDED, and C$ POSITIVE rotations about an axis are COUNTERCLOCKWISE when C$ viewed down the POSITIVE part of the axis toward the C$ origin. C$ C$ In the first step, a rotation in the X-Y plane by E1 is C$ made about the Z axis, transforming the (x,y,z) system into C$ (x1,y1,z). C$ C$ In the second step, a rotation in the Y1-Z plane by E2 is C$ made about the X1 axis, transforming (x1,y1,z) into C$ (x1,y2,z1). C$ C$ In the third and final step, a rotation in the X1-Y2 plane C$ by E3 is made about the Z1 axis, transforming (x1,y2,z1) C$ into (x3,y3,z1) = (x',y',z'). C$ C$ Since rotation matrices are orthogonal (i.e. T(transpose) = C$ T(inverse)), the inverse relation is given by C$ C$ (x,y,z,h) = (x',y',z',h')T(transpose) C$ C$ Some examples are: C$ C$ E1 E2 E3 ( x' y' z' h') C$ ============= ================ C$ 0 0 0 ( x y z h) C$ 90 0 0 (-y x z h) C$ 0 90 0 ( x -z y h) C$ 0 0 90 (-y x z h) (same as 90 0 0) C$ -90 0 0 ( y -x z h) C$ 0 -90 0 ( x z -y h) C$ 0 0 -90 ( y -x z h) (same as -90 0 0) C$ ============= ================ C$ C$ (14-MAR-85)