Blob
1 #include "astro.h"3 char* startab;5 void6 stars(void)7 {8 double lomoon, himoon, sd;9 int wrap, f, i;10 char *saop;11 static char saoa[100];13 sd = 1000*radsec;14 lomoon = omoon.point[0].ra - sd;15 if(lomoon < 0)16 lomoon += pipi;17 himoon = omoon.point[NPTS+1].ra + sd;18 if(himoon > pipi)19 himoon -= pipi;20 lomoon *= 12/pi;21 himoon *= 12/pi;22 wrap = 0;23 if(lomoon > himoon)24 wrap++;26 f = open(startab, OREAD);27 if(f < 0) {28 fprint(2, "%s?\n", startab);29 return;30 }31 epoch = 1950.0;32 epoch = (epoch-1900.0) * 365.24220 + 0.313;33 saop = saoa;35 /*36 * read mean places of stars at epoch of star table37 */39 loop:40 if(rline(f)) {41 close(f);42 return;43 }44 rah = atof(line+17);45 ram = atof(line+20);46 ras = atof(line+23);48 alpha = rah + ram/60 + ras/3600;49 if(wrap == 0) {50 if(alpha < lomoon || alpha > himoon)51 goto loop;52 } else53 if(alpha < lomoon && alpha > himoon)54 goto loop;56 sao = atof(line+0);57 sprint(saop, "%ld", sao);58 da = atof(line+30);59 dday = atof(line+37);60 dmin = atof(line+41);61 dsec = atof(line+44);62 dd = atof(line+50);63 px = atof(line+57);64 mag = atof(line+61);66 /*67 * convert rt ascension and declination to internal format68 */70 delta = fabs(dday) + dmin/60 + dsec/3600;71 if(dday < 0)72 delta = -delta;74 star();75 /*76 * if(fabs(beta) > 6.55*radian)77 * goto loop;78 */79 sd = .0896833e0*cos(beta)*sin(lambda-1.3820+.00092422117*eday)80 + 0.99597*sin(beta);81 if(fabs(sd) > .0183)82 goto loop;84 for(i=0; i<=NPTS+1; i++)85 setobj(&ostar.point[i]);87 occult(&omoon, &ostar, 0);88 if(occ.t1 >= 0 || occ.t5 >= 0) {89 i = PTIME;90 if(mag > 2)91 i |= DARK;92 if(mag < 5)93 i |= SIGNIF;94 if(occ.t1 >= 0 && occ.e1 >= 0)95 event("Occultation of SAO %s begins at ",96 saop, "", occ.t1, i);97 if(occ.t5 >= 0 && occ.e5 >= 0)98 event("Occultation of SAO %s ends at ",99 saop, "", occ.t5, i);100 while(*saop++)101 ;102 }103 goto loop;104 }