blob: cb41578639221bb8d9004958464fdb1db75447d3 [file] [log] [blame]
#include "astro.h"
void
helio(void)
{
/*
* uses lambda, beta, rad, motion
* sets alpha, delta, rp
*/
/*
* helio converts from ecliptic heliocentric coordinates
* referred to the mean equinox of date
* to equatorial geocentric coordinates referred to
* the true equator and equinox
*/
double xmp, ymp, zmp;
double beta2;
/*
* compute geocentric distance of object and
* compute light-time correction (i.i. planetary aberration)
*/
xmp = rad*cos(beta)*cos(lambda);
ymp = rad*cos(beta)*sin(lambda);
zmp = rad*sin(beta);
rp = sqrt((xmp+xms)*(xmp+xms) +
(ymp+yms)*(ymp+yms) +
(zmp+zms)*(zmp+zms));
lmb2 = lambda - .0057756e0*rp*motion;
xmp = rad*cos(beta)*cos(lmb2);
ymp = rad*cos(beta)*sin(lmb2);
zmp = rad*sin(beta);
/*
* compute annual parallax from the position of the sun
*/
xmp += xms;
ymp += yms;
zmp += zms;
rp = sqrt(xmp*xmp + ymp*ymp + zmp*zmp);
/*
* compute annual (i.e. stellar) aberration
* from the orbital velocity of the earth
* (by an incorrect method)
*/
xmp -= xdot*rp;
ymp -= ydot*rp;
zmp -= zdot*rp;
/*
* perform the nutation and so convert from the mean
* equator and equinox to the true
*/
lmb2 = atan2(ymp, xmp);
beta2 = atan2(zmp, sqrt(xmp*xmp+ymp*ymp));
lmb2 += phi;
/*
* change to equatorial coordinates
*/
xmp = rp*cos(lmb2)*cos(beta2);
ymp = rp*(sin(lmb2)*cos(beta2)*cos(tobliq) - sin(tobliq)*sin(beta2));
zmp = rp*(sin(lmb2)*cos(beta2)*sin(tobliq) + cos(tobliq)*sin(beta2));
alpha = atan2(ymp, xmp);
delta = atan2(zmp, sqrt(xmp*xmp+ymp*ymp));
hp = 8.794e0*radsec/rp;
semi /= rp;
if(rad > 0 && rad < 2.e5)
mag += 2.17*log(rad*rp);
}