This is epsiln.c in view mode; [Download] [Up]
/************************************************************************/ /* epsiln.c */ /* */ /* Obliquity of the ecliptic at Julian date J */ /* */ /* IAU Coefficients are from: */ /* J. H. Lieske, T. Lederle, W. Fricke, and B. Morando, */ /* "Expressions for the Precession Quantities Based upon the IAU (1976) */ /* System of Astronomical Constants," Astronomy and Astrophysics */ /* 58, 1-16 (1977). */ /* */ /* Before or after 200 years from J2000, the formula used is from: */ /* J. Laskar, "Secular terms of classical planetary theories */ /* using the results of general theory," Astronomy and Astrophysics */ /* 157, 59070 (1986). */ /* */ /* See precess.c and page B18 of the Astronomical Almanac. */ /************************************************************************/ /***** description * * $Id: epsiln.c,v 1.3 1993/04/21 21:14:29 craig Exp $ * */ /***** modification history * * $Log: epsiln.c,v $ * Revision 1.3 1993/04/21 21:14:29 craig * Changed path of the satellite.h include. * Changed ecnsts to pcnsts. * * Revision 1.2 1993/04/21 15:14:24 craig * First working version. Ran through indent and converted to ansi. * Added hooks for use with the satellite programs. * * */ /***** include files *****/ #include <math.h> #include "aaproto.h" #include "satellite.h" /***** global variables *****/ extern struct MCONSTANTS mcnsts; extern struct PCONSTANTS pcnsts; /* The results of the program are returned in these global variables: */ double jdeps = -1.0; /* Date for which obliquity was last computed */ double eps = 0.0; /* The computed obliquity in radians */ double coseps = 0.0; /* Cosine of the obliquity */ double sineps = 0.0; /* Sine of the obliquity */ /**********/ /* epsiln */ /**********/ int epsiln (double J) { double T; if (J == jdeps) { return (0); } T = (J - pcnsts.J2000) / pcnsts.dapcen; if (fabs (T) < 2.0) { /* This expansion is from the AA. Note the official 1976 IAU number is 23d 26' 21.448", but the JPL numerical integration found 21.4119". */ eps = (((1.813e-3 * T - 5.9e-4) * T - 46.8150) * T + 84381.448) * mcnsts.sec2ra; } else { /* This expansion is from Laskar, cited above. Bretagnon and Simon say, in Planetary Programs and Tables, that it is accurate to 0.1" over a span of 6000 years. Laskar estimates the precision to be 0.01" after 1000 years and a few seconds of arc after 10000 years. */ T /= 10.0; eps = (((((((((2.45e-10 * T + 5.79e-9) * T + 2.787e-7) * T + 7.12e-7) * T - 3.905e-5) * T - 2.4967e-3) * T - 5.138e-3) * T + 1.99925) * T - 0.0155) * T - 468.093) * T + 84381.448; eps *= mcnsts.sec2ra; } coseps = cos (eps); sineps = sin (eps); jdeps = J; return (0); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.