eul2m_c |

Table of contents## Procedureeul2m_c ( Euler angles to matrix ) void eul2m_c ( SpiceDouble angle3, SpiceDouble angle2, SpiceDouble angle1, SpiceInt axis3, SpiceInt axis2, SpiceInt axis1, SpiceDouble r [3][3] ) ## AbstractConstruct a rotation matrix from a set of Euler angles. ## Required_ReadingROTATION ## KeywordsMATRIX ROTATION TRANSFORMATION ## Brief_I/OVARIABLE I/O DESCRIPTION -------- --- -------------------------------------------------- angle3, angle2, angle1 I Rotation angles about third, second, and first rotation axes (radians). axis3, axis2, axis1 I Axis numbers of third, second, and first rotation axes. r O Product of the 3 rotations. ## Detailed_Inputangle3, angle2, angle1, axis3, axis2, axis1 are, respectively, a set of three angles and three coordinate axis numbers; each pair angleX and axisX specifies a coordinate transformation consisting of a rotation by ANGLEx radians about the coordinate axis indexed by AXISx. These coordinate transformations are typically symbolized by [ angleX ] . axisX See the -Particulars section below for details concerning this notation. Note that these coordinate transformations rotate vectors by -angleX radians about the axis indexed by axisX. The values of axisX may be 1, 2, or 3, indicating the X, Y, and Z axes respectively. ## Detailed_Outputr is a rotation matrix representing the composition of the rotations defined by the input angle-axis pairs. Together, the three pairs specify a composite transformation that is the result of performing the rotations about the axes indexed by `axis1', `axis2', and `axis3', in that order. So, r = [ angle3 ] [ angle2 ] [ angle1 ] axis3 axis2 axis1 See the -Particulars section below for details concerning this notation. The resulting matrix `r' may be thought of as a coordinate transformation; applying it to a vector yields the vector's coordinates in the rotated system. Viewing `r' as a coordinate transformation matrix, the basis that `r' transforms vectors to is created by rotating the original coordinate axes first by `angle1' radians about the coordinate axis indexed by `axis1', next by `angle2' radians about the coordinate axis indexed by `axis2', and finally by `angle3' radians about coordinate axis indexed by `axis3'. At the second and third steps of this process, the coordinate axes about which rotations are performed belong to the bases resulting from the previous rotations. ## ParametersNone. ## Exceptions1) If any of `axis3', `axis2', or `axis1' do not have values in { 1, 2, 3 } the error SPICE(BADAXISNUMBERS) is signaled by a routine in the call tree of this routine. ## FilesNone. ## ParticularsA word about notation: the symbol [ x ] i indicates a rotation of x radians about the ith coordinate axis. To be specific, the symbol [ x ] 1 indicates a coordinate system rotation of x radians about the first, or x-, axis; the corresponding matrix is .- -. | 1 0 0 | | | | 0 cos(x) sin(x) | | | | 0 -sin(x) cos(x) | `- -' Remember, this is a COORDINATE SYSTEM rotation by x radians; this matrix, when applied to a vector, rotates the vector by -x radians, not x radians. Applying the matrix to a vector yields the vector's representation relative to the rotated coordinate system. The analogous rotation about the second, or y-, axis is represented by [ x ] 2 which symbolizes the matrix .- -. | cos(x) 0 -sin(x) | | | | 0 1 0 | | | | sin(x) 0 cos(x) | `- -' and the analogous rotation about the third, or z-, axis is represented by [ x ] 3 which symbolizes the matrix .- -. | cos(x) sin(x) 0 | | | | -sin(x) cos(x) 0 | | | | 0 0 1 | `- -' From time to time, (depending on one's line of work, perhaps) one may happen upon a pair of coordinate systems related by a sequence of rotations. For example, the coordinate system defined by an instrument such as a camera is sometime specified by RA, DEC, and twist; if alpha, delta, and phi are the rotation angles, then the series of rotations [ phi ] [ pi/2 - delta ] [ alpha ] 3 2 3 produces a transformation from inertial to camera coordinates. This routine is related to the CSPICE routine m2eul_c, which produces a sequence of Euler angles, given a rotation matrix. This routine is a "left inverse" of m2eul_c: the sequence of calls m2eul_c ( r, axis3, axis2, axis1, &angle3, &angle2, &angle1 ); ## Examples1) Create a coordinate transformation matrix by rotating the original coordinate axes first by 30 degrees about the z axis, next by 60 degrees about the y axis resulting from the first rotation, and finally by -50 degrees about the z axis resulting from the first two rotations. /. Create the coordinate transformation matrix o o o R = [ -50 ] [ 60 ] [ 30 ] 3 2 3 All angles in radians, please. The CSPICE function rpd_c (radians per degree) gives the conversion factor. The z axis is `axis 3'; the y axis is `axis 2'. ./ angle1 = rpd_c() * 30.; angle2 = rpd_c() * 60.; angle3 = rpd_c() * -50.; axis1 = 3; axis2 = 2; axis3 = 3; ## Restrictions1) Beware: more than one definition of "RA, DEC and twist" exists. ## Literature_References[1] W. Owen, "Galileo Attitude and Camera Models," JPL Interoffice Memorandum 314-323, Nov. 11, 1983. NAIF document number 204.0. ## Author_and_InstitutionN.J. Bachman (JPL) J. Diaz del Rio (ODC Space) ## Version-CSPICE Version 1.0.3, 02-AUG-2021 (JDR) Edited the header to comply with NAIF standard. -CSPICE Version 1.0.2, 26-DEC-2006 (NJB) Fixed header typo. -CSPICE Version 1.0.1, 13-OCT-2004 (NJB) Fixed header typo. -CSPICE Version 1.0.0, 08-FEB-1998 (NJB) Based on SPICELIB Version 1.1.1, 10-MAR-1992 (WLT) ## Index_Entrieseuler angles to matrix |

Fri Dec 31 18:41:06 2021