tstars.c - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       tstars.c (1846B)
       ---
            1 #include "astro.h"
            2 
            3 char*        startab;
            4 
            5 void
            6 stars(void)
            7 {
            8         double lomoon, himoon, sd;
            9         int wrap, f, i;
           10         char *saop;
           11         static char saoa[100];
           12 
           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++;
           25 
           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;
           34 
           35 /*
           36  *        read mean places of stars at epoch of star table
           37  */
           38 
           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);
           47 
           48         alpha = rah + ram/60 + ras/3600;
           49         if(wrap == 0) {
           50                 if(alpha < lomoon || alpha > himoon)
           51                         goto loop;
           52         } else
           53                 if(alpha < lomoon && alpha > himoon)
           54                         goto loop;
           55 
           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);
           65 
           66 /*
           67  *        convert rt ascension and declination to internal format
           68  */
           69 
           70         delta = fabs(dday) + dmin/60 + dsec/3600;
           71         if(dday < 0)
           72                 delta = -delta;
           73 
           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;
           83 
           84         for(i=0; i<=NPTS+1; i++)
           85                 setobj(&ostar.point[i]);
           86 
           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 }