Index Page pl2nvc_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 pl2nvc_c ( ConstSpicePlane   * plane,
                       SpiceDouble         normal[3],
                       SpiceDouble       * constant  )
#### Abstract
       Return a unit normal vector and constant that define a specified
       plane.
#### Required_Reading
       PLANES
#### Keywords
       GEOMETRY
       MATH
       PLANE
#### Brief_I/O
       Variable  I/O  Description
       --------  ---  --------------------------------------------------
       plane      I   A CSPICE plane.
       normal,
       constant   O   A normal vector and constant defining the
                      geometric plane represented by plane.
#### Detailed_Input
       plane          is a CSPICE plane.
#### Detailed_Output
       normal,
       constant       are, respectively, a unit normal vector and
                      constant that define the geometric plane
                      represented by plane.  Let the symbol < a, b >
                      indicate the inner product of vectors a and b;
                      then the geometric plane is the set of vectors x
                      in three-dimensional space that satisfy

                         < x,  normal >  =  constant.

                      normal is a unit vector.  constant is the distance of
                      the plane from the origin;

                         constant * normal

                      is the closest point in the plane to the origin.
#### Parameters
       None.
#### Exceptions
       Error free.

       1)  The input plane MUST have been created by one of the CSPICE
           routines

              nvc2pl_c ( Normal vector and constant to plane )
              nvp2pl_c ( Normal vector and point to plane    )
              psv2pl_c ( Point and spanning vectors to plane )

           Otherwise, the results of this routine are unpredictable.
#### Files
       None.
#### Particulars
       CSPICE geometry routines that deal with planes use the `plane'
       data type to represent input and output planes.  This data type
       makes the subroutine interfaces simpler and more uniform.

       The CSPICE routines that produce CSPICE planes from data that
       define a plane are:

          nvc2pl_c ( Normal vector and constant to plane )
          nvp2pl_c ( Normal vector and point to plane    )
          psv2pl_c ( Point and spanning vectors to plane )

       The CSPICE routines that convert CSPICE planes to data that
       define a plane are:

          pl2nvc_c ( Plane to normal vector and constant )
          pl2nvp_c ( Plane to normal vector and point    )
          pl2psv_c ( Plane to point and spanning vectors )
#### Examples
       1)  Given a point in a plane and a normal vector, find the distance
           of the plane from the origin.  We make a `plane' from the point
           and normal, then convert the plane to a unit normal and constant.
           The constant is the distance of the plane from the origin.

              nvp2pl_c ( normal, point,  &plane    );
              pl2nvc_c ( &plane, normal, &constant );

       2)  Apply a linear transformation represented by the matrix m to
           a plane represented by the normal vector n and the constant c.
           Find a normal vector and constant for the transformed plane.

              /.
              Make a CSPICE plane from n and c, and then find a
              point in the plane and spanning vectors for the
              plane.  n need not be a unit vector.
              ./
              nvc2pl_c ( n,       c,     &plane         );
              pl2psv_c ( &plane,  point,  span1,  span2 );

              /.
              Apply the linear transformation to the point and
              spanning vectors.  All we need to do is multiply
              these vectors by m, since for any linear
              transformation T,

                    T ( point  +  t1 * span1     +  t2 * span2 )

                 =  T (point)  +  t1 * T(span1)  +  t2 * T(span2),

              which means that T(point), T(span1), and T(span2)
              are a point and spanning vectors for the transformed
              plane.
              ./

              mxv_c ( m, point, tpoint );
              mxv_c ( m, span1, tspan1 );
              mxv_c ( m, span2, tspan2 );

              /.
              Make a new CSPICE plane tplane from the
              transformed point and spanning vectors, and find a
              unit normal and constant for this new plane.
              ./

              psv2pl_c ( tpoint,   tspan1,  tspan2,   &tplane );
              pl2nvc_c ( &tplane,  tn,      &tc               );
#### Restrictions
       None.
#### Literature_References
       [1] `Calculus and Analytic Geometry', Thomas and Finney.
#### Author_and_Institution
       N.J. Bachman   (JPL)
#### Version
       -CSPICE Version 1.0.1, 06-FEB-2003 (EDW)

           Trivial correction to header docs.

       -CSPICE Version 1.0.0, 05-MAR-1999 (NJB)
#### Index_Entries
       plane to normal vector and constant
#### Link to routine pl2nvc_c source file pl2nvc_c.c

    Wed Jun  9 13:05:27 2010