ChipMaster's bwBASIC This also includes history going back to v2.10. *WARN* some binary files might have been corrupted by CRLF.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

129 lines
2.9 KiB

  1. 10 REM REFRACTION
  2. 20 REM
  3. 30 DEFSNG A-Z: REM <<<<<
  4. 40 INPUT "APPARENT ZENITH DIST";Z0
  5. 50 INPUT "AIR TEMP (F) ";T0
  6. 60 INPUT "REFR INDEX ";N0
  7. 70 INPUT "HEIGHT (FEET)";H
  8. 80 R0=1: REM PLANET RADIUS
  9. 90 M=1: REM PLANET MASS
  10. 100 W=28.97: REM MOL WT OF AIR
  11. 105 P=3.14159: P2=1.5708
  12. 106 RD=57.2957
  13. 110 REM
  14. 120 REM CONVERT TO CGS UNITS
  15. 130 Z0=Z0/RD
  16. 140 H=H*30.48
  17. 150 T0=(T0-32)/1.8+273.1
  18. 160 W=W*1.665E-24
  19. 170 R0=R0*6.378E+08
  20. 180 M=M*5.976E+27
  21. 190 REM
  22. 200 REM CALC ATMOS QUANTITIES AT R0
  23. 210 G=6.67E-08*M/(R0*R0)
  24. 220 S=1.38E-16*T0/(G*W)
  25. 230 LA=-.4*W*G/1.38E-16
  26. 240 GOSUB 350
  27. 250 REM PRINT RESULTS
  28. 260 ZA=Z0*RD
  29. 270 ZR=(Z0+RF)*RD
  30. 280 RF=RF*3600*RD
  31. 290 PRINT "REFRACTION IS ";RF;" ARC SEC"
  32. 300 PRINT "PATHLENGTH IS ";AM;" AIR MASSES"
  33. 310 PRINT "APPAR ZENITH DIST ";ZA
  34. 320 PRINT "REAL ZENITH DIST ";ZR
  35. 330 END
  36. 340 REM
  37. 350 REM REFRACTION SUBR
  38. 360 REM
  39. 370 N=N0: DH=S/200: IF H<0 THEN DH=-DH
  40. 380 H1=0
  41. 390 T=T1: GOSUB 1110: T1=T
  42. 400 IF (H1-H)/DH>=0 THEN 450
  43. 410 H1=H1+DH: GOSUB 1110
  44. 420 EX=-1-(T0/(S*LR))
  45. 430 N=1+(N-1)*((T/T1)^EX)
  46. 440 T1=T: GOTO 400
  47. 450 REM INITIALIZE PARAMETERS
  48. 460 RF=0: L=0: LZ=0: R=R0+H
  49. 470 L1=LR: Z=Z0
  50. 480 REM
  51. 490 REM LAYER THICKNESS
  52. 500 IF R>R0+H+5*S THEN DR=S/10
  53. 510 IF R<=R0+H+5*S THEN DR=S/20
  54. 520 IF R<=R0+H+2*S THEN DR=S/50
  55. 530 IF R<=R0+H+.2*S THEN DR=S/200
  56. 540 F=1-DR/R: GOSUB 1170 : ZG=P-F
  57. 550 IF Z<=P2 THEN IN=1
  58. 560 IF Z>P2 THEN IN=0
  59. 570 IF Z>ZG THEN IN=-1
  60. 580 REM INDEX OF REFR FOR SHELL
  61. 590 H1=R-R0: GOSUB 1110
  62. 600 T1=T-L1*DR*IN
  63. 610 EX=-1-(T0/(S*L1))
  64. 620 N=1+(N-1)*((T/T1)^EX)
  65. 630 L1=LR
  66. 640 IF IN=-1 THEN 690
  67. 650 IF IN=0 THEN 840
  68. 660 IF IN=1 THEN 940
  69. 670 REM
  70. 680 REM
  71. 690 REM INWARD RAY
  72. 700 T1=T-LR*DR
  73. 710 N1=1+(N-1)*((T1/T)^EX)
  74. 720 T2=T-LR*DR*2
  75. 730 N2=1+(N-1)*((T2/T)^EX)
  76. 740 F=SIN(Z)*R/(R-DR): GOSUB 1170 : A=P-F
  77. 750 L=L+(N1-1)*R*SIN(Z-A)/SIN(A)
  78. 760 IF SIN(A)>N2/N1 THEN 800
  79. 770 F=SIN(A)*N1/N2: GOSUB 1170 : Z=P-F
  80. 780 RF=RF+(Z-A)
  81. 790 GOTO 820
  82. 800 Z=P-A
  83. 810 RF=RF-(P-2*Z)
  84. 820 GOTO 1050
  85. 830 REM
  86. 840 REM GRAZING RAY
  87. 850 T1=T-LR*DR
  88. 860 N1=1+(N-1)*((T1/T)^EX)
  89. 870 A=P-Z
  90. 880 L=L+(N1-1)*(-2)*R*COS(Z)
  91. 890 F=SIN(A)*N1/N: IF F>1 THEN F=1
  92. 900 GOSUB 1170 : Z=F
  93. 910 RF=RF+(Z-A)
  94. 920 GOTO 1050
  95. 930 REM
  96. 940 REM OUTGOING RAY
  97. 950 T2=T+LR*DR
  98. 960 N2=1+(N-1)*((T2/T)^EX)
  99. 970 F=SIN(Z)*R/(R+DR): GOSUB 1170 : A=F
  100. 980 L=L+(N-1)*R*SIN(Z-A)/SIN(A)
  101. 990 IF R>=R0+H THEN LZ=LZ+(N-1)*DR
  102. 1000 IF SIN(A)>N2/N THEN 1020
  103. 1010 F=SIN(A)*N/N2: GOSUB 1170 : Z=F: GOTO 1030
  104. 1020 Z=P-A
  105. 1030 RF=RF+(Z-A)
  106. 1040 REM
  107. 1050 REM END SUBROUTINE
  108. 1060 R=R+DR*IN
  109. 1070 IF R<=R0+8*S THEN 490
  110. 1080 AM=L/LZ
  111. 1090 RETURN
  112. 1100 REM
  113. 1110 REM TEMPERATURE SUBR
  114. 1120 LR=.5*LA: T=T0+LR*H1
  115. 1130 IF H1<=2*S THEN 1150
  116. 1135 LR=-.16*LA
  117. 1140 T=T0+S*LA+LR*(H1-2*S)
  118. 1150 RETURN
  119. 1160 REM
  120. 1170 REM ARC SINE FUNCTION
  121. 1180 IF F<1 THEN 1200
  122. 1190 F=P2: GOTO 1210
  123. 1200 F=ATN(F/SQR(1-F*F))
  124. 1210 RETURN
  125. 1220 REM
  126. 1230 REM ************************************
  127. 1240 REM APPEARED IN ASTRONOMICAL COMPUTING
  128. 1250 REM SKY & TELESCOPE - MARCH 1989 ISSUE
  129. 1260 REM ************************************