Annotation of researchv10no/cmd/sky/main.c, revision 1.1

1.1     ! root        1: #include "sky.h"
        !             2: #include <stdio.h>
        !             3: 
        !             4: main(argc,argv)
        !             5: int argc;
        !             6: char *argv[];
        !             7: {
        !             8: 
        !             9:        pi = 3.1415926535897932;
        !            10:        radian = pi/180.;
        !            11:        radsec = radian/3600.;
        !            12:        args(argc,argv);
        !            13:        init();
        !            14: 
        !            15: 
        !            16:        for(;;){
        !            17:                day = readate();
        !            18:                printf("Date: ");
        !            19:                pdate(day);
        !            20:                printf("\n");
        !            21:                printf("Time: ");
        !            22:                ptime(day);
        !            23:                printf("\n");
        !            24:                if(day < 0.)
        !            25:                        printf("Julian date %.4f\n", day+2415020.);
        !            26:                setime(day);
        !            27: 
        !            28:        if(flags&TOPO){
        !            29:                printf("               rt. ascens.      decl.       az.     elev.    semi.\n");
        !            30:        }
        !            31: 
        !            32:                if((flags&HELIO)==0){
        !            33:                        lambda = 0.;
        !            34:                        beta = 0.;
        !            35:                        rad = 0.;
        !            36:                        ldot = 0.;
        !            37:                        rdot = 0.;
        !            38:                        bdot = 0.;
        !            39:                }else{
        !            40:                        object = "earth       ";
        !            41:                }
        !            42:                helio();
        !            43: 
        !            44: /*
        !            45:  *     Shadow computation for lunar eclipse.
        !            46:  */
        !            47: 
        !            48:                rps = georad;
        !            49:                shra = alpha + 180.*radian;
        !            50:                shdecl = -delta;
        !            51: 
        !            52:                geo();
        !            53: 
        !            54: /*
        !            55:  *     Computation for solar eclipse.
        !            56:  */
        !            57: 
        !            58:                sunra = ra;
        !            59:                sundec = decl2;
        !            60:                sunsd = semi2;
        !            61: 
        !            62:                output();
        !            63: 
        !            64:                moon();
        !            65:                output();
        !            66: 
        !            67:                merc();
        !            68:                output();
        !            69: 
        !            70:                venus();
        !            71:                output();
        !            72: 
        !            73:                mars();
        !            74:                output();
        !            75: 
        !            76:                jup();
        !            77:                output();
        !            78: 
        !            79:                sat();
        !            80:                output();
        !            81: 
        !            82:                if((flags&NOSTAR)==0){
        !            83:                        stars();
        !            84:                }
        !            85: 
        !            86:        }
        !            87: 
        !            88: }
        !            89: 
        !            90: args(argc,argv)
        !            91: int argc;
        !            92: char *argv[];
        !            93: {
        !            94:        register char *p, *q;
        !            95: 
        !            96:        p = "";
        !            97:        if(argc>1)
        !            98:                p = argv[1];
        !            99:        while(*p)
        !           100:        switch(*p++){
        !           101: 
        !           102: /*
        !           103:  *     Meanings of options.
        !           104:  *
        !           105:  *     APPARENT: Catalogue apparent place omits
        !           106:  *     short period terms of nutation for direct
        !           107:  *     comparison with "Apparent Places of
        !           108:  *     Fundamental Stars".
        !           109:  *
        !           110:  *     OCCULT: Changes the semidiameters of the
        !           111:  *     sun and moon, and moves the moon slightly.
        !           112:  *
        !           113:  *     LATUD: prompts for longitude, latitude and elevation.
        !           114:  *
        !           115:  *     MEAN: omits all nutation, for direct comparison
        !           116:  *     with star catalogs. Also omits the E-terms of nutation.
        !           117:  *
        !           118:  *     NOSTAR: Solar system only.
        !           119:  *
        !           120:  *     STCATL: Prompts for name of file containing star catalog.
        !           121:  *
        !           122:  *     XYZ: Prints x,y,z, coordinates vice angles.
        !           123:  *
        !           124:  *     GEO: Reports apparent geocentric place.
        !           125:  *
        !           126:  *     HELIO: Reports heliocentric place.
        !           127:  *
        !           128:  *     TOPO: Reports topocentric place.Default location
        !           129:  *     is the hollyhock in Morris's back yard.
        !           130:  *
        !           131:  *     ECLIPTIC: Reports places in ecliptic vs. equatorial coords.
        !           132:  *
        !           133:  *     KITCH: Input times are interpreted as local time
        !           134:  *     vs. Greenwich time (but still E.T.)
        !           135:  */
        !           136: 
        !           137:        case 'a':
        !           138:                flags |= APPARENT;
        !           139:                continue;
        !           140: 
        !           141:        case 'e':
        !           142:                flags |= OCCULT;
        !           143:                continue;
        !           144: 
        !           145:        case 'l':
        !           146:                flags |= LATUD;
        !           147:                continue;
        !           148: 
        !           149:        case 'm':
        !           150:                flags |= MEAN;
        !           151:                continue;
        !           152: 
        !           153:        case 'n':
        !           154:                flags |= GOOBIE;
        !           155: 
        !           156:        case 'p':
        !           157:                flags |= NOSTAR;
        !           158:                continue;
        !           159: 
        !           160:        case 's':
        !           161:                flags |= STCATL;
        !           162:                continue;
        !           163:        case 'x':
        !           164:                flags |= XYZ;
        !           165:                continue;
        !           166: 
        !           167:        case 'g':
        !           168:                flags |= GEO;
        !           169:                continue;
        !           170: 
        !           171:        case 'h':
        !           172:                flags |= HELIO;
        !           173:                continue;
        !           174: 
        !           175:        case 'c':
        !           176:                flags |= ECLIPTIC;
        !           177:                continue;
        !           178: 
        !           179:        case '-':
        !           180:                continue;
        !           181: 
        !           182:        default:
        !           183:                printf("Unknown option '%c'\n",p[-1]);
        !           184:        }
        !           185:        if(!((flags&GEO)||(flags&HELIO))){
        !           186:                flags |= TOPO;
        !           187:        }
        !           188: 
        !           189: }
        !           190: 
        !           191: readlat()
        !           192: {
        !           193:        register i;
        !           194:        double ifa[3];
        !           195: 
        !           196:        printf("NLat(deg) WLong(deg) elev(meters)\n");
        !           197:        rline(stdin);
        !           198:        for(i=0; i<3; i++)
        !           199:                ifa[i] = atof(skip(i));
        !           200:        nlat = ifa[0] * radian;
        !           201:        wlong = ifa[1] * radian;
        !           202:        elev = ifa[2];
        !           203: }
        !           204: 
        !           205: readcat()
        !           206: {
        !           207:        char *gets();
        !           208:        char *p;
        !           209: 
        !           210:        printf("Enter name of star catalog: ");
        !           211:        p = startab;
        !           212:        gets(p);
        !           213: }
        !           214: 
        !           215: init()
        !           216: {
        !           217: 
        !           218:        register char *p, *q;
        !           219: 
        !           220:        wlong = (74.+32./60.)*radian;
        !           221:        nlat = (40.+40./60.)*radian;
        !           222:        elev = 0.;
        !           223:        if(flags & LATUD)
        !           224:                readlat();
        !           225:        prlat();
        !           226:        glat = nlat - (692.74*radsec)*sin(2.*nlat)
        !           227:                 + (1.16*radsec)*sin(4.*nlat);
        !           228:        erad = .99832707 + .00167644*cos(2.*nlat)
        !           229:                 - 0.352e-5*cos(4.*nlat)
        !           230:                 + 0.001e-5*cos(6.*nlat)
        !           231:                 + 0.1568e-6*elev;
        !           232:        q = "/usr/lib/startab";
        !           233:        for(p = startab; *p++ = *q++;)
        !           234:                ;
        !           235:        if(flags & STCATL)
        !           236:                readcat();
        !           237: /*
        !           238:        printf("%s\n", startab);
        !           239: */
        !           240: }
        !           241: rline(f)
        !           242: FILE *f;
        !           243: {
        !           244:        register char *p;
        !           245:        register c;
        !           246: 
        !           247:        p = line;
        !           248:        do {
        !           249:                c = getc(f);
        !           250:                if(c < 0)
        !           251:                        return(1);
        !           252:                *p++ = c;
        !           253:        } while(c != '\n');
        !           254:        return(0);
        !           255: }
        !           256: 
        !           257: char*
        !           258: skip(n)
        !           259: {
        !           260:        register i;
        !           261:        register char *cp;
        !           262: 
        !           263:        cp = line;
        !           264:        for(i=0; i<n; i++) {
        !           265:                while(*cp == ' ' || *cp == '\t')
        !           266:                        cp++;
        !           267:                while(*cp != '\n' && *cp != ' ' && *cp != '\t')
        !           268:                        cp++;
        !           269:        }
        !           270:        while(*cp == ' ' || *cp == '\t')
        !           271:                cp++;
        !           272:        return(cp);
        !           273: }
        !           274: double
        !           275: readate()
        !           276: {
        !           277:        register i;
        !           278:        double ifa[5];
        !           279: 
        !           280:        printf("year mo da hr min\n");
        !           281:        if(rline(stdin) != 0)
        !           282:                exit(0);
        !           283:        for(i=0; i<5; i++)
        !           284:                ifa[i] = atof(skip(i));
        !           285:        return(convdate(ifa));
        !           286: }
        !           287: 
        !           288: double
        !           289: convdate(ifa)
        !           290: double ifa[];
        !           291: {
        !           292:        double y, d, temp;
        !           293:        register i;
        !           294: 
        !           295:        y = ifa[0];
        !           296:        i = ifa[1];
        !           297:        d = ifa[2];
        !           298:        temp = 0.;
        !           299:        if(d>28.){
        !           300:                temp = d - 28.;
        !           301:                d = 28.;
        !           302:        }
        !           303:        while(i < 1) {
        !           304:                i += 12;
        !           305:                y -= 1.;
        !           306:        }
        !           307:        while(i > 12) {
        !           308:                i -= 12;
        !           309:                y += 1.;
        !           310:        }
        !           311:        if(y < 0.)
        !           312:                y += 1.;
        !           313:        y += 4712.;
        !           314:        if(fmod(y, 4.) == 0 && i > 2)
        !           315:                d += 1.;
        !           316:        y = y*365. +
        !           317:                floor((y+3.)/4.) +
        !           318:                dmo[i-1] + d - 1.;
        !           319:        if(y > 2361232.)
        !           320:                y -= floor((y-1794167.)/36525.) -
        !           321:                        floor((y-1721117.)/146100.);
        !           322:        y += ifa[3]/24. + ifa[4]/1440. - .5 + temp;
        !           323:        return(y-2415020.);
        !           324: }
        !           325: setime(day)
        !           326: double day;
        !           327: {
        !           328: 
        !           329: 
        !           330:        eday = day;
        !           331:        deltat = eday * .00167;
        !           332:        glong = wlong;
        !           333:        if(flags & OCCULT)
        !           334:                glong += 15.*deltat*radsec;
        !           335:        capt = eday/36525.;
        !           336:        capt2 = capt*capt;
        !           337:        capt3 = capt2*capt;
        !           338:        nutate();
        !           339: 
        !           340:        aberr();
        !           341: 
        !           342:        sun();
        !           343:        xms = rad*cos(beta)*cos(lambda);
        !           344:        yms = rad*cos(beta)*sin(lambda);
        !           345:        zms = rad*sin(beta);
        !           346: }
        !           347: 
        !           348: double
        !           349: fmod(x, y)
        !           350: double x, y;
        !           351: {
        !           352:        extern double modf();
        !           353:        double d;
        !           354: 
        !           355:        if (y == 0.0)
        !           356:                return (x);
        !           357:        modf(x/y, &d);
        !           358:        return (x - d * y);
        !           359: }

unix.superglobalmegacorp.com

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