source: Sophya/trunk/SophyaExt/XephemAstroLib/helio.c@ 1457

Last change on this file since 1457 was 1457, checked in by cmv, 24 years ago

import de la partie libastro de Xephem cmv+rz 10/4/2001

File size: 1.5 KB
Line 
1#include <stdlib.h>
2#include <math.h>
3#include <math.h>
4
5#include "P_.h"
6#include "astro.h"
7
8/* given geocentric time jd and coords of a distant object at ra/dec (J2000),
9 * find the difference in time between light arriving at earth vs the sun.
10 * *hcp must be subtracted from geocentric jd to get heliocentric jd.
11 * From RLM Oct 12, 1995.
12 */
13void
14heliocorr (jd, ra, dec, hcp)
15double jd, ra, dec;
16double *hcp;
17{
18 double e; /* obliquity of ecliptic */
19 double n; /* day number */
20 double g; /* solar mean anomaly */
21 double L; /* solar ecliptic longitude */
22 double l; /* mean solar ecliptic longitude */
23 double R; /* sun distance, AU */
24 double X, Y; /* equatorial rectangular solar coords */
25 double cdec, sdec;
26 double cra, sra;
27
28 /* following algorithm really wants EOD */
29 precess (J2000, jd - MJD0, &ra, &dec);
30
31 cdec = cos(dec);
32 sdec = sin(dec);
33 cra = cos(ra);
34 sra = sin(ra);
35
36 n = jd - 2451545.0; /* use epoch 2000 */
37 e = degrad(23.439 - 0.0000004*n);
38 g = degrad(357.528) + degrad(0.9856003)*n;
39 L = degrad(280.461) + degrad(0.9856474)*n;
40 l = L + degrad(1.915)*sin(g) + degrad(0.02)*sin(2.0*g);
41 R = 1.00014 - 0.01671*cos(g) - 0.00014*cos(2.0*g);
42 X = R*cos(l);
43 Y = R*cos(e)*sin(l);
44
45#if 0
46 printf ("n=%g g=%g L=%g l=%g R=%g X=%g Y=%g\n",
47 n, raddeg(g), raddeg(L), raddeg(l), R, X, Y);
48#endif
49
50 *hcp = 0.0057755 * (cdec*cra*X + (cdec*sra + tan(e)*sdec)*Y);
51}
52
53/* For RCS Only -- Do Not Edit */
54static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: helio.c,v $ $Date: 2001-04-10 14:40:46 $ $Revision: 1.1.1.1 $ $Name: not supported by cvs2svn $"};
Note: See TracBrowser for help on using the repository browser.