Index Page
cspice_dskd02
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_DSKD02 returns double precision data from a type 2 DSK segment.

   For important details concerning this module's function, please refer to
   the CSPICE routine dskd02_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 double
                precision 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_KWDSC   15  Array containing contents of Fortran
                                    DSK descriptor of segment. Note
                                    that DSK descriptors are not to be
                                    confused with DLA descriptors, which
                                    contain segment component base
                                    address and size information. The
                                    dimension of this array is
                                    SPICE_DSK_DSCSIZ.

            SPICE_DSK02_KWVTBD  16  Vertex bounds. This is an array of
                                    six values giving the minimum and
                                    maximum values of each component
                                    of the vertex set.

            SPICE_DSK02_KWVXOR  17  Voxel grid origin. This is the
                                    location of the voxel grid origin in
                                    the body-fixed frame associated with
                                    the target body.

            SPICE_DSK02_KWVXSZ  18  Voxel size. DSK voxels are cubes;
                                    the edge length of each cube is
                                    given by the voxel size. This size
                                    applies to the fine voxel grid. Units
                                    are km.

            SPICE_DSK02_KWVERT  19  Vertex coordinates.

      start     the start index within the 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, even if the data are
                associated with a set of 1-based indices.  For
                example, the vertex ID range starts at 1 (this fact
                is language-independent), but a caller would use a
               `start' value of 0 to fetch the first vertex.

      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_dskd02, 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, 04-APR-2017, ML (JPL), EDW (JPL)

Index_Entries


   fetch double precision data from a type 2 dsk segment



Wed Apr  5 17:58:00 2017