|
|
1.1 ! root 1: int flags; ! 2: double wlong, awlong, nlat, elev; ! 3: double obliq, phi, eps, tobliq; ! 4: double dphi, deps; ! 5: double day, deld; ! 6: double eday, capt, capt2, capt3, gst; ! 7: double pi, radian, radsec, deltat; ! 8: double erad, glat; ! 9: double xms, yms, zms; ! 10: double xdot, ydot, zdot; ! 11: double ecc, incl, node, argp, mrad, anom, motion; ! 12: double lambda, beta, rad, mag, semi; ! 13: double alpha, delta, rp, hp; ! 14: double ra, decl, semi2; ! 15: double lha, decl2, lmb2; ! 16: double az, el; ! 17: double meday, seday, mhp, salph, sdelt, srad; ! 18: double rah, ram, ras, dday, dmin, dsec; ! 19: long agc; ! 20: double da, dd, px, epoch; ! 21: char line[100]; ! 22: double sin(); ! 23: double cos(); ! 24: double floor(); ! 25: double ltod(); ! 26: double sqrt(); ! 27: double pyth(); ! 28: double fmod(); ! 29: double atan2(); ! 30: double log(); ! 31: double fabs(); ! 32: double dist(); ! 33: double rise(); ! 34: double set(); ! 35: double melong(); ! 36: double solstice(); ! 37: double betcross(); ! 38: int evcomp(); ! 39: long time(); ! 40: double sunel(); ! 41: double readate(); ! 42: double convdate(); ! 43: double ltod(); ! 44: double atof(); ! 45: double cosadd(); ! 46: double sinadd(); ! 47: char * skip(); ! 48: struct obj1 ! 49: { ! 50: double ra; ! 51: double decl2; ! 52: double semi2; ! 53: double az; ! 54: double el; ! 55: double mag; ! 56: }; ! 57: struct obj2 ! 58: { ! 59: char *name; ! 60: int (*obj)(); ! 61: struct obj1 point[12+2]; ! 62: } ! 63: osun, omoon, oshad, omerc, ovenus, ! 64: omars, osat, ojup, ostar; ! 65: extern struct obj2 *objlst[]; ! 66: struct obj3 ! 67: { ! 68: double t1; ! 69: double t2; ! 70: double t3; ! 71: double t4; ! 72: double t5; ! 73: } occ; ! 74: extern int dmo[]; ! 75: extern struct _iobuf { ! 76: int _cnt; ! 77: unsigned char *_ptr; ! 78: unsigned char *_base; ! 79: short _flag; ! 80: char _file; ! 81: } _iob[20]; ! 82: struct _iobuf *fopen(); ! 83: struct _iobuf *fdopen(); ! 84: struct _iobuf *freopen(); ! 85: long ftell(); ! 86: char *fgets(); ! 87: main(argc, argv) ! 88: char *argv[]; ! 89: { ! 90: register i, j; ! 91: double d; ! 92: pi = 3.1415926535897932; ! 93: radian = pi/180.; ! 94: radsec = radian/3600.; ! 95: args(argc, argv); ! 96: init(); ! 97: deld = 1.0/12; ! 98: loop: ! 99: d = day; ! 100: pdate(d); ! 101: if(flags & 8) { ! 102: printf(" "); ! 103: ptime(d); ! 104: } ! 105: printf("\n"); ! 106: for(i=0; i<=12+1; i++) { ! 107: setime(d); ! 108: for(j=0; objlst[j]; j++) { ! 109: (*objlst[j]->obj)(); ! 110: setobj(&objlst[j]->point[i]); ! 111: if(flags & 8) ! 112: output(objlst[j]->name, &objlst[j]->point[i]); ! 113: } ! 114: d += deld; ! 115: if(flags & 8) ! 116: exit(0); ! 117: } ! 118: search(); ! 119: day += 1.0; ! 120: if(flags & 1) ! 121: goto loop; ! 122: exit(0); ! 123: } ! 124: args(argc, argv) ! 125: char *argv[]; ! 126: { ! 127: register char *p; ! 128: long t; ! 129: p = ""; ! 130: if(argc > 1) ! 131: p = argv[1]; ! 132: while(*p) ! 133: switch(*p++) { ! 134: case 'd': ! 135: flags |= 64; ! 136: continue; ! 137: case 'l': ! 138: flags |= 128; ! 139: continue; ! 140: case 'c': ! 141: flags |= 1; ! 142: continue; ! 143: case 'p': ! 144: flags |= 8; ! 145: continue; ! 146: case 's': ! 147: flags |= 4; ! 148: continue; ! 149: case 'a': ! 150: flags |= 16; ! 151: continue; ! 152: case 't': ! 153: flags |= 256; ! 154: continue; ! 155: case 'o': ! 156: flags |= 2; ! 157: continue; ! 158: case 'k': ! 159: flags |= 512; ! 160: continue; ! 161: case '-': ! 162: continue; ! 163: default: ! 164: printf("unknown option '%c'\n", p[-1]); ! 165: } ! 166: t = time((int *)0); ! 167: day = t/86400. + 25567.5; ! 168: if(flags & 64) ! 169: day = readate(); ! 170: awlong = (74. + 32./60.)*radian; ! 171: nlat = (40. + 40./60.)*radian; ! 172: elev = 0.; ! 173: if(flags & 128) ! 174: readlat(); ! 175: } ! 176: double ! 177: readate() ! 178: { ! 179: register i; ! 180: double ifa[5]; ! 181: printf("year mo da hr min\n"); ! 182: rline((&_iob[0])); ! 183: for(i=0; i<5; i++) ! 184: ifa[i] = atof(skip(i)); ! 185: return(convdate(ifa)); ! 186: } ! 187: double ! 188: convdate(ifa) ! 189: double ifa[]; ! 190: { ! 191: double y, d; ! 192: register i; ! 193: y = ifa[0]; ! 194: i = (int)ifa[1]; ! 195: d = ifa[2]; ! 196: while(i < 1) { ! 197: i += 12; ! 198: y -= 1.; ! 199: } ! 200: while(i > 12) { ! 201: i -= 12; ! 202: y += 1.; ! 203: } ! 204: if(y < 0.) ! 205: y += 1.; ! 206: y += 4712.; ! 207: if(fmod(y, 4.) == 0 && i > 2) ! 208: d += 1.; ! 209: y = y*365. + ! 210: floor((y+3.)/4.) + ! 211: dmo[i-1] + d - 1.; ! 212: if(y > 2361232.) ! 213: y -= floor((y-1794167.)/36525.) - ! 214: floor((y-1721117.)/146100.); ! 215: y += ifa[3]/24. + ifa[4]/1440. - .5; ! 216: return(y-2415020.); ! 217: } ! 218: readlat() ! 219: { ! 220: register i; ! 221: double ifa[3]; ! 222: printf("wlong nlat elev\n"); ! 223: rline((&_iob[0])); ! 224: for(i=0; i<3; i++) ! 225: ifa[i] = atof(skip(i)); ! 226: awlong = ifa[0] * radian; ! 227: nlat = ifa[1] * radian; ! 228: elev = ifa[2]; ! 229: } ! 230: double ! 231: fmod(a, b) ! 232: double a, b; ! 233: { ! 234: return(a - floor(a/b)*b); ! 235: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.