Index Page wnvald_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 wnvald_c ( SpiceInt       size,
                       SpiceInt       n,
                       SpiceCell    * window )

#### Abstract

       Form a valid double precision window from the contents
       of a window array.

#### Required_Reading

       WINDOWS

#### Keywords

       WINDOWS

#### Brief_I/O

       VARIABLE  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
                   containing n endpoints of (possibly unordered
                   and non-disjoint) intervals.

                   window must be declared as a double precision SpiceCell.

#### Detailed_Output

       window      on output, is a window containing the union of the
                   intervals in the input cell.

#### Parameters

       None.

#### Exceptions

       1) If the input window does not have double precision type,
          the error SPICE(TYPEMISMATCH) is signaled.

       2) If the number of endpoints n is odd, the error
          SPICE(UNMATCHENDPTS) is signaled.

       3) If the number of end points of the window exceeds its size, the
          error SPICE(WINDOWTOOSMALL) is signaled.

       4) If any left endpoint is greater than the corresponding right endpoint,
          the error SPICE(BADENDPOINTS) is signaled.

#### Files

       None.

#### Particulars

       This 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 following small program

          #include <stdio.h>
          #include <string.h>
          #include "SpiceUsr.h"

          int main()
          {
             #define WINSIZ     20

             SPICEDOUBLE_CELL ( window, WINSIZ );

             SpiceDouble        winData [WINSIZ] =
                                {
                                   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,
                                   0.0,    0.0,
                                   0.0,    0.0
                                };

             SpiceInt           i;

             memmove ( (SpiceDouble *)(window.data),
                        winData,
                        WINSIZ * sizeof(SpiceDouble) );

             wnvald_c ( 20, 16, &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 );
          }

       produces the following output (possibly with different formatting).

         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

#### Restrictions

       None.

#### Literature_References

       None.

#### Author_and_Institution

       N.J. Bachman    (JPL)
       H.A. Neilan     (JPL)
       W.L. Taber      (JPL)
       I.M. Underwood  (JPL)

#### Version

       -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_Entries

       validate a d.p. window

#### Link to routine wnvald_c source file wnvald_c.c

    Wed Apr  5 17:54:48 2017