Index Page
cspice_eqncpv
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


   Compute the state (position and velocity of an object whose
   trajectory is described via equinoctial elements relative to some
   fixed plane (usually the equatorial plane of some planet).

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

I/O


   Given:

      et         the scalar double precision ephemeris time, expressed
                 as seconds past J2000 TDB, at which the state
                 of the target body is to be computed.

                 'et' has units of TDB seconds.

      epoch      the scalar double precision epoch of the equinoctial
                 elements in seconds past the J2000 epoch.

                 'epoch' has units of TDB seconds.

      eqel       a double precision 9-vector containing the equinoctial
                 elements for some orbit expressed relative to the equatorial
                 frame of the central body.

                 (The z-axis of the equatorial frame is the direction
                 of the pole of the central body relative to some
                 inertial frame.  The x-axis is given by the cross
                 product of the Z-axis of the inertial frame
                 with the direction of the pole of the central body.
                 The Y-axis completes a right handed frame.
                 (If the z-axis of the equatorial frame is aligned
                 with the z-axis of the inertial frame, then the
                 x-axis of the equatorial frame will be located at
                 90 degrees + rapol in the inertial frame.)

                 The specific arrangement of the elements is spelled
                 out below.  The following terms are used in the
                 discussion of elements of eqel

                     inc   --- inclination of the orbit
                     omega --- argument of periapse
                     node  --- longitude of the ascending node
                     e     --- eccentricity of the orbit

                 eqel[0] is the semi-major axis (a) of the orbit in km.

                 eqel[1] is the value of 'h' at the specified epoch.
                         ( e*sin(omega+node) ).

                 eqel[2] is the value of 'k' at the specified epoch
                         ( e*cos(omega+node) ).

                 eqel[3] is the mean longitude (mean0+omega+node) at
                         the epoch of the elements measured in radians.

                 eqel[4] is the value of 'p' (tan(inc/2)*sin(node))at
                         the specified epoch.

                 eqel[5] is the value of 'q' (tan(inc/2)*cos(node))at
                         the specified epoch.

                 eqel[6] is the rate of the longitude of periapse
                         (domega/dt + dnode/dt ) at the epoch of
                         the elements. This rate is assumed to hold
                         for all time. The rate is measured in
                         radians per second.

                 eqel[7] is the derivative of the mean longitude
                         ( dm/dt + domega/dt + dnode/dt ). This
                         rate is assumed to be constant and is
                         measured in radians/second.

                 eqel[8] is the rate of the longitude of the ascending
                         node ( dnode/dt). This rate is measured
                         in radians per second.

      rapol      scalar double precision right ascension of the pole of the
                 reference plane with respect to some inertial frame.

                 'rapol' has units of radians.

      decpol     scalar double precision declination of the pole of the
                 reference plane with respect to some inertial frame,

                 'decpol' has units of radians.

   the call:

      cspice_eqncpv, et, epoch, eqel, rapol, decpol, state

   returns:

      state      double precision 6-vector describing the state of the object
                 defined by 'eqel' relative to the inertial frame used to
                 define rapol and decpol. Units are in km and km/sec.

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.

      Compute a state vector from a set of equinoctial elements.

      ;;
      ;; Suppose you have classical elements and rates of
      ;; change of the ascending node and argument of periapse
      ;; for some satellite of the earth.
      ;;
      ;; By transforming the classical elements this routine
      ;; compute the state of the object at an arbitrary epoch.
      ;; The code below illustrates how to do this.
      ;;
      ;; The table below illustrates the meanings of the various
      ;; variables used in the discussion below.
      ;;
      ;;       Variable     Meaning
      ;;       --------     ----------------------------------
      ;;       a            Semi-major axis in km.
      ;;       ecc          Eccentricity of orbit.
      ;;       inc          Inclination of orbit.
      ;;       node         Longitude of the ascending node at epoch.
      ;;       omega        Argument of periapse at epoch.
      ;;       m            Mean anomaly at epoch.
      ;;       dmdt         Mean anomaly rate in radians/second.
      ;;       dnode        Rate of change of longitude of ascending node
      ;;                    in radians/second.
      ;;       domega       Rate of change of argument of periapse in
      ;;                    radians/second.
      ;;       epoch        is the epoch of the elements in seconds past
      ;;                    the J2000 epoch.
      ;;
      ;;      eqel[0] = a
      ;;      eqel[1] = ecc * sin( omega + node )
      ;;      eqel[2] = ecc * cos( omega + node )
      ;;
      ;;      eqel[3] = m + omega + node
      ;;
      ;;      eqel[4] = tan(inc/2.0) * sin(node)
      ;;      eqel[5] = tan(inc/2.0) * cos(node)
      ;;
      ;;      eqel[6] = domega
      ;;      eqel[7] = domega + dmdt + dnode
      ;;      eqel[8] = dnode
      ;;
      ;; In this case, the rates of node and argument of
      ;; periapse are zero and the pole of the central
      ;; frame is aligned with the pole of an inertial frame.
      ;;

      p      =      1.0d4
      gm     = 398600.436d
      ecc    =      0.1d
      a      = p/( 1.d - ecc )
      dmdt   = sqrt ( gm / a ) / a
      omega  = 30.d * cspice_rpd()
      node   = 15.d * cspice_rpd()
      inc    = 10.d * cspice_rpd()
      m      = 45.d * cspice_rpd()
      epoch  = -100000000.d
      dnode  = 0.d
      domega = 0.d

      eqel  = [  a,                     $
                ecc*sin(omega+node),    $
                ecc*cos(omega+node),    $
                m  + omega + node,      $
                tan(inc/2.d)*sin(node), $
                tan(inc/2.d)*cos(node), $
                domega,                 $
                domega + dmdt + dnode,  $
                dnode ]

      rapol  = -cspice_halfpi()
      decpol =  cspice_halfpi()

      et = epoch - 10000.d0

      for i = 1, 10 do begin
         et = et + 250.d

         print

         cspice_eqncpv, et, epoch, eqel, rapol, decpol, state
         print, 'Pos = ',state[0:2]
         print, 'Vel = ',state[3:5]

      endfor

   IDL outputs:

      Pos =       -10732.167       3902.5058       1154.4516
      Vel =       -2.5407669      -5.1522692     -0.76157581

      Pos =       -11278.383       2586.1799       955.18410
      Vel =       -1.8271564      -5.3629158     -0.83001977

      Pos =       -11645.295       1228.6124       740.70957
      Vel =       -1.1080964      -5.4828109     -0.88325573

      Pos =       -11832.800      -147.99098       514.80525
      Vel =      -0.39342066      -5.5159047     -0.92150772

      Pos =       -11843.089      -1522.4698       281.17526
      Vel =       0.30828845      -5.4665647     -0.94512794

      Pos =       -11680.365      -2874.7848       43.424394
      Vel =       0.98951988      -5.3393639     -0.95455246

      Pos =       -11350.590      -4186.0498      -194.95853
      Vel =        1.6436489      -5.1389380     -0.95026851

      Pos =       -10861.293      -5438.5362      -430.61041
      Vel =        2.2647587      -4.8698990     -0.93279157

      Pos =       -10221.411      -6615.6606      -660.29899
      Vel =        2.8474759      -4.5367943     -0.90265092

      Pos =       -9441.1703      -7701.9679      -880.92519
      Vel =        3.3868216      -4.1441030     -0.86038222

Particulars


   This routine evaluates the input equinoctial elements for
   the specified epoch and return the corresponding state.

   This routine was adapted from a routine provided by
   Bob Jacobson at JPL.

Required Reading


   SPK

Version


   -Icy Version 1.0.0, 22-NOV-2011, EDW (JPL)

Index_Entries


   Compute a state from equinoctial elements







Wed Apr  5 17:58:01 2017