Subversion Repositories planix.SVN

Rev

Blame | Last modification | View Log | RSS feed

#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);
}