void eul2m_c ( SpiceDouble angle3,
SpiceDouble angle2,
SpiceDouble angle1,
SpiceInt axis3,
SpiceInt axis2,
SpiceInt axis1,
SpiceDouble r [3][3] )
Construct a rotation matrix from a set of Euler angles.
ROTATION
MATRIX
ROTATION
TRANSFORMATION
Variable 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.
angle3,
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.
r 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.
None.
1) If any of axis3, axis2, or axis1 do not have values in
{ 1, 2, 3 },
the error SPICE(BADAXISNUMBERS) is signalled.
None.
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.
1) 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;
eul2m_c ( angle3, angle2, angle1,
axis3, axis2, axis1, r );
2) A trivial example using actual numbers.
The call
eul2m_c ( 0., 0., halfpi_c(),
1, 1, 3, r );
sets r equal to the matrix
+- -+
| 0 1 0 |
| |
| -1 0 0 |.
| |
| 0 0 1 |
+- -+
3) Finding the rotation matrix specified by a set of `clock,
cone, and twist' angles, as defined on the Voyager 2 project:
Voyager 2 narrow angle camera pointing, relative to the
Sun-Canopus coordinate system, was frequently specified
by a set of Euler angles called `clock, cone, and twist'.
These defined a 3-2-3 coordinate transformation matrix
TSCTV as the product
[ twist ] [ cone ] [ clock ] .
3 2 3
Given the angles clock, cone, and twist (in units of
radians), we can compute tsctv with the call
eul2m_c ( twist, cone, clock,
3, 2, 3, tsctv );
4) Finding the rotation matrix specified by a set of `right
ascension, declination, and twist' angles, as defined on the
Galileo project:
Galileo scan platform pointing, relative to an inertial
reference frame, (EME50 variety) is frequently specified
by a set of Euler angles called `right ascension (RA),
declination (Dec), and twist'. These define a 3-2-3
coordinate transformation matrix TISP as the product
[ Twist ] [ pi/2 - Dec ] [ RA ] .
3 2 3
Given the angles ra, dec, and twist (in units of radians),
we can compute tisp with the code fragment
eul2m_c ( twist, halfpi_c()-dec, ra,
3, 2, 3, tisp );
Beware: more than one definition of "RA, DEC and twist" exists.
[1] `Galileo Attitude and Camera Models', JPL IOM 314-323,
W. M. Owen, Jr., Nov. 11, 1983. NAIF document number
204.0.
N.J. Bachman (JPL)
-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)
euler angles to matrix
Link to routine eul2m_c source file eul2m_c.c
|