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

Table of contents
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

   cknr02_c ( C-kernel, number of records, type 02 ) 

   void cknr02_c ( SpiceInt            handle,
                   ConstSpiceDouble    descr  [],
                   SpiceInt          * nrec      )

Abstract

   Return the number of pointing records in a CK type 02 segment.
   The segment is identified by a CK file handle and segment
   descriptor.

Required_Reading

   CK
   DAF

Keywords

   POINTING


Brief_I/O

   VARIABLE  I/O  DESCRIPTION
   --------  ---  --------------------------------------------------
   handle     I   The handle of the CK file containing the segment.
   descr      I   The descriptor of the type 2 segment.
   nrec       O   The number of records in the segment.

Detailed_Input

   handle      is the handle of the binary CK file containing the
               segment. The file should have been opened for read or
               write access, by cklpf_c, dafopr_c or dafopw_c.

   descr       is the packed descriptor of a data type 2 CK segment.

Detailed_Output

   nrec        is the number of pointing records in the type 2 segment
               associated with `handle' and `descr'.

Parameters

   None.

Exceptions

   1)  If the segment indicated by `descr' is not a type 2 segment, the
       error SPICE(CKWRONGDATATYPE) is signaled by a routine in the call
       tree of this routine.

   2)  If the specified handle does not belong to any file that is
       currently known to be open, an error is signaled by a routine
       in the call tree of this routine.

   3)  If `descr' is not a valid descriptor of a segment in the CK
       file specified by `handle', the results of this routine are
       unpredictable.

Files

   The CK file specified by `handle' should be open for read or write
   access.

Particulars

   For a complete description of the internal structure of a type 2
   segment, see the CK required reading.

   This routine returns the number of pointing records contained
   in the specified segment. It is normally used in conjunction
   with ckgr02_c, which returns the Ith record in the segment.

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) The following code example extracts the start and end SCLK
      time, seconds per tick rate, platform's +Z axis direction,
      and angular velocity vector for each pointing instance in
      the first segment in a CK file that contains segments of data
      type 2.

      Use the CK kernel below, available in the Viking Orbiter PDS
      archives, as input for the code example.

         vo2_swu_ck2.bc

      Example code begins here.


      /.
         Program cknr02_ex1
      ./
      #include <stdio.h>
      #include "SpiceUsr.h"

      int main( )
      {

         SpiceDouble          av     [3];
         SpiceDouble          cmat   [3][3];
         SpiceDouble          dcd    [2];
         SpiceDouble          descr  [5];
         SpiceDouble          quat   [4];
         SpiceDouble          record [10];
         SpiceDouble          sclke;
         SpiceDouble          sclkr;
         SpiceDouble          sclks;
         SpiceDouble          z      [3];

         SpiceInt             icd    [6];
         SpiceInt             handle;
         SpiceInt             nrec;
         SpiceInt             i;

         SpiceBoolean         found;

         /.
         First load the file. (The file may also be opened by
         using cklpf_c).
         ./
         dafopr_c ( "vo2_swu_ck2.bc", &handle );

         /.
         Begin forward search.  Find the first array.
         ./
         dafbfs_c ( handle );
         daffna_c ( &found );

         /.
         Get segment descriptor.
         ./
         dafgs_c ( descr );

         /.
         Unpack the segment descriptor into its double precision
         and integer components.
         ./
         dafus_c ( descr, 2, 6, dcd, icd );

         /.
         The data type for a segment is located in the third
         integer component of the descriptor.
         ./
         if ( icd[2] == 2 )
         {

            /.
            How many records does this segment contain?
            ./
            cknr02_c ( handle, descr, &nrec );

            for ( i = 1; i <= nrec; i++ )
            {

               /.
               Get the ith record in the segment.
               ./
               ckgr02_c ( handle, descr, i, record );

               /.
               Unpack `record' into the start and end time, rate in
               TDB seconds/tick, quaternion, and av.
               ./
               sclks = record[0];
               sclke = record[1];
               sclkr = record[2];

               moved_c ( record+3, 4, quat );
               moved_c ( record+7, 3, av );

               /.
               The +Z axis direction is the third row of the
               C-matrix.
               ./
               q2m_c ( quat, cmat );

               z[0] = cmat[2][0];
               z[1] = cmat[2][1];
               z[2] = cmat[2][2];

               /.
               Write out the results.
               ./
               printf( "Record: %2d\n", (int)i );
               printf( "   Start encoded SCLK: %20.6f\n", sclks );
               printf( "   End encoded SCLK  : %20.6f\n", sclke );
               printf( "   TDB Seconds/tick  : %20.6f\n", sclkr );
               printf( "   +Z axis           : %12.8f %12.8f %12.8f\n",
                                                       z[0], z[1], z[2] );
               printf( "   Angular velocity  : %12.8f %12.8f %12.8f\n",
                                                    av[0], av[1], av[2] );
               printf( "\n" );
            }
         }

         return ( 0 );
      }


      When this program was executed on a Mac/Intel/cc/64-bit
      platform, the output was:


      Record:  1
         Start encoded SCLK:   32380393707.000015
         End encoded SCLK  :   32380395707.000015
         TDB Seconds/tick  :             0.001000
         +Z axis           :   0.62277152  -0.29420673   0.72498141
         Angular velocity  :   0.00000000   0.00000000   0.00000000

      Record:  2
         Start encoded SCLK:   32380402605.999947
         End encoded SCLK  :   32380404605.999947
         TDB Seconds/tick  :             0.001000
         +Z axis           :   0.62172600  -0.27894910   0.73187716
         Angular velocity  :   0.00000000   0.00000000   0.00000000

      Record:  3
         Start encoded SCLK:   32380412542.000053
         End encoded SCLK  :   32380414542.000053
         TDB Seconds/tick  :             0.001000
         +Z axis           :   0.62183610  -0.26307233   0.73764003
         Angular velocity  :   0.00000000   0.00000000   0.00000000

      Record:  4
         Start encoded SCLK:   32827264875.000000
         End encoded SCLK  :   32827266875.000000
         TDB Seconds/tick  :             0.001000
         +Z axis           :   0.82984105  -0.44796078   0.33270853
         Angular velocity  :   0.00000000   0.00000000   0.00000000

      Record:  5
         Start encoded SCLK:   32827403805.999992
         End encoded SCLK  :   32827405805.999992
         TDB Seconds/tick  :             0.001000
         +Z axis           :   0.80812500  -0.44911178   0.38109395
         Angular velocity  :   0.00000000   0.00000000   0.00000000

      Record:  6
         Start encoded SCLK:   32827412705.000042
         End encoded SCLK  :   32827414705.000042
         TDB Seconds/tick  :             0.001000
         +Z axis           :   0.81120505  -0.43593555   0.38975193
         Angular velocity  :   0.00000000   0.00000000   0.00000000

      Record:  7
         Start encoded SCLK:   32827417284.000038
         End encoded SCLK  :   32827419284.000038
         TDB Seconds/tick  :             0.001000
         +Z axis           :   0.81313834  -0.42861613   0.39382008
         Angular velocity  :   0.00000000   0.00000000   0.00000000

      Record:  8
         Start encoded SCLK:   33793314593.000053
         End encoded SCLK  :   33793316593.000053
         TDB Seconds/tick  :             0.001000
         +Z axis           :   0.79860617  -0.37840751   0.46801275
         Angular velocity  :   0.00000000   0.00000000   0.00000000

      Record:  9
         Start encoded SCLK:   33793332478.000046
         End encoded SCLK  :   33793334478.000046
         TDB Seconds/tick  :             0.001000
         +Z axis           :   0.77861783  -0.39171670   0.49021658
         Angular velocity  :   0.00000000   0.00000000   0.00000000

      Record: 10
         Start encoded SCLK:   33793341463.000061
         End encoded SCLK  :   33793343463.000061
         TDB Seconds/tick  :             0.001000
         +Z axis           :   0.76852381  -0.39797437   0.50098659
         Angular velocity  :   0.00000000   0.00000000   0.00000000

      Record: 11
         Start encoded SCLK:   33793350363.000034
         End encoded SCLK  :   33793352363.000034
         TDB Seconds/tick  :             0.001000
         +Z axis           :   0.75779934  -0.40484364   0.51170478
         Angular velocity  :   0.00000000   0.00000000   0.00000000

      Record: 12
         Start encoded SCLK:   33984028250.000000
         End encoded SCLK  :   33984030250.000000
         TDB Seconds/tick  :             0.001000
         +Z axis           :   0.77099184  -0.39926339   0.49614546
         Angular velocity  :   0.00000000   0.00000000   0.00000000

      Record: 13
         Start encoded SCLK:   33984046134.999992
         End encoded SCLK  :   33984048134.999992
         TDB Seconds/tick  :             0.001000
         +Z axis           :   0.75024440  -0.41218993   0.51694564
         Angular velocity  :   0.00000000   0.00000000   0.00000000

      Record: 14
         Start encoded SCLK:   33984055121.000053
         End encoded SCLK  :   33984057121.000053
         TDB Seconds/tick  :             0.001000
         +Z axis           :   0.73947359  -0.41886863   0.52699894
         Angular velocity  :   0.00000000   0.00000000   0.00000000

      Record: 15
         Start encoded SCLK:   33984220835.999966

      [...]


      Warning: incomplete output. Only 100 out of 875 lines have been
      provided.

Restrictions

   1)  The binary CK file containing the segment whose descriptor was
       passed to this routine must be opened for read or write access
       by cklpf_c, dafopr_c or dafopw_c.

Literature_References

   None.

Author_and_Institution

   J. Diaz del Rio     (ODC Space)

Version

   -CSPICE Version 1.0.0, 01-NOV-2021 (JDR)

Index_Entries

   number of CK type_2 records
Fri Dec 31 18:41:02 2021