cspice_eqncpv |
|||

## AbstractCompute 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/OGiven: 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: ## ExamplesAny 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 ## ParticularsThis 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 ReadingSPK ## Version-Icy Version 1.0.0, 22-NOV-2011, EDW (JPL) ## Index_EntriesCompute a state from equinoctial elements |

Wed Apr 5 17:58:01 2017