| wnvald_c |
|
Table of contents
Procedure
wnvald_c ( Validate a DP window )
void wnvald_c ( SpiceInt size,
SpiceInt n,
SpiceCell * window )
AbstractForm a valid double precision window from the contents of a window array. Required_ReadingWINDOWS KeywordsWINDOWS Brief_I/OVARIABLE I/O DESCRIPTION -------- --- -------------------------------------------------- size I Size of window. n I Original number of endpoints. window I-O Input, output window. Detailed_Input
size is the size of the window to be validated. This is the
maximum number of endpoints that the cell used to
implement the window is capable of holding at any one
time.
n is the original number of endpoints in the input cell.
window on input is a (possibly uninitialized) cell array of
maximum size `size' containing `n' endpoints of (possibly
unordered and non-disjoint) intervals.
`window' must be declared as a double precision SpiceCell.
CSPICE provides the following macro, which declares and
initializes the cell
SPICEDOUBLE_CELL ( window, WINDOWSZ );
where WINDOWSZ is the maximum capacity of `window'.
Detailed_Output
window on output is a validated window, in which any overlapping
input intervals have been merged and the resulting set of
intervals is arranged in increasing order.
`window' is ready for use with any of the window routines.
ParametersNone. Exceptions
1) If the original number of endpoints `n' is odd, the error
SPICE(UNMATCHENDPTS) is signaled by a routine in the call tree
of this routine.
2) If the original number of endpoints of the window exceeds its
size, the error SPICE(WINDOWTOOSMALL) is signaled by a routine
in the call tree of this routine.
3) If the left endpoint is greater than the right endpoint, the
error SPICE(BADENDPOINTS) is signaled by a routine in the call
tree of this routine.
4) If the `window' cell argument has a type other than
SpiceDouble, the error SPICE(TYPEMISMATCH) is signaled.
FilesNone. ParticularsThis routine takes as input a cell array containing pairs of endpoints and validates it to form a window. On input, window is a cell of size size containing n endpoints. During validation, the intervals are ordered, and overlapping intervals are merged. On output, the cardinality of window is the number of endpoints remaining, and window is ready for use with any of the window routines. Because validation is done in place, there is no chance of overflow. Examples
The numerical results shown for this example may differ across
platforms. The results depend on the SPICE kernels used as input,
the compiler and supporting libraries, and the machine specific
arithmetic implementation.
1) Define an array containing a set of unordered and possibly
overlapping intervals, and validate the array as a SPICE
window.
Example code begins here.
/.
Program wnvald_ex1
./
#include <stdio.h>
#include <string.h>
#include "SpiceUsr.h"
#include "SpiceZmc.h"
int main()
{
/.
Local parameters.
./
#define WINSIZ 20
#define DATSIZ 16
/.
Local variables
./
SPICEDOUBLE_CELL ( window, WINSIZ );
SpiceDouble winData [DATSIZ] =
{
0.0, 0.0,
10.0, 12.0,
2.0, 7.0,
13.0, 15.0,
1.0, 5.0,
23.0, 29.0,
0.0, 0.0,
0.0, 0.0
};
SpiceInt i;
/.
Insert the data into the SPICE cell array.
./
MOVED ( winData, WINSIZ, window.data );
/.
Validate the input `window' array as a SPICE window.
./
wnvald_c ( WINSIZ, DATSIZ, &window );
printf ( "Current intervals: %d\n", (int)card_c(&window)/2 );
printf ( "Maximum intervals: %d\n", (int)size_c(&window)/2 );
printf ( "\nIntervals\n\n" );
for ( i = 0; i < card_c(&window); i+=2 )
{
printf ( "%10.6f %10.6f\n",
SPICE_CELL_ELEM_D (&window, i ),
SPICE_CELL_ELEM_D (&window, i+1) );
}
return ( 0 );
}
When this program was executed on a Mac/Intel/cc/64-bit
platform, the output was:
Current intervals: 5
Maximum intervals: 10
Intervals
0.000000 0.000000
1.000000 7.000000
10.000000 12.000000
13.000000 15.000000
23.000000 29.000000
RestrictionsNone. Literature_ReferencesNone. Author_and_InstitutionN.J. Bachman (JPL) J. Diaz del Rio (ODC Space) H.A. Neilan (JPL) W.L. Taber (JPL) I.M. Underwood (JPL) E.D. Wright (JPL) Version
-CSPICE Version 1.0.4, 10-AUG-2021 (JDR)
Edited the header to comply to NAIF standard. Created complete code
example from code fragment and added example's problem statement.
Extended description of argument "window" in -Detailed_Input to include
type and preferred declaration method.
Improved description of argument "window" in -Detailed_Output.
-CSPICE Version 1.0.3, 12-JUL-2016 (EDW)
Edit to example program to use "%d" with explicit casts
to int for printing SpiceInts with printf.
-CSPICE Version 1.0.2, 18-DEC-2008 (EDW)
Corrected a typo in the version ID of the 08-OCT-2004
-Version entry. 1.0.0 changed to 1.0.1.
-CSPICE Version 1.0.1, 08-OCT-2004 (NJB)
Corrected typo in code example; also added "return"
statement to code example.
-CSPICE Version 1.0.0, 29-JUL-2002 (NJB) (HAN) (WLT) (IMU)
Index_Entriesvalidate a d.p. window Link to routine wnvald_c source file wnvald_c.c |
Fri Dec 31 18:41:15 2021