home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / basic / astrnmy2.bas < prev    next >
BASIC Source File  |  1994-07-13  |  6KB  |  172 lines

  1. 10 '============================================================== 
  2. 20 ' ADAPTED FROM ASTRONMY.LBR, author unknown
  3. 30 ' Adaption: 21 Jul 87, Jim Lill
  4. 40 ' Combining the 3 individual programs into one with menu
  5. 50 ' Other changes: - Added better PI value technique
  6. 60 '                - Added CLS$
  7. 70 '                - correct SOP error in DEC-RA (line 1560)
  8. 80 '===============================================================
  9. 90 CLS$=CHR$(26): ' Set for your terminal
  10. 100 LAT = 43.5 : ' LAT is your Latitude in Decimal Degrees 
  11. 110 '==============================================================
  12. 120  PI = 4 * ATN(1) : RAD = 180/PI 
  13. 130 '==============================================================
  14. 140 ' The following are used in menu 2 but are placed here for convenience 
  15. 150 ' K1,K2, AND K3 ARE CONSTANTS. K1 CHANGES EACH YEAR.
  16. 160 ' LONG IS YOUR LONGITUDE IN DECIMAL HOURS
  17. 170 ' TZ IS THE DIFFERENCE IN HOURS BETWEEN YOUR
  18. 180 ' TIME ZONE AND GREENWICH.
  19. 190 ' GMST IS GREENWICH MEAN SIDEREAL TIME
  20. 200 ' LMST IS LOCAL MEAN SIDEREAL TIME
  21. 210 '
  22. 220  K1 = 6.606550000000003# : ' This is  1987
  23. 230  K2 =  .06570982320000008#     
  24. 240  K3 = 1.0027379093# 
  25. 250  LONG = 5.1234
  26. 260  TZ = 5
  27. 270 '================================================================
  28. 280 ' Start of actual program........
  29. 290 ' MENU:
  30. 300 PRINT CLS$
  31. 310 PRINT "Astronomy Programs":PRINT
  32. 320 PRINT "1- Find Altitude and Azimuth, given Right Ascension and Declination"
  33. 330 PRINT "2- Find Local Sidereal Time, given Day of Year and Local Time"
  34. 340 PRINT "3- Find Right Ascension and Declination, given ALT, AZ and LST"
  35. 350 PRINT "4- QUIT Program, Return to MBASIC":PRINT
  36. 360 INPUT "Enter Choice ==> ",CHOICE
  37. 370 IF CHOICE = 1  THEN GOTO 420
  38. 380 IF CHOICE = 2  THEN GOTO 950
  39. 390 IF CHOICE = 3  THEN GOTO 1270                         
  40. 400 IF CHOICE = 4  THEN STOP
  41. 410 GOTO 360
  42. 420 ' ************************ MENU CHOICE 1 ***********************
  43. 430 ' ------ALT/AZ CONVERSION -----------
  44. 440 '
  45. 450 ' -------INPUT OBJECT'S POSITION ---------
  46. 460 '
  47. 470 PRINT CLS$
  48. 480 PRINT "Find Altitude and Azimuth":PRINT:PRINT
  49. 490 PRINT "RA (HOURS)";
  50. 500 INPUT RH
  51. 510 PRINT "RA (MINUTES)";
  52. 520 INPUT RM
  53. 530 PRINT "RA (SECONDS)";
  54. 540 INPUT RS
  55. 550  RA = RH + (RM/60) + (RS/3600)
  56. 560 PRINT
  57. 570 PRINT "DEC (DEGREES)";
  58. 580 INPUT DD
  59. 590 PRINT "DEC (MINUTES)";
  60. 600 INPUT DM
  61. 610 PRINT "DEC (SECONDS)";
  62. 620 INPUT DS
  63. 630  DEC = DD + (DM/60) + (DS/3600)
  64. 640 '
  65. 650 ' -------INPUT LMST & GET HA -----------
  66. 660 '
  67. 670 PRINT
  68. 680 PRINT "LMST (DECIMAL HOURS)";
  69. 690 INPUT LMST
  70. 700 PRINT
  71. 710  HA = LMST - RA
  72. 720  HAD =HA *15
  73. 730 '
  74. 740 ' ------ CONVERT TO RADIANS ----------
  75. 750 '
  76. 760  L = LAT / RAD
  77. 770  H = HAD / RAD
  78. 780  D = DEC / RAD
  79. 790 '
  80. 800 ' ---------- CALCULATE ALT / AZ --------
  81. 810 '
  82. 820  A = ( SIN (D) * (L)) + (COS (D) *COS (L)*COS (H))
  83. 830  AA = ATN (A/SQR(-A * A +1))
  84. 840  ALT = AA*RAD
  85. 850  AZ = (SIN (D) - (SIN (L)* SIN (A))) / (COS (L) * COS (A))
  86. 860  AZA = - ATN(AZ/SQR (-AZ*AZ+1))+1.5708
  87. 870  AZM = AZA*RAD
  88. 880 IF SIN (H) >0 THEN AZM = 360 - AZM
  89. 890 '
  90. 900 ' -------- PRINT OUT RESULTS ------
  91. 910 '
  92. 920 PRINT "     ALTITUDE = " ; ALT
  93. 930 PRINT "      AZIMUTH = " ; AZM
  94. 940 PRINT:PRINT:INPUT "<cr> to Continue";CR:GOTO 290
  95. 950 ' ****************** MENU CHOICE 2 *******************
  96. 960 ' ------ LOCAL MEAN SIDEREAL TIME ------
  97. 970 '
  98. 980 ' The constants were moved from here to beginning of program
  99. 990 ' ----- INPUT VARIABLES ------
  100. 1000 '
  101. 1010 PRINT CLS$
  102. 1020 PRINT "Find Local Sidereal Time, LST":PRINT:PRINT
  103. 1030 PRINT "DAY OF YEAR " ;
  104. 1040 INPUT D
  105. 1050 PRINT "LOCAL TIME (HOURS)";
  106. 1060 INPUT H
  107. 1070 PRINT "LOCAL TIME (MINUTES)";
  108. 1080 INPUT M
  109. 1090 PRINT "LOCAL TIME (SECONDS)";
  110. 1100 INPUT S
  111. 1110 '
  112. 1120 ' ------ CALCULATE QUANTITIES ------
  113. 1130 '
  114. 1140 PRINT
  115. 1150  SDT = H +  ( M / 60 ) + (S / 3600)
  116. 1160  UT = SDT + TZ
  117. 1170  GMST = K1 + (K2*D) + (K3*UT)
  118. 1180 IF GMST > 24 THEN GMST = GMST - 24 : GOTO 1180
  119. 1190  LMST = GMST - LONG
  120. 1200 '
  121. 1210 ' ----- PRINT RESULTS ------
  122. 1220 '
  123. 1230 PRINT "LOCAL MEAN TIME =" ; SDT
  124. 1240 PRINT "           GMST = " ; GMST
  125. 1250 PRINT "           LMST = " ; LMST
  126. 1260 PRINT:PRINT:INPUT "<cr> to Continue";CR:GOTO 290
  127. 1270 ' *************** MENU CHOICE 3 *********************
  128. 1280 ' ADAPTED FROM RA-DEC.BAS
  129. 1290 ' ---------- RA & DEC CALCULATION -----
  130. 1300 '
  131. 1310 '
  132. 1320 PRINT CLS$
  133. 1330 PRINT "Find Right Ascension and Declination":PRINT:PRINT
  134. 1340 PRINT "ALTITUDE";
  135. 1350 INPUT ALT
  136. 1360 PRINT "AZIMUTH";
  137. 1370 INPUT AZ
  138. 1380 IF AZ > 180 THEN AZ = 360 - AZ :  FLAG = 1
  139. 1390 PRINT "LOCAL SIDEREAL TIME (DECIMAL HOURS)";
  140. 1400 INPUT LMST
  141. 1410 '
  142. 1420 ' ------ CONVERT TO RADIANS ------         
  143. 1430 '
  144. 1440  A = ALT / RAD
  145. 1450  AZR = AZ / RAD
  146. 1460  L = LAT / RAD
  147. 1470 '
  148. 1480 ' ------ CALCULATE RA AND DEC ------
  149. 1490 '
  150. 1500 ' D is sin(declination),  A is altitude, L is latitude, AZR is azimuth
  151. 1510  D = (SIN(A)* SIN (L) ) + (COS (A) * COS (L) * COS (AZR) )
  152. 1520   DC = ATN (D / SQR ( - D * D + 1 ) )
  153. 1530 ' DC is declination
  154. 1540  H = (SIN (A) - (SIN (L) * D)) / (COS (L) * COS (DC))
  155. 1550 ' H is cos(hour-angle) 
  156. 1560  HC = -ATN (H / SQR (-H * H + 1)) + PI/2
  157. 1570 ' HC is the hour-angle 
  158. 1580  DEC = DC * RAD
  159. 1590  HA = HC * RAD
  160. 1600 IF FLAG = 1 GOTO 1620 
  161. 1610 IF SIN (HC) >0 THEN HA = 360 - HA
  162. 1620  HAH = HA / 15
  163. 1630  RA = LMST - HAH
  164. 1640 IF RA <0 THEN RA = RA +24: GOTO 1640
  165. 1650 '
  166. 1660 ' ------ PRINT OUT RESULT ------
  167. 1670 '
  168. 1680 PRINT
  169. 1690 PRINT "RA = ";RA
  170. 1700 PRINT "DEC = ";DEC
  171. 1710 PRINT:PRINT:INPUT "<cr> to Continue";CR:GOTO 290
  172.