Index of Functions: A B C D E F G H I J K L M N O P Q R S T U V W X
Index Page twovec_c

Table of contents

Procedure Abstract Required_Reading Keywords Brief_I/O Detailed_Input | Detailed_Output Parameters Exceptions Files Particulars Examples | Restrictions Literature_References Author_and_Institution Version Index_Entries

#### Procedure

       twovec_c ( Two vectors defining an orthonormal frame )

       void twovec_c ( ConstSpiceDouble    axdef  [3],
                       SpiceInt            indexa,
                       ConstSpiceDouble    plndef [3],
                       SpiceInt            indexp,
                       SpiceDouble         mout   [3][3] )

#### Abstract

       Find the transformation to the right-handed frame having a
       given vector as a specified axis and having a second given
       vector lying in a specified coordinate plane.

#### Required_Reading

       None.

#### Keywords

       AXES
       FRAME
       ROTATION
       TRANSFORMATION

#### Brief_I/O

       VARIABLE  I/O  DESCRIPTION
       --------  ---  --------------------------------------------------
       axdef      I   Vector defining a principal axis.
       indexa     I   Principal axis number of `axdef' (x=1, y=2, z=3).
       plndef     I   Vector defining (with `axdef') a principal plane.
       indexp     I   Second axis number (with `indexa') of principal
                      plane.
       mout       O   Output rotation matrix.

#### Detailed_Input

       axdef       is a vector defining one of the principal axes of a
                   coordinate frame.

       indexa      is a number that determines which of the three
                   coordinate axes contains `axdef'.

                   If `indexa' is 1 then `axdef' defines the X axis of the
                   coordinate frame.

                   If `indexa' is 2 then `axdef' defines the Y axis of the
                   coordinate frame.

                   If `indexa' is 3 then `axdef' defines the Z axis of the
                   coordinate frame.

       plndef      is a vector defining (with `axdef') a principal plane of
                   the coordinate frame. `axdef' and `plndef' must be
                   linearly independent.

       indexp      is the second axis of the principal frame determined by
                   `axdef' and `plndef'.  `indexa', `indexp' must be different
                   and be integers from 1 to 3.

                   If `indexp' is 1, the second axis of the principal
                   plane is the X-axis.

                   If `indexp' is 2, the second axis of the principal
                   plane is the Y-axis.

                   If `indexp' is 3, the second axis of the principal plane
                   is the Z-axis.

#### Detailed_Output

       mout        is a rotation matrix that transforms coordinates given
                   in the input frame to the frame determined by `axdef',
                   `plndef', `indexa' and `indexp'.

#### Parameters

       None.

#### Exceptions

       1)  If `indexa' or `indexp' is not in the set {1,2,3}, the error
           SPICE(BADINDEX) is signaled by a routine in the call tree of
           this routine.

       2)  If `indexa' and `indexp' are the same, the error
           SPICE(UNDEFINEDFRAME) is signaled by a routine in the call
           tree of this routine.

       3)  If the cross product of the vectors `axdef' and `plndef' is zero,
           the error SPICE(DEPENDENTVECTORS) is signaled by a routine in
           the call tree of this routine.

#### Files

       None.

#### Particulars

       Given two linearly independent vectors there is a unique
       right-handed coordinate frame having:

          `axdef' lying along the `indexa' axis.

          `plndef' lying in the indexa-indexp coordinate plane.

       This routine determines the transformation matrix that transforms
       from coordinates used to represent the input vectors to the
       the system determined by `axdef' and `plndef'. Thus a vector
       (x,y,z) in the input coordinate system will have coordinates

                       t
          mout* (x,y,z)

       in the frame determined by `axdef' and `plndef'.

#### Examples

       The rotation matrix ticc from inertial to Sun-Canopus
       (celestial) coordinates is found by the call

          twovec_c ( Sun_vector, 3, Canopus_vector, 1, ticc );

#### Restrictions

       None.

#### Literature_References

       None.

#### Author_and_Institution

       N.J. Bachman        (JPL)
       J. Diaz del Rio     (ODC Space)
       W.M. Owen           (JPL)
       W.L. Taber          (JPL)

#### Version

       -CSPICE Version 1.0.1, 13-AUG-2021 (JDR)

           Edited the header to comply with NAIF standard.

       -CSPICE Version 1.0.0, 22-OCT-1998 (NJB)

           Made input matrices const.

       -CSPICE Version 1.0.0, 02-MAR-1998 (WLT) (WMO)

#### Index_Entries

       define an orthonormal frame from two vectors

#### Link to routine twovec_c source file twovec_c.c

    Fri Dec 31 18:41:14 2021