Index Page
pl2psv_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 pl2psv_c ( ConstSpicePlane  * plane,
                   SpiceDouble        point[3],
                   SpiceDouble        span1[3],
                   SpiceDouble        span2[3]  ) 

Abstract

 
   Return a point and two orthogonal spanning vectors that generate 
   a specified plane. 
 

Required_Reading

 
   PLANES 
 

Keywords

 
   GEOMETRY 
   MATH 
   PLANE 
 

Brief_I/O

 
   Variable  I/O  Description 
   --------  ---  -------------------------------------------------- 
   plane      I   A CSPICE plane. 
   point, 
   span1, 
   span2      O   A point in the input plane and two vectors 
                  spanning the input plane. 
 

Detailed_Input

 
   plane          is a CSPICE plane that represents the geometric 
                  plane defined by point, span1, and span2. 
 

Detailed_Output

 
   point, 
   span1, 
   span2          are, respectively, a point and two orthogonal 
                  spanning vectors that generate the geometric plane 
                  represented by plane.  The geometric plane is the 
                  set of vectors 
 
                     point   +   s * span1   +   t * span2 
 
                  where s and t are real numbers.  point is the 
                  closest point in the plane to the origin; this 
                  point is always a multiple of the plane's normal 
                  vector.  span1 and span2 are an orthonormal pair 
                  of vectors.  point, span1, and span2 are mutually 
                  orthogonal. 
 

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)  Find the intersection of a plane and the unit sphere.  This 
       is a geometry problem that arises in computing the 
       intersection of a plane and a triaxial ellipsoid.  The 
       CSPICE routine inedpl_c computes this intersection, but this 
       example does illustrate how to use this routine. 
 
          /. 
          The geometric plane of interest will be represented 
          by the CSPICE plane plane in this example. 
      
          The intersection circle will be represented by the 
          vectors center, v1, and v2; the circle is the set 
          of points 
      
             center  +  cos(theta) v1  +  sin(theta) v2, 
      
          where theta is in the interval (-pi, pi]. 
      
          The logical variable found indicates whether the 
          intersection is non-empty. 
            
          The center of the intersection circle will be the 
          closest point in the plane to the origin.  This 
          point is returned by pl2psv_c.  The distance of the 
          center from the origin is the norm of center. 
          ./
          
          pl2psv_c  ( &plane, center, span1, span2 ); 

          dist = vnorm_c ( center ) 
 
            
          /.
          The radius of the intersection circle will be 
            
                  ____________ 
              _  /          2 
               \/  1 - dist 
      
          since the radius of the circle, the distance of the 
          plane from the origin, and the radius of the sphere 
          (1) are the lengths of the sides of a right triangle. 
          
          ./
          
          found = ( dist <= 1.0 );
          
          if ( found )
          {
             radius = sqrt ( 1.0 - pow(dist,2) );
  
             vscl_c ( radius, span1, v1 );
             vscl_c ( radius, span2, v2 ) ;
          }



   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.0, 05-MAR-1999 (NJB)

Index_Entries

 
   plane to point and spanning vectors 
 

Link to routine pl2psv_c source file pl2psv_c.c

Wed Apr  5 17:54:40 2017