1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        REFRAC:   COMPUTER-AUGMENTED PHYSICS TOPICS (FORMULAS
4  REM                  FOR REFRACTION)
5  REM        36669 REV  A   10/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
8  REM  PRINT "THIS PROGRAM WILL DEAL WITH REFRACTION AND THE PHYSICS OF"
10  PRINT "THIN LENSES."
15  PRINT "THE FORMULAS THAT YOU WILL NEED MAY BE FOUND IN THE MODULE."
20  PRINT "REMEMBER--999999 FOR CALCULATOR MODE."
25  FOR A0=1 TO INT(RND(1)*15)+1
30  READ N2
35  NEXT A0
40  IF N2#15 THEN 75
50  RESTORE 
60  GOTO 25
75  LET T1=1.571*RND(1)+.01
80  LET A1=INT(5729.6*T1)/100
85  LET S2=SIN(T1)/N2
90  LET X2=S2/SQR(1-S2*S2)
92  LET T2=ATN(X2)
95  LET A2=INT(5729.6*T2)/100
99  PRINT 
100  PRINT "LIGHT TRAVELING THROUGH A VACUUM (N1=1) IS INCIDENT"
105  PRINT "ON AN OBJECT AT AN ANGLE OF";A1;"DEGREES, AND IS"
110  PRINT "REFRACTED TO AN ANGLE OF";A2;"DEGREES."
112  PRINT "WHAT IS THE INDEX OF REFRACTION (N2) OF THE MATERIAL?"
115  PRINT "N2 = ";
120  INPUT N
125  IF N <> 999999. THEN 140
130  GOSUB 9000
135  GOTO 115
140  IF ABS(N-N2)<ABS(N2/50) THEN 155
145  PRINT "THE ANSWER IS SIN(";A1;"/57.3)/SIN(";A2;"/57.3)=";N2
146  PRINT "THE VALUE 57.3 CONVERTS FROM DEGREES TO RADIANS"
147  PRINT "FOR THE BASIC SINE FUNCTION, SIN( )."
148  PRINT 
150  GOTO 160
155  PRINT "EXCELLENT- YOU'RE RIGHT"
157  PRINT 
160  PRINT "REFER TO THE MODULE. TYPE IN THE NUMBER OF THE MATERIAL."
165  INPUT D1
170  IF D1=A0-1 THEN 180
175  PRINT "NO - IT IS MATERIAL NO.";A0-1;"."
177  GOTO 183
180  PRINT "RIGHT YOU ARE."
183  PRINT 
185  PRINT "WOULD YOU LIKE TO TRY ANOTHER LIKE THIS (1=YES, 0=NO)";
190  INPUT L
192  RESTORE 
195  IF L=1 THEN 25
200  LET A1=INT(10*RND(1)+1)/2
205  LET A2=INT(10*RND(1)+1)/2
215  PRINT "USING THE 'LENSMAKER'S FORMULA,' CALCULATE THE FOCAL"
220  PRINT "LENGTH OF A THIN LENS MADE FROM GLASS (N=1.5), IF THE"
225  PRINT "RADII OF THE OPPOSING SURFACES ARE";A1;"AND";A2;"CM."
230  PRINT "FOCAL LENGTH (CM) = ";
235  INPUT F
240  IF F <> 999999. THEN 256
245  GOSUB 9000
250  GOTO 230
256  IF ABS(F-2*A1*A2/(A1+A2))<ABS(F*.02) THEN 300
260  PRINT "NO - IT IS F=1/( (N-1)*(1/R1+1/R2) ) =";2*(1/A1+1/A2)
265  GOTO 305
300  PRINT "GOOD YOU ARE CORRECT"
305  PRINT 
310  PRINT "HOW ABOUT ANOTHER ONE LIKE THIS (0=NO, 1=YES);"
315  INPUT L
320  IF L=1 THEN 200
325  PRINT "OK, NOW TRY YOUR HAND AT WRITING A PROGRAM TO COMPLETE"
330  PRINT "THE TABLE IN PART 3 OF THE MODULE."
345  DATA 1.11,1.22,1.33,1.38,1.47,1.54,1.6,1.66,1.93,2.1,2.42,2.6,3.34
346  DATA 4.22,15
350  END 
