Listing 1

// Defines for all functions in this article.

#define PI     3.141592654
#define TWOPI (2*PI)
#define RTD (180/PI)
#define DTR (PI/180)

// All code was written in MSC 5.1 under PC-DOS.

// Units used: km for position, km/s for vel
//             angle (i,lan,w,M,E,nu) units: deg
// Value of earth mu used: 398600.8 km**3/s**2

// FUNCTION k2ce()
// This routine converts classical Keplerian elements to
//  Cartesian position and velocity.
//  Input : k[6] -- a, e, i, lan, w, m
//          mu  -- mu of central body ;
//  Output: c[6] -- x, y, z, xdot, ydot, zdot

  k2c  (double *k, double mu, double *c)

Sample Input/Output

A     7378.14 E 0.10 I 30.00      X  6640.32 Y 0.00 Z 0.00
LAN      0.00 W 0.00 M 0.00       XD    0.00 YD 7.03 ZD 4.06

// FUNCTION c2ke()
// This routine converts Cartesian position and velocity
//  to classical Keplerian elements, for elliptical
//  orbits.

//  Input : c[6] -- pos/vel;
//          mu -- mu of central body
//  Output: k[6] -- a,e,i,lan,w,m
//          ** i,lan,w,M are output in degrees **

Sample Input/Output

Outputs from k2ce() were input; the output reproduced
the k2ce() input.