home *** CD-ROM | disk | FTP | other *** search
- 10 PRINT "***PROGRAM STARFIX***"
- 11 VAR P,R1,F1,J,J1,A,R,D1,L1,L2,D,T,J0,T1,C1,T5,T2,S0=REAL.DOUBLE
- 12 VAR S1,A4,M1,H,C2,S2=REAL.DOUBLE
- 13 VAR F9,Y,M,D2,S,A1,A2,A3=REAL
- 14 VAR E$,A$,S$,N$=STRING
- 15 LPRINTER
- 20 LET F9=1
- 30 PRINT "OBJECT NAME: ";
- 40 REM THIS IS PROGRAM STARFIX
- 50 REM THIS VERSION RUNS ON NEVADA BASIC 12 BY ELLIS COMPUTING
- 60 REM THIS IS THE 12 DIGIT PRECISSION VERSION IN THE PACKAGE
- 70 REM IT WILL CALCULATE THE ALTITUDE AND AZMUTH OF ANY CELESTIAL BODY
- 80 REM GIVEN THE LATITUDE AND LONGITUDE OF THE OBSERVER,
- 90 REM THE RIGHT ASCENTION AND DECLINATION OF THE CELESTIAL BODY
- 100 REM AND THE SIDEARIAL TIME AT GREENWICH DETERMINED BY
- 110 REM THE IAU FORMULA FOR GST FROM UNIVERSAL TIME
- 120 REM THIS PROGRAM LOOPS BACK TO GET ANOTHER TIME FOR THE OBSERVATION
- 130 REM TO GET OUT OF LOOP ENTER <CONT>-C.
- 140 REM THIS VERSION BY M. P. FINERTY, MAY 31, 1984
- 150 REM ALTITUDE AND AZMUTH FROM RA AND DEC + LST
- 160 LET P=3.141592654
- 170 LET R1=P/180
- 175 CONSOLE
- 180 PRINT "INPUT OBJECT NAME"
- 185 LPRINTER
- 190 INPUT N$
- 200 PRINT N$
- 205 CONSOLE
- 210 PRINT "INPUT RIGHT ASCENTION"
- 220 INPUT "H= ",A1
- 230 INPUT "M= ",A2
- 240 INPUT "S= ",A3
- 250 PRINT "RA = ";A1;" HRS ";A2;" MINS ";A3;" SECS"
- 260 PRINT "IS THIS CORRECT? Y?/N?"
- 270 INPUT A$
- 280 IF A$="N" THEN 210
- 290 IF A$<>"Y" THEN 210
- 300 GOSUB 1340
- 310 LET R=A*15*R1
- 315 LPRINTER
- 320 PRINT "RIGHT ASCENTION IN DECIMAL DEGREES IS: ";R/R1
- 325 CONSOLE
- 330 PRINT "INPUT DECLINATION"
- 340 INPUT "DEGREES ",A1
- 350 INPUT "MINUTES ",A2
- 360 INPUT "SECONDS ",A3
- 370 PRINT "IS THIS NORTH OR SOUTH, N?/S?"
- 380 INPUT S$
- 390 PRINT "DECLINATION = ";A1;" DEG ";A2;" MIN ";A3;" SEC ";S$
- 400 PRINT "IS THIS CORRECT? Y?/N?"
- 410 INPUT A$
- 420 IF A$="N" THEN 330
- 430 IF A$<>"Y" THEN 330
- 440 GOSUB 1340
- 450 LET D1=A*R1
- 460 IF F9=2 THEN RETURN
- 465 LPRINTER
- 470 PRINT "DECLINATION IN DECIMAL DEGREES IS: ";D1/R1
- 474 CONSOLE
- 480 PRINT "INPUT LATITUDE"
- 490 INPUT "DEGREES ",A1
- 500 INPUT "MINUTES ",A2
- 510 INPUT "SECONDS ",A3
- 520 PRINT "IS LATITUDE NORTH OR SOUTH? N?/S?"
- 530 INPUT S$
- 540 PRINT "LATITUDE IS: ";A1;" DEGREES ";A2;" MINUTES ";A3;" SECONDS ";S$
- 550 PRINT "IS THIS CORRECT? Y?/N?"
- 560 INPUT A$
- 570 IF A$="N" THEN 480
- 580 IF A$<>"Y" THEN 480
- 590 GOSUB 1340
- 600 LET L1=A*R1
- 605 LPRINTER
- 610 PRINT "OBSERVERS POSITION"
- 620 PRINT "LATITUDE IN DECIMAL DEGREES IS: ";L1/R1
- 625 CONSOLE
- 630 PRINT "INPUT LONGITUDE"
- 640 INPUT "DEGREES ",A1
- 650 INPUT "MINUTES ",A2
- 660 INPUT "SECONDS ",A3
- 670 PRINT "IS LONGITUDE EAST OR WEST? E?/W?"
- 680 INPUT E$
- 690 IF E$="E" THEN LET S$="N" ELSE LET S$="S"
- 700 PRINT "LONGITUDE IS: ";A1;" DEGREES ";A2;" MINUTES ";A3;" SECONDS ";E$
- 710 PRINT "IS THIS CORRECT? Y?/N?"
- 720 INPUT A$
- 730 IF A$="N" THEN 630
- 740 IF A$<>"Y" THEN 630
- 750 GOSUB 1340
- 760 LET L2=A*R1
- 765 LPRINTER
- 770 PRINT "LONGITUDE IN DECIMAL DEGREES IS: ";L2/R1
- 780 GOSUB 1370
- 790 GOSUB 1470
- 800 GOSUB 1740
- 810 LET A1=H
- 820 LET A2=M
- 830 LET A3=S
- 840 LET S$="N"
- 850 GOSUB 1340
- 860 LET T=A*15*R1
- 870 REM T5 IS LHA
- 880 LET T5=T-R+L2
- 890 IF T5<0 THEN LET T5=T5+2*P
- 900 IF T5>2*P THEN LET T5=T5-2*P
- 910 PRINT "LOCAL HOUR ANGLE: ";T5/R1;" DEGREES"
- 920 LPRINTER
- 930 PRINT "LOCAL HOUR ANGLE: ";T5/R1;" DEGREES"
- 940 REM CALCULATE AZMUTH (A) AND ALTITUDE(H)
- 950 LET S1=SIN(L1)*SIN(D1)
- 960 LET S1=S1+COS(L1)*COS(D1)*COS(T5)
- 970 LET C1=1-S1*S1
- 980 IF C1>0 THEN LET C1=SQR(C1)
- 990 IF C1<=0 THEN 1020
- 1000 LET H=ATN(S1/C1)
- 1010 GOTO 1030
- 1020 LET H=SGN(S1)*P/2
- 1030 LET C2=COS(L1)*SIN(D1)
- 1040 LET C2=C2-SIN(L1)*COS(D1)*COS(T5)
- 1050 LET S2=-(COS(D1)*SIN(T5))
- 1060 IF C2=0 THEN LET A=SGN(S2)*P/2
- 1070 IF C2=0 THEN 1120
- 1080 LET A=ATN(S2/C2)
- 1090 IF S2<0 AND C2>0 THEN LET A=2*P-ABS(A)
- 1100 IF S2<0 AND C2<0 THEN LET A=P+ABS(A)
- 1110 IF S2>0 AND C2<0 THEN LET A=P-ABS(A)
- 1120 IF A<0 THEN LET A=A+2*P
- 1130 IF A>2*P THEN LET A=A-2*P
- 1135 CONSOLE
- 1140 PRINT "ALTITUDE: ";H/R1
- 1150 IF H<=0 THEN PRINT "DOWN" ELSE PRINT "UP"
- 1160 PRINT "AZMUTH: ";A/R1
- 1170 PRINT "--ooOOOoo--"
- 1180 PRINT
- 1190 PRINT
- 1195 LPRINTER
- 1200 PRINT
- 1210 PRINT "ALTITUDE IN DEGREES: ";H/R1;" AZMUTH IN DEGREES: ";A/R1
- 1220 PRINT "--ooOOOoo--"
- 1230 PRINT
- 1240 PRINT
- 1245 CONSOLE
- 1250 PRINT "DO YOU WANT ANOTHER TIME AND DAY? Y?/N?"
- 1260 INPUT A$
- 1270 IF A$="Y" THEN 780
- 1280 PRINT "DO YOU WANT ANOTHER OBJECT?"
- 1290 INPUT A$
- 1300 LET F9=2
- 1310 IF A$="Y" THEN GOSUB 30 ELSE END
- 1320 GOTO 870
- 1330 REM HERE BEGIN THE SUBROUTINES
- 1340 IF S$<>"S" THEN LET S=1 ELSE LET S=-1
- 1350 LET A=S*(A1+A2/60+A3/3600)
- 1360 RETURN
- 1370 REM CALCULATE GST
- 1375 CONSOLE
- 1380 PRINT "INPUT YEAR, MONTH, DAY, GREGORIAN CALENDAR"
- 1390 INPUT "YEAR ",Y
- 1400 INPUT "MONTH ",M
- 1410 INPUT "DAY ",D2
- 1420 PRINT Y;" YEAR ";M;" MONTH ";D2;" DAY "
- 1430 PRINT "IS THIS CORRECT? Y?/N?"
- 1440 INPUT A$
- 1450 IF A$="N" THEN 1380
- 1460 RETURN
- 1470 IF A$<>"Y" THEN 1380
- 1475 LPRINTER
- 1480 PRINT "DATE OF OBSERVATION OR PROJECTION"
- 1490 PRINT D2;" DAY ";M;" MONTH,";Y
- 1500 REM CALCULATE FRACTION OF A DAY
- 1505 CONSOLE
- 1510 PRINT "INPUT HOURS MINUTES AND SECONDS, GREGORIAN CALANDAR"
- 1520 INPUT "HOURS ",A1
- 1530 INPUT "MINUTES ",A2
- 1540 INPUT "SECONDS ",A3
- 1550 PRINT A1;" HOURS ";A2;" MINUTES AND ";A3;" SECONDS"
- 1560 PRINT "IS THIS CORRECT? Y?/N?"
- 1570 INPUT A$
- 1580 IF A$="N" THEN 1510
- 1590 IF A$<>"Y" THEN 1510
- 1595 LPRINTER
- 1600 PRINT "TIME OF OBSERVATION OR PROJECTION"
- 1610 PRINT A1;":";A2;":";A3
- 1620 LET F1=(A3+60*A2+3600*A1)/86400-0.5
- 1630 LET J=-INT(7*(INT((M+9)/12)+Y)/4)
- 1640 LET S=SGN(M-9)
- 1650 LET A4=ABS(M-9)
- 1660 LET J1=INT(Y+S*INT(A4/7))
- 1670 LET J1=-INT((INT(J1/100)+1)*3/4)
- 1680 LET J=J+INT(275*M/9)+D2+J1
- 1690 LET J=J+1721028+367*Y
- 1695 CONSOLE
- 1700 PRINT "JULIAN DAY ";J;" FRACTION OF A DAY ";F1
- 1705 LPRINTER
- 1710 PRINT
- 1720 PRINT "JULIAN DAY NUMBER: ";J;" FRACTION OF DAY: ";F1
- 1730 RETURN
- 1740 REM CDOMPUTE GREENWICH MEAN SIDERIAL TIME
- 1750 LET D=J-2451545
- 1760 LET T=D/36525
- 1770 LET T1=INT(T)
- 1780 LET J0=T1*36525+2451545
- 1790 LET T2=(J-J0+0.5)/36525
- 1800 LET S0=24110.54841+184.812866*T1
- 1810 LET S0=S0+8640184.81286*T2
- 1820 LET S0=S0+(0.093104*T*T)
- 1830 LET S0=S0-(0.0000062*T*T*T)
- 1840 LET S0=S0/86400
- 1850 LET S1=INT(S0)
- 1860 LET S0=S0-S1
- 1870 LET S0=24*(S0+(F1+0.5)*1.002737909)
- 1880 IF S0<0 THEN LET S0=S0+24
- 1890 IF S0>24 THEN LET S0=S0-24
- 1900 LET H=INT(S0)
- 1910 LET M1=60*(S0-H)
- 1920 LET M=INT(M1)
- 1930 LET S=60*(M1-M)
- 1935 CONSOLE
- 1940 PRINT "GMST: ";H;" HOURS ";M;" MINUTES AND ";S;" SECONDS"
- 1950 RETURN
- SGN(M-9)
- 1650 LET A4=ABS(M-9)