pl2psv_c |
Table of contents
Procedurepl2psv_c ( Plane to point and spanning vectors ) void pl2psv_c ( ConstSpicePlane * plane, SpiceDouble point[3], SpiceDouble span1[3], SpiceDouble span2[3] ) AbstractReturn a point and two orthogonal spanning vectors that generate a specified plane. Required_ReadingPLANES KeywordsGEOMETRY MATH PLANE Brief_I/OVARIABLE I/O DESCRIPTION -------- --- -------------------------------------------------- plane I A SPICE plane. point, span1, span2 O A point in the input plane and two vectors spanning the input plane. Detailed_Inputplane is a SPICE plane. Detailed_Outputpoint, 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. ParametersNone. ExceptionsError 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. FilesNone. ParticularsCSPICE geometry routines that deal with planes use the `plane' data type to represent input and output planes. This data type makes the routine interfaces simpler and more uniform. The CSPICE routines that produce SPICE 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 SPICE 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 ) Examples1) Project a vector `v' orthogonally onto a plane defined by `point', `span1', and `span2'. `proj' is the projection we want; it is the closest vector in the plane to `v'. psv2pl_c ( point, span1, span2, &plane ); vprjp_c ( &v, &plane, &proj ); 2) 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 SPICE 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 ) ; } 3) 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 SPICE 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 SPICE 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 ); RestrictionsNone. Literature_References[1] G. Thomas and R. Finney, "Calculus and Analytic Geometry," 7th Edition, Addison Wesley, 1988. Author_and_InstitutionN.J. Bachman (JPL) J. Diaz del Rio (ODC Space) Version-CSPICE Version 1.0.1, 24-AUG-2021 (JDR) Edited the header to comply with NAIF standard. Added example #1. -CSPICE Version 1.0.0, 05-MAR-1999 (NJB) Index_Entriesplane to point and spanning vectors |
Fri Dec 31 18:41:10 2021