QTCOMPOSE Name
QTCOMPOSE
Author
Craig B. Markwardt, NASA/GSFC Code 662, Greenbelt, MD 20770
craigm@lheamail.gsfc.nasa.gov
UPDATED VERSIONs can be found on my WEB PAGE:
http://cow.physics.wisc.edu/~craigm/idl/idl.html
Purpose
Convert a rotation angle and axis into quaternion
Major Topics
Geometry
Calling Sequence
Q = QTCOMPOSE(VAXIS, PHI) Description
The function QTCOMPOSE accepts a unit vector rotation axis VAXIS
and a rotation angle PHI, and returns the corresponding quaternion.
The user must take care to pass the same number of axes as rotation
angles.
Use QTAXIS and QTANG to extract the properties of an existing
quaternion. Use QTCOMPOSE to combine a rotation axis and angle
into a new quaternion.
Conventions for storing quaternions vary in the literature and from
library to library. This library uses the convention that the
first three components of each quaternion are the 3-vector axis of
rotation, and the 4th component is the rotation angle. Expressed
in formulae, a single quaternion is given by:
Q(0:2) = [VX, VY, VZ]*SIN(PHI/2)
Q(3) = COS(PHI/2)
where PHI is the rotation angle, and VAXIS = [VX, VY, VZ] is the
rotation eigen axis expressed as a unit vector. This library
accepts quaternions of both signs, but by preference returns
quaternions with a positive 4th component.
Inputs
VAXIS - array of one or more unit vectors specifying the rotation
axes. For a single rotation, VAXIS should be a 3-vector.
For N vectors, VAXIS should be a 3xN array.
PHI - one or more rotation angles, in radians. For a single
rotation, PHI should be a scalar. For N rotations, PHI
should be an N-vector.
Returns
For a single rotation, returns a quaternion as a 4-vector. For N
rotations, returns a 4xN vector of quaternions.
Keyword Parameters
NONE
Example
IDL> print, qtcompose([0d,1,0], !dpi/4)
0.0000000 0.38268343 0.0000000 0.92387953
Prints the quaternion composed of a rotation of !dpi/4 radians
around the axis [0,1,0] See Also
QTANG, QTAXIS, QTCOMPOSE, QTERP, QTEXP, QTFIND, QTINV, QTLOG,
QTMAT, QTMULT, QTPOW, QTVROT
Modification History
Written, July 2001, CM
Documented, Dec 2001, CM
Allow output to be DOUBLE, 27 Jan 2002, CM
Allow vector vs scalar arguments, 28 Jan 2002, CM
Usage message, error checking, 15 Mar 2002, CM