10 '============================================================== 20 ' ADAPTED FROM ASTRONMY.LBR, author unknown 30 ' Adaption: 21 Jul 87, Jim Lill 40 ' Combining the 3 individual programs into one with menu 50 ' Other changes: - Added better PI value technique 60 ' - Added CLS$ 70 ' - correct SOP error in DEC-RA (line 1560) 80 '=============================================================== 90 CLS$=CHR$(26): ' Set for your terminal 100 LAT = 43.5 : ' LAT is your Latitude in Decimal Degrees 110 '============================================================== 120 PI = 4 * ATN(1) : RAD = 180/PI 130 '============================================================== 140 ' The following are used in menu 2 but are placed here for convenience 150 ' K1,K2, AND K3 ARE CONSTANTS. K1 CHANGES EACH YEAR. 160 ' LONG IS YOUR LONGITUDE IN DECIMAL HOURS 170 ' TZ IS THE DIFFERENCE IN HOURS BETWEEN YOUR 180 ' TIME ZONE AND GREENWICH. 190 ' GMST IS GREENWICH MEAN SIDEREAL TIME 200 ' LMST IS LOCAL MEAN SIDEREAL TIME 210 ' 220 K1 = 6.606550000000003# : ' This is 1987 230 K2 = .06570982320000008# 240 K3 = 1.0027379093# 250 LONG = 5.1234 260 TZ = 5 270 '================================================================ 280 ' Start of actual program........ 290 ' MENU: 300 PRINT CLS$ 310 PRINT "Astronomy Programs":PRINT 320 PRINT "1- Find Altitude and Azimuth, given Right Ascension and Declination" 330 PRINT "2- Find Local Sidereal Time, given Day of Year and Local Time" 340 PRINT "3- Find Right Ascension and Declination, given ALT, AZ and LST" 350 PRINT "4- QUIT Program, Return to MBASIC":PRINT 360 INPUT "Enter Choice ==> ",CHOICE 370 IF CHOICE = 1 THEN GOTO 420 380 IF CHOICE = 2 THEN GOTO 950 390 IF CHOICE = 3 THEN GOTO 1270 400 IF CHOICE = 4 THEN STOP 410 GOTO 360 420 ' ************************ MENU CHOICE 1 *********************** 430 ' ------ALT/AZ CONVERSION ----------- 440 ' 450 ' -------INPUT OBJECT'S POSITION --------- 460 ' 470 PRINT CLS$ 480 PRINT "Find Altitude and Azimuth":PRINT:PRINT 490 PRINT "RA (HOURS)"; 500 INPUT RH 510 PRINT "RA (MINUTES)"; 520 INPUT RM 530 PRINT "RA (SECONDS)"; 540 INPUT RS 550 RA = RH + (RM/60) + (RS/3600) 560 PRINT 570 PRINT "DEC (DEGREES)"; 580 INPUT DD 590 PRINT "DEC (MINUTES)"; 600 INPUT DM 610 PRINT "DEC (SECONDS)"; 620 INPUT DS 630 DEC = DD + (DM/60) + (DS/3600) 640 ' 650 ' -------INPUT LMST & GET HA ----------- 660 ' 670 PRINT 680 PRINT "LMST (DECIMAL HOURS)"; 690 INPUT LMST 700 PRINT 710 HA = LMST - RA 720 HAD =HA *15 730 ' 740 ' ------ CONVERT TO RADIANS ---------- 750 ' 760 L = LAT / RAD 770 H = HAD / RAD 780 D = DEC / RAD 790 ' 800 ' ---------- CALCULATE ALT / AZ -------- 810 ' 820 A = ( SIN (D) * (L)) + (COS (D) *COS (L)*COS (H)) 830 AA = ATN (A/SQR(-A * A +1)) 840 ALT = AA*RAD 850 AZ = (SIN (D) - (SIN (L)* SIN (A))) / (COS (L) * COS (A)) 860 AZA = - ATN(AZ/SQR (-AZ*AZ+1))+1.5708 870 AZM = AZA*RAD 880 IF SIN (H) >0 THEN AZM = 360 - AZM 890 ' 900 ' -------- PRINT OUT RESULTS ------ 910 ' 920 PRINT " ALTITUDE = " ; ALT 930 PRINT " AZIMUTH = " ; AZM 940 PRINT:PRINT:INPUT " to Continue";CR:GOTO 290 950 ' ****************** MENU CHOICE 2 ******************* 960 ' ------ LOCAL MEAN SIDEREAL TIME ------ 970 ' 980 ' The constants were moved from here to beginning of program 990 ' ----- INPUT VARIABLES ------ 1000 ' 1010 PRINT CLS$ 1020 PRINT "Find Local Sidereal Time, LST":PRINT:PRINT 1030 PRINT "DAY OF YEAR " ; 1040 INPUT D 1050 PRINT "LOCAL TIME (HOURS)"; 1060 INPUT H 1070 PRINT "LOCAL TIME (MINUTES)"; 1080 INPUT M 1090 PRINT "LOCAL TIME (SECONDS)"; 1100 INPUT S 1110 ' 1120 ' ------ CALCULATE QUANTITIES ------ 1130 ' 1140 PRINT 1150 SDT = H + ( M / 60 ) + (S / 3600) 1160 UT = SDT + TZ 1170 GMST = K1 + (K2*D) + (K3*UT) 1180 IF GMST > 24 THEN GMST = GMST - 24 : GOTO 1180 1190 LMST = GMST - LONG 1200 ' 1210 ' ----- PRINT RESULTS ------ 1220 ' 1230 PRINT "LOCAL MEAN TIME =" ; SDT 1240 PRINT " GMST = " ; GMST 1250 PRINT " LMST = " ; LMST 1260 PRINT:PRINT:INPUT " to Continue";CR:GOTO 290 1270 ' *************** MENU CHOICE 3 ********************* 1280 ' ADAPTED FROM RA-DEC.BAS 1290 ' ---------- RA & DEC CALCULATION ----- 1300 ' 1310 ' 1320 PRINT CLS$ 1330 PRINT "Find Right Ascension and Declination":PRINT:PRINT 1340 PRINT "ALTITUDE"; 1350 INPUT ALT 1360 PRINT "AZIMUTH"; 1370 INPUT AZ 1380 IF AZ > 180 THEN AZ = 360 - AZ : FLAG = 1 1390 PRINT "LOCAL SIDEREAL TIME (DECIMAL HOURS)"; 1400 INPUT LMST 1410 ' 1420 ' ------ CONVERT TO RADIANS ------ 1430 ' 1440 A = ALT / RAD 1450 AZR = AZ / RAD 1460 L = LAT / RAD 1470 ' 1480 ' ------ CALCULATE RA AND DEC ------ 1490 ' 1500 ' D is sin(declination), A is altitude, L is latitude, AZR is azimuth 1510 D = (SIN(A)* SIN (L) ) + (COS (A) * COS (L) * COS (AZR) ) 1520 DC = ATN (D / SQR ( - D * D + 1 ) ) 1530 ' DC is declination 1540 H = (SIN (A) - (SIN (L) * D)) / (COS (L) * COS (DC)) 1550 ' H is cos(hour-angle) 1560 HC = -ATN (H / SQR (-H * H + 1)) + PI/2 1570 ' HC is the hour-angle 1580 DEC = DC * RAD 1590 HA = HC * RAD 1600 IF FLAG = 1 GOTO 1620 1610 IF SIN (HC) >0 THEN HA = 360 - HA 1620 HAH = HA / 15 1630 RA = LMST - HAH 1640 IF RA <0 THEN RA = RA +24: GOTO 1640 1650 ' 1660 ' ------ PRINT OUT RESULT ------ 1670 ' 1680 PRINT 1690 PRINT "RA = ";RA 1700 PRINT "DEC = ";DEC 1710 PRINT:PRINT:INPUT " to Continue";CR:GOTO 290