13e12c5d1SDavid du Colombier #include "astro.h"
23e12c5d1SDavid du Colombier
33e12c5d1SDavid du Colombier char* startab = "/lib/sky/estartab";
43e12c5d1SDavid du Colombier
53e12c5d1SDavid du Colombier void
stars(void)63e12c5d1SDavid du Colombier stars(void)
73e12c5d1SDavid du Colombier {
83e12c5d1SDavid du Colombier double lomoon, himoon, sd;
93e12c5d1SDavid du Colombier int wrap, f, i;
103e12c5d1SDavid du Colombier char *saop;
113e12c5d1SDavid du Colombier static char saoa[100];
123e12c5d1SDavid du Colombier
133e12c5d1SDavid du Colombier sd = 1000*radsec;
143e12c5d1SDavid du Colombier lomoon = omoon.point[0].ra - sd;
153e12c5d1SDavid du Colombier if(lomoon < 0)
163e12c5d1SDavid du Colombier lomoon += pipi;
173e12c5d1SDavid du Colombier himoon = omoon.point[NPTS+1].ra + sd;
183e12c5d1SDavid du Colombier if(himoon > pipi)
193e12c5d1SDavid du Colombier himoon -= pipi;
203e12c5d1SDavid du Colombier lomoon *= 12/pi;
213e12c5d1SDavid du Colombier himoon *= 12/pi;
223e12c5d1SDavid du Colombier wrap = 0;
233e12c5d1SDavid du Colombier if(lomoon > himoon)
243e12c5d1SDavid du Colombier wrap++;
253e12c5d1SDavid du Colombier
263e12c5d1SDavid du Colombier f = open(startab, OREAD);
273e12c5d1SDavid du Colombier if(f < 0) {
283e12c5d1SDavid du Colombier fprint(2, "%s?\n", startab);
293e12c5d1SDavid du Colombier return;
303e12c5d1SDavid du Colombier }
313e12c5d1SDavid du Colombier epoch = 1950.0;
32*59cc4ca5SDavid du Colombier epoch = (epoch-1900.0) * 365.24220 + 0.313;
333e12c5d1SDavid du Colombier saop = saoa;
343e12c5d1SDavid du Colombier
353e12c5d1SDavid du Colombier /*
363e12c5d1SDavid du Colombier * read mean places of stars at epoch of star table
373e12c5d1SDavid du Colombier */
383e12c5d1SDavid du Colombier
393e12c5d1SDavid du Colombier loop:
403e12c5d1SDavid du Colombier if(rline(f)) {
413e12c5d1SDavid du Colombier close(f);
423e12c5d1SDavid du Colombier return;
433e12c5d1SDavid du Colombier }
443e12c5d1SDavid du Colombier rah = atof(line+17);
453e12c5d1SDavid du Colombier ram = atof(line+20);
463e12c5d1SDavid du Colombier ras = atof(line+23);
473e12c5d1SDavid du Colombier
483e12c5d1SDavid du Colombier alpha = rah + ram/60 + ras/3600;
493e12c5d1SDavid du Colombier if(wrap == 0) {
503e12c5d1SDavid du Colombier if(alpha < lomoon || alpha > himoon)
513e12c5d1SDavid du Colombier goto loop;
523e12c5d1SDavid du Colombier } else
533e12c5d1SDavid du Colombier if(alpha < lomoon && alpha > himoon)
543e12c5d1SDavid du Colombier goto loop;
553e12c5d1SDavid du Colombier
563e12c5d1SDavid du Colombier sao = atof(line+0);
573e12c5d1SDavid du Colombier sprint(saop, "%ld", sao);
583e12c5d1SDavid du Colombier da = atof(line+30);
593e12c5d1SDavid du Colombier dday = atof(line+37);
603e12c5d1SDavid du Colombier dmin = atof(line+41);
613e12c5d1SDavid du Colombier dsec = atof(line+44);
623e12c5d1SDavid du Colombier dd = atof(line+50);
633e12c5d1SDavid du Colombier px = atof(line+57);
643e12c5d1SDavid du Colombier mag = atof(line+61);
653e12c5d1SDavid du Colombier
663e12c5d1SDavid du Colombier /*
673e12c5d1SDavid du Colombier * convert rt ascension and declination to internal format
683e12c5d1SDavid du Colombier */
693e12c5d1SDavid du Colombier
703e12c5d1SDavid du Colombier delta = fabs(dday) + dmin/60 + dsec/3600;
713e12c5d1SDavid du Colombier if(dday < 0)
723e12c5d1SDavid du Colombier delta = -delta;
733e12c5d1SDavid du Colombier
743e12c5d1SDavid du Colombier star();
753e12c5d1SDavid du Colombier /*
763e12c5d1SDavid du Colombier * if(fabs(beta) > 6.55*radian)
773e12c5d1SDavid du Colombier * goto loop;
783e12c5d1SDavid du Colombier */
793e12c5d1SDavid du Colombier sd = .0896833e0*cos(beta)*sin(lambda-1.3820+.00092422117*eday)
803e12c5d1SDavid du Colombier + 0.99597*sin(beta);
813e12c5d1SDavid du Colombier if(fabs(sd) > .0183)
823e12c5d1SDavid du Colombier goto loop;
833e12c5d1SDavid du Colombier
843e12c5d1SDavid du Colombier for(i=0; i<=NPTS+1; i++)
853e12c5d1SDavid du Colombier setobj(&ostar.point[i]);
863e12c5d1SDavid du Colombier
873e12c5d1SDavid du Colombier occult(&omoon, &ostar, 0);
887dd7cddfSDavid du Colombier if(occ.t1 >= 0 || occ.t5 >= 0) {
893e12c5d1SDavid du Colombier i = PTIME;
903e12c5d1SDavid du Colombier if(mag > 2)
913e12c5d1SDavid du Colombier i |= DARK;
923e12c5d1SDavid du Colombier if(mag < 5)
933e12c5d1SDavid du Colombier i |= SIGNIF;
947dd7cddfSDavid du Colombier if(occ.t1 >= 0 && occ.e1 >= 0)
953e12c5d1SDavid du Colombier event("Occultation of SAO %s begins at ",
963e12c5d1SDavid du Colombier saop, "", occ.t1, i);
977dd7cddfSDavid du Colombier if(occ.t5 >= 0 && occ.e5 >= 0)
983e12c5d1SDavid du Colombier event("Occultation of SAO %s ends at ",
993e12c5d1SDavid du Colombier saop, "", occ.t5, i);
1003e12c5d1SDavid du Colombier while(*saop++)
1013e12c5d1SDavid du Colombier ;
1023e12c5d1SDavid du Colombier }
1033e12c5d1SDavid du Colombier goto loop;
1043e12c5d1SDavid du Colombier }
105