Go to the documentation of this file.
8 void sun2000(
int iyr,
int iday,
double sec,
float sun[3],
float* rs) {
9 const static int imon = 1;
10 const double static xk = 0.0056932;
13 double t =
jd(
iyr, imon, iday) - 2451545.0e0 + (sec - 43200.e0) / 86400.e0;
14 double xls, gs, xlm,
omega;
28 double g2 = 50.40828e0 + 1.60213022e0 *
t;
29 g2 =
dmod(g2, 360.e0);
32 double g4 = 19.38816e0 + 0.52402078e0 *
t;
33 g4 =
dmod(g4, 360.e0);
36 double g5 = 20.35116e0 + 0.08309121e0 *
t;
37 g5 =
dmod(g5, 360.e0);
40 *rs = 1.00014e0 - 0.01671e0 * cos(gs / radeg) - 0.00014e0 * cos(2.0e0 * gs / radeg);
43 double dls = (6893.0e0 - 4.6543463e-4 *
t) * sin(gs / radeg) + 72.0e0 * sin(2.0e0 * gs / radeg) -
44 7.0e0 * cos((gs - g5) / radeg) + 6.0e0 * sin((xlm - xls) / radeg) +
45 5.0e0 * sin((4.0e0 * gs - 8.0e0 * g4 + 3.0e0 * g5) / radeg) -
46 5.0e0 * cos((2.0e0 * gs - 2.0e0 * g2) / radeg) - 4.0e0 * sin((gs - g2) / radeg) +
47 4.0e0 * cos((4.0e0 * gs - 8.0e0 * g4 + 3.0e0 * g5) / radeg) +
48 3.0e0 * sin((2.0e0 * gs - 2.0e0 * g2) / radeg) - 3.0e0 * sin(g5 / radeg) -
49 3.0e0 * sin((2.0e0 * gs - 2.0e0 * g5) / radeg);
50 double xlsg = xls + dls / 3600.e0;
53 double xlsa = xlsg +
dpsi - xk / (*rs);
55 sun[0] = cos(xlsa / radeg);
56 sun[1] = sin(xlsa / radeg) * cos(
eps / radeg);
57 sun[2] = sin(xlsa / radeg) * sin(
eps / radeg);
short int nutate(double tjd, short int fn1, double *pos, double *pos2)
void sun2000(int iyr, int iday, double sec, float sun[3], float *rs)
This subroutine computes the Sun vector in geocentric inertial (equatorial) coodinates....
double dmod(double a, double p)
Description:
int ephparms(double t, double &xls, double &gs, double &xlm, double &omega)