| 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 | */ | 
|---|
| 13 | void | 
|---|
| 14 | heliocorr (jd, ra, dec, hcp) | 
|---|
| 15 | double jd, ra, dec; | 
|---|
| 16 | double *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 */ | 
|---|
| 54 | static 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 $"}; | 
|---|