Index Page frame_c
A B C D E F G H I J K L M N O P Q R S T U V W X
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
       void frame_c ( SpiceDouble x[3],
                      SpiceDouble y[3],
                      SpiceDouble z[3] )
#### Abstract
        Given a vector x, this routine builds a right handed
        orthonormal frame x,y,z where the output x is parallel to
        the input x.
#### Required_Reading
       None.
#### Keywords
        AXES,  FRAME
#### Brief_I/O
        VARIABLE  I/O  DESCRIPTION
        --------  ---  ------------------------------------------------
        x         I/O  Input vector. A parallel unit vector on output.
        y          O   Unit vector in the plane orthogonal to x.
        z          O   Unit vector given by x X y.
#### Detailed_Input
        x      This vector is used to form the first vector of a
               right-handed orthonormal triple.
#### Detailed_Output
        x,
        y,
        z      form a right handed orthonormal frame, where x is
               now a unit vector parallel to the original input
               vector x.  There are no special geometric properties
               connected to y and z (other than that they complete the
               right handed frame).
#### Parameters
        None.
#### Exceptions
       Error Free.

       1) If x on input is the zero vector the ``standard'' frame (ijk)
          is returned.
#### Files
        None.
#### Particulars
        Given an input vector x, this routine returns unit vectors x,
        y, and z such that xyz forms a right-handed orthonormal frame
        where the output x is parallel to the input x.

        This routine is intended primarily to provide a basis for
        the plane orthogonal to x.  There are no special properties
        associated with y and z other than that the resulting xyz frame
        is right handed and orthonormal.  There are an infinite
        collection of pairs (y,z) that could be used to this end.
        Even though for a given x, y and z are uniquely determined, users
        should regard the pair (y,z) as a random selection from this
        infinite collection.

        For instance, when attempting to determine the locus of points
        that make up the limb of a triaxial body, it is a straightforward
        matter to determine the normal to the limb plane.  To find
        the actual parametric equation of the limb one needs to have
        a basis of the plane.  This routine can be used to get a basis
        in which one can describe the curve and from which one can
        then determine the principal axes of the limb ellipse.
#### Examples
        In addition to using a vector to construct a right handed frame
        with the x-axis aligned with the input vector, one can construct
        right handed frames with any of the axes aligned with the input
        vector.

        For example suppose we want a right hand frame xyz with the
        z-axis aligned with some vector v.  Assign v to z

              z[0] = v[0];
              z[1] = v[1];
              z[2] = v[2];

        Then call frame_c with the arguments x,y,z cycled so that z
        appears first.

              frame_c (z, x, y);

        The resulting xyz frame will be orthonormal with z parallel
        to the vector v.

        To get an xyz frame with y parallel to v perform the following

              y[0] = v[0];
              y[1] = v[1];
              y[2] = v[2];

              frame_c (y, z, x);
#### Restrictions
        None.
#### Literature_References
        None.
#### Author_and_Institution
        W.L. Taber      (JPL)
        I.M. Underwood  (JPL)
#### Version
       -CSPICE Version 1.0.0, 26-MAR-1999 (NJB)
#### Index_Entries
       build a right handed coordinate frame
#### Link to routine frame_c source file frame_c.c

    Wed Jun  9 13:05:23 2010