Determine the set of osculating conic orbital elements that corresponds to the state (position, velocity) of a body at some epoch.
VARIABLE I/O DESCRIPTION -------- --- -------------------------------------------------- state I State of body at epoch of elements. et I Epoch of elements. mu I Gravitational parameter (GM) of primary body. elts O Equivalent conic elements
state is the state (position and velocity) of the body at some epoch. Components are x, y, z, dx/dt, dy/dt, dz/dt. `state' must be expressed relative to an inertial reference frame. Units are km and km/sec. et is the epoch of the input state, in ephemeris seconds past J2000. 3 2 mu is the gravitational parameter (GM, km /sec ) of the primary body.
elts are equivalent conic elements describing the orbit of the body around its primary. The elements are, in order: rp Perifocal distance. ecc Eccentricity. inc Inclination. lnode Longitude of the ascending node. argp Argument of periapsis. m0 Mean anomaly at epoch. t0 Epoch. mu Gravitational parameter. The epoch of the elements is the epoch of the input state. Units are km, rad, rad/sec. The same elements are used to describe all three types (elliptic, hyperbolic, and parabolic) of conic orbit.
Let vinit contain the initial state of a spacecraft relative to the center of a planet at epoch ET, and let GM be the gravitation parameter of the planet. The call oscelt_c ( vinit, et, gm, elts ); produces a set of osculating elements describing the nominal orbit that the spacecraft would follow in the absence of all other bodies in the solar system. Now let state contain the state of the same spacecraft at some other epoch, later. The difference between this state and the state predicted by the nominal orbit at the same epoch can be computed as follows. conics_c ( elts, later, nominal ); vsubg_c ( nominal, state, 6, diff ); printf( "Perturbation in x, dx/dt = %e %e\n", diff, diff ); printf( " y, dy/dt = %e %e\n", diff, diff ); printf( " z, dz/dt = %e %e\n", diff, diff );
1) The input state vector must be expressed relative to an inertial reference frame. 2) Osculating elements are generally not useful for high-accuracy work. 3) Accurate osculating elements may be difficult to derive for near-circular or near-equatorial orbits. Osculating elements for such orbits should be used with caution. 4) Extracting osculating elements from a state vector is a mathematically simple but numerically challenging task. The mapping from a state vector to equivalent elements is undefined for certain state vectors, and the mapping is difficult to implement with finite precision arithmetic for states near the the subsets of R6 where singularities occur. In general, the elements found by this routine can have two kinds of problems: - The elements are not accurate but still represent the input state accurately. The can happen in cases where the inclination is near zero or 180 degrees, or for near-circular orbits. - The elements are garbage. This can occur when the eccentricity of the orbit is close to but not equal to 1. In general, any inputs that cause great loss of precision in the computation of the specific angular momentum vector or the eccentricity vector will result in invalid outputs. For further details, see the Exceptions section. Users of this routine should carefully consider whether it is suitable for their applications. One recommended "sanity check" on the outputs is to supply them to the CSPICE routine conics_c and compare the resulting state vector with the one supplied to this routine.
1) If `mu' is not positive, the error SPICE(NONPOSITIVEMASS) is signaled. 2) If the specific angular momentum vector derived from STATE is the zero vector, the error SPICE(DEGENERATECASE) is signaled. 3) If the position or velocity vectors derived from STATE is the zero vector, the error SPICE(DEGENERATECASE) is signaled. 4) If the inclination is determined to be zero or 180 degrees, the longitude of the ascending node is set to zero. 5) If the eccentricity is determined to be zero, the argument of periapse is set to zero. 6) If the eccentricy of the orbit is very close to but not equal to zero, the argument of periapse may not be accurately determined. 7) For inclinations near but not equal to 0 or 180 degrees, the longitude of the ascending node may not be determined accurately. The argument of periapse and mean anomaly may also be inaccurate. 8) For eccentricities very close to but not equal to 1, the results of this routine are unreliable. 9) If the specific angular momentum vector is non-zero but "close" to zero, the results of this routine are unreliable. 10) If `state' is expressed relative to a non-inertial reference frame, the resulting elements are invalid. No error checking is done to detect this problem.
N.J. Bachman (JPL) K.R. Gehringer (JPL) I.M. Underwood (JPL) E.D. Wright (JPL)
 Roger Bate, Fundamentals of Astrodynamics, Dover, 1971.
-CSPICE Version 1.0.1, 17-NOV-2005 (NJB) The Exceptions and Restrictions header sections were filled in. Some corrections were made to the code example. -CSPICE Version 1.0.0, 16-APR-1999 (EDW)
conic elements from state