Index Page
cspice_dski02
A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X 

Abstract
I/O
Examples
Particulars
Required Reading
Version
Index_Entries

Abstract


   CSPICE_DSKI02 returns integer data from a type 2 DSK segment.

   For important details concerning this module's function, please refer to
   the CSPICE routine dski02_c.

I/O


   Given:

      handle    the handle of a DSK file containing a type 2 segment
                from which data are to be fetched.

      dladsc    the DLA descriptor associated with the segment from
                which data are to be fetched.

      item      an integer "keyword" parameter designating the integer
                data item to fetch.

                Names, values, and meanings of keyword parameters
                supported by this routine are shown below.

                Use of the names shown here is enabled by calling
                the DSKIcy parameter definition routine as shown:

                   @IcyUser

                This call must be made before the parameter names
                are referenced. See the example program below.


             Name               Value Description
             ----               ----- ----------

             SPICE_DSK02_KWNV     1   Number of vertices in model.

             SPICE_DSK02_KWNP     2   Number of plates in model.

             SPICE_DSK02_KWNVXT   3   Total number of voxels in fine grid.

             SPICE_DSK02_KWVGRX   4   Voxel grid extent.  This extent is
                                      an array of three integers
                                      indicating the number of
                                      voxels in the X, Y, and Z
                                      directions in the fine voxel
                                      grid.

             SPICE_DSK02_KWCGSC   5   Coarse voxel grid scale.  The extent
                                      of the fine voxel grid is related to
                                      the extent of the coarse voxel grid
                                      by this scale factor.

             SPICE_DSK02_KWVXPS   6   Size of the voxel-to-plate pointer
                                      list.

             SPICE_DSK02_KWVXLS   7   Voxel-plate correspondence list
                                      size.

             SPICE_DSK02_KWVTLS   8   Vertex-plate correspondence list
                                      size.

             SPICE_DSK02_KWPLAT   9   Plate array.  For each plate, this
                                      array contains the indices of the
                                      plate's three vertices. The ordering
                                      of the array members is:

                                        Plate 1 vertex index 1
                                        Plate 1 vertex index 2
                                        Plate 1 vertex index 3
                                        Plate 2 vertex index 1
                                        ...

                                      The vertex indices in this
                                      array start at 0 and end at
                                      NV-1, the number of vertices
                                      in the model.

             SPICE_DSK02_KWVXPT  10   Voxel-plate pointer list. This list
                                      contains pointers that map fine
                                      voxels to lists of plates that
                                      intersect those voxels. Note that
                                      only fine voxels belonging to
                                      non-empty coarse voxels are in the
                                      domain of this mapping.

             SPICE_DSK02_KWVXPL  11   Voxel-plate correspondence list.
                                      This list contains lists of plates
                                      that intersect fine voxels. (This
                                      list is the data structure into
                                      which the voxel-to-plate pointers
                                      point.) This list can contain
                                      empty lists. Plate IDs in this
                                      list start at 1 and end at NP,
                                      the number of plates in the model.

             SPICE_DSK02_KWVTPT  12   Vertex-plate pointer list. This list
                                      contains pointers that map vertices
                                      to lists of plates to which those
                                      vertices belong.

                                      Note that the size of this list is
                                      always NV, the number of vertices.
                                      Hence there's no need for a separate
                                      keyword for the size of this list.

             SPICE_DSK02_KWVTPL  13   Vertex-plate correspondence list.
                                      This list contains, for each vertex,
                                      the indices of the plates to which
                                      that vertex belongs. Plate IDs in
                                      this list start at 1 and end at NP,
                                      the number of plates in the model.

             SPICE_DSK02_KWCGPT  14   Coarse voxel grid pointers.  This is
                                      an array of pointers mapping coarse
                                      voxels to lists of pointers in the
                                      voxel-plate pointer list.  Each
                                      non-empty coarse voxel maps to a
                                      list of pointers; every fine voxel
                                      contained in a non-empty coarse
                                      voxel has its own pointers. Grid
                                      elements corresponding to empty coarse
                                      voxels contain non-positive values.

      start     the start index within specified data item from which
                data are to be fetched. The index of the first element
                of each data item is 0. This convention applies
                uniformly to all data. For example, the plate
                ID range starts at 1 (this fact is language-independent),
                but a caller would use a `start' value of 0 to fetch
                the vertex indices of the first plate.

      room      the amount of room in the output array. It is
                permissible to provide an output array that has too
                little room to fetch an item in one call.

   the call:

      cspice_dski02, handle, dladsc, item, start, room, values

   returns:

      values    a contiguous set of elements of the item designated by
                `item'. The correspondence of `values' with the
                elements of the data item is:

                   values[0]      item[start]
                     ...             ...
                   values[n-1]    item[start+n-1]

                If an error occurs on the call, `values' is undefined.

                Note, `room' >= n.

Examples


   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.

   Look up all the vertices associated with each plate
   of the model contained in a specified type 2 segment.
   For each plate, display the plate's vertices.

   For this example, we'll show the context of this look-up:
   opening the DSK file for read access, traversing a trivial,
   one-segment list to obtain the segment of interest.

      PRO DSKD02_T, dsk

         ;;
         ;; IcyUser globally defines DSK parameters.
         ;; For more information, please see DSKIcyUser.m and
         ;; DSKIcyUser02.m.
         ;;
         @IcyUser

         FMT    = '(A,3(1X,E14.6))'

         ;;
         ;; Set the dimensions of the array `vrtces', which
         ;; will be used later.
         ;;
         vrtces = dindgen(3, 3) * 0.D

         ;;
         ;; Open the DSK file for read access.
         ;; We use the DAS-level interface for
         ;; this function.
         ;;
         cspice_dasopr, dsk, handle

         ;;
         ;; Begin a forward search through the
         ;; kernel, treating the file as a DLA.
         ;; In this example, it's a very short
         ;; search.
         ;;
         cspice_dlabfs, handle, dladsc, found

         if ( ~found ) then begin
            ;;
            ;; We arrive here only if the kernel
            ;; contains no segments. This is
            ;; unexpected, but we're prepared for it.
            ;;
            message, 'No segments found in DSK file ', + dsk
            return

         endif

         ;;
         ;; If we made it this far, `dladsc' is the
         ;; DLA descriptor of the first segment.
         ;;

         ;;
         ;; Find the number of plates in the model.
         ;;
         cspice_dski02, handle, dladsc, SPICE_DSK02_KWNP, 0, 1, ival
         np = ival[0]

         ;;
         ;; For each plate, look up the desired data.
         ;; Note that plate numbers range from 1 to np.
         ;;
         for i=1, np do begin

            ;;
            ;; For the Ith plate, find the associated
            ;; vertex IDs.  We must take into account
            ;; the fact that each plate has three
            ;; vertices when we compute the start
            ;; index.
            ;;

            start = 3*(i-1);

            ;;
            ;; Fetch the ith plate.
            ;;
            cspice_dski02, handle, dladsc, SPICE_DSK02_KWPLAT, $
                                    start,  3, vrtids

            for  j = 0, 2 do begin

               ;;
               ;; Fetch the jth vertex of the ith plate.
               ;;
               start = (vrtids[j]-1) * 3;

               cspice_dskd02, handle, dladsc, SPICE_DSK02_KWVERT, $
                                      start,  3 , vtemp

               vrtces[j,*] = vtemp

            endfor

            ;;
            ;; Display the vertices of the ith plate:
            ;;
            print
            print, 'Plate number: ', i
            print, format=FMT, 'Vertex 1: ', vrtces[0,*]
            print, format=FMT, 'Vertex 2: ', vrtces[1,*]
            print, format=FMT, 'Vertex 3: ', vrtces[2,*]

         endfor

         ;;
         ;; Close the DSK.
         ;;
         cspice_dascls, handle

      END

   IDL outputs:

      IDL> dskd02_t, 'solid.bds'

            [Only the first and last few rows are shown]

      Plate number:        1
      Vertex 1:    0.000000E+00   0.000000E+00   1.175570E+00
      Vertex 2:    1.051460E+00   0.000000E+00   5.257310E-01
      Vertex 3:    3.249200E-01   1.000000E+00   5.257310E-01

      Plate number:        2
      Vertex 1:    0.000000E+00   0.000000E+00   1.175570E+00
      Vertex 2:    3.249200E-01   1.000000E+00   5.257310E-01
      Vertex 3:   -8.506510E-01   6.180340E-01   5.257310E-01

                 ...

      Plate number:       19
      Vertex 1:   -3.249200E-01  -1.000000E+00  -5.257310E-01
      Vertex 2:    0.000000E+00   0.000000E+00  -1.175570E+00
      Vertex 3:    8.506510E-01  -6.180340E-01  -5.257310E-01

      Plate number:       20
      Vertex 1:    8.506510E-01  -6.180340E-01  -5.257310E-01
      Vertex 2:    0.000000E+00   0.000000E+00  -1.175570E+00
      Vertex 3:    8.506510E-01   6.180340E-01  -5.257310E-01

Particulars


   Most user applications will not need to call this routine. The
   routines

      cspice_dskz02
      cspice_dskp02
      cspice_dskv02

   have simpler interfaces and may be used to fetch the plates
   and vertex counts, and the plates and vertices themselves,
   from a type DSK segment. See the documentation of those
   routines for code examples.

Required Reading


   ICY.REQ
   DAS.REQ
   DSK.REQ

Version


   -Icy Version 1.0.0, 13-DEC-2016, ML (JPL), EDW (JPL)

Index_Entries


   fetch integer data from a type 2 dsk segment



Wed Apr  5 17:58:00 2017