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) <B>Sample Input/Output</B> 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 ** <B>Sample Input/Output</B> Outputs from k2ce() were input; the output reproduced the k2ce() input.