Annotation of researchv10no/cmd/sky/helio.c, revision 1.1.1.1

1.1       root        1: #include "sky.h"
                      2: 
                      3: helio()
                      4: {
                      5: /*
                      6:  *     uses lambda, beta, rad, motion
                      7:  *     uses xms, yms, zms, xdot, ydot, zdot
                      8:  *     uses mag, semi, psi, tobliq
                      9:  *     sets alpha, delta
                     10:  *     sets geolam, geobet, georad
                     11:  */
                     12: 
                     13: /*
                     14:  *     helio converts from ecliptic heliocentric coordinates
                     15:  *     referred to the mean equinox of date
                     16:  *     to equatorial geocentric coordinates referred to
                     17:  *     the true equator and equinox
                     18:  */
                     19: 
                     20:        double xmp, ymp, zmp;
                     21:        double radtemp;
                     22: 
                     23: /*
                     24:  *     compute geocentric distance of object and
                     25:  *     compute light-time correction (i.i. planetary aberration)
                     26:  */
                     27: 
                     28:        xmp = rad*cos(beta)*cos(lambda);
                     29:        ymp = rad*cos(beta)*sin(lambda);
                     30:        zmp = rad*sin(beta);
                     31:        georad = sqrt((xmp+xms)*(xmp+xms) +
                     32:                (ymp+yms)*(ymp+yms) +
                     33:                (zmp+zms)*(zmp+zms));
                     34:        geolam = lambda - .0057756e0*georad*ldot;
                     35:        geobet = beta - .0057756*georad*bdot;
                     36:        radtemp = georad;
                     37:        georad = rad - .0057756*georad*rdot;
                     38: 
                     39:        xmp = georad*cos(geobet)*cos(geolam);
                     40:        ymp = georad*cos(geobet)*sin(geolam);
                     41:        zmp = georad*sin(geobet);
                     42: 
                     43: /*
                     44:  *     compute annual parallax from the position of the sun
                     45:  */
                     46: 
                     47:        xmp += xms;
                     48:        ymp += yms;
                     49:        zmp += zms;
                     50:        georad = sqrt(xmp*xmp + ymp*ymp + zmp*zmp);
                     51: 
                     52: /*
                     53:  *     compute annual (i.e. stellar) aberration
                     54:  *     from the orbital velocity of the earth
                     55:  *     (by an incorrect method)
                     56:  */
                     57: 
                     58:        xmp -= xdot*georad;
                     59:        ymp -= ydot*georad;
                     60:        zmp -= zdot*georad;
                     61: 
                     62: /*
                     63:  *     perform the nutation and so convert from the mean
                     64:  *     equator and equinox to the true
                     65:  */
                     66: 
                     67:        geolam = atan2(ymp, xmp);
                     68:        geobet = atan2(zmp, sqrt(xmp*xmp+ymp*ymp));
                     69:        geolam += psi;
                     70: 
                     71: /*
                     72:  *     change to equatorial coordinates
                     73:  */
                     74: 
                     75:        xmp = georad*cos(geolam)*cos(geobet);
                     76:        ymp = georad*(sin(geolam)*cos(geobet)*cos(tobliq) - sin(tobliq)*sin(geobet));
                     77:        zmp = georad*(sin(geolam)*cos(geobet)*sin(tobliq) + cos(tobliq)*sin(geobet));
                     78: 
                     79:        alpha = atan2(ymp, xmp);
                     80:        delta = atan2(zmp, sqrt(xmp*xmp+ymp*ymp));
                     81: 
                     82:        hp = 8.794e0*radsec/georad;
                     83:        semi /= georad;
                     84:        georad = radtemp;
                     85:        if(rad > 0. && rad < 2.e5)
                     86:                mag += 2.17*log(rad*georad);
                     87: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.