Table of contents
CSPICE_PLTEXP expands a triangular plate by a specified amount.
The expanded plate is co-planar with, and has the same orientation as,
the original. The centroids of the two plates coincide.
Given:
iverts an array containing three vertices of a triangular plate.
help, iverts
DOUBLE = Array[3,3]
Each vertex is a three-dimensional vector. The elements
delta a fraction by which the plate is to be scaled.
help, delta
DOUBLE = Scalar
Scaling is done so that the scaled plate has the following
properties:
- it is co-planar with the input plate
- its centroid coincides with that of the input
plate
- its sides remain parallel to the corresponding
sides of the input plate
- the distance of each vertex from the centroid is
(1+delta) times the corresponding distance for
the input plate
the call:
cspice_pltexp, iverts, delta, overts
returns:
overts an array containing three vertices of the triangular plate
resulting from scaling the input plate.
help, overts
DOUBLE = Array[3,3]
If `ctroid' is the centroid (the average of the vertices)
of the input plate, then the ith vertex of `overts'
overts[j,i], j = 0 ... 2
is equal to
ctroid[j] + (1+delta)*( iverts[j,i] - ctroid[j] ),
j = 0 ... 2
None.
Any numerical results shown for this example may differ between
platforms as the results depend on the SPICE kernels used as input
and the machine specific arithmetic implementation.
1) Expand an equilateral triangle that lies in the plane
{ (x,y,z) : z = 7 }
Use an expansion fraction of 1.0; this doubles the size of
the plate.
Example code begins here.
PRO pltexp_ex1
s = sqrt( 3.D ) / 2.D
iverts = [ [ s, -0.5D, 7.0], [ 0.0, 1.0, 7.0], [ -s, -0.5, 7.0] ]
delta = 1.D
cspice_pltexp, iverts, delta, overts
print, 'Vertices of input plate: '
print, ' I1 = ', iverts(*,0)
print, ' I2 = ', iverts(*,1)
print, ' I3 = ', iverts(*,2)
print
print, 'Vertices of output plate: '
print, ' O1 = ', overts(*,0)
print, ' O2 = ', overts(*,1)
print, ' O3 = ', overts(*,2)
END
When this program was executed on a Mac/Intel/IDL8.x/64-bit
platform, the output was:
Vertices of input plate:
I1 = 0.86602540 -0.50000000 7.0000000
I2 = 0.0000000 1.0000000 7.0000000
I3 = -0.86602540 -0.50000000 7.0000000
Vertices of output plate:
O1 = 1.7320508 -1.0000000 7.0000000
O2 = 0.0000000 2.0000000 7.0000000
O3 = -1.7320508 -1.0000000 7.0000000
Note that the height of the plate is unchanged, but the vectors
from the centroid to the vertices have doubled in length.
This routine supports "greedy" ray-plate intercept algorithms.
Such algorithms attempt to ensure that false negatives---in which
an intersection is not found due to round-off error---do not
occur. In such an algorithm, the plate of interest is expanded
slightly before the intersection test is performed.
1) If any of the input arguments, `iverts' or `delta', is
undefined, an error is signaled by the IDL error handling
system.
2) If any of the input arguments, `iverts' or `delta', is not of
the expected type, or it does not have the expected dimensions
and size, an error is signaled by the Icy interface.
3) If the output argument `overts' is not a named variable, an
error is signaled by the Icy interface.
None.
None.
DSK.REQ
ICY.REQ
None.
J. Diaz del Rio (ODC Space)
M. Liukis (JPL)
E.D. Wright (JPL)
-Icy Version 1.0.1, 01-JUN-2021 (JDR)
Added -Parameters, -Exceptions, -Files, -Restrictions,
-Literature_References and -Author_and_Institution sections. Edited the
header to comply with NAIF standard.
Added example task statement. Corrected typos in header.
Removed reference to the routine's corresponding CSPICE header from
-Abstract section.
Added arguments' type and size information in the -I/O section.
-Icy Version 1.0.0, 15-DEC-2016 (ML) (EDW)
expand triangular plate
|