10  REM ****  HP TIME-SHARED BASIC PROGRAM LIBRARY  ********************
20  REM
30  REM              SNELL:  SNELL'S LAW
40  REM
50  REM              36320  (A833)  REV A -- 10/71
60  REM
70  REM ****  CONTRIBUTED PROGRAM  *************************************
80  REM SNELL--COPYRIGHT 1970, POLYTECHNIC INSTITUTE OF BROOKLYN
90  REM  RICHARD F. PAV    PATCHOGUE H.S.    OCT.'68 
100  REM  THIS PROGRAM IS DESIGNED TO HELP A STUDENT VISUALIZE
110  REM  SNELL'S LAW.
120  REM  REVISED BY C.LOSIK  8-25-70 
130  REM  A AND A1 ARE ANGLES, N1 AND N2 INDICES OF REFRACTION
140  PRINT " ","---REFRACTION OF LIGHT---"
150  PRINT 
160  PRINT "     THIS PROGRAM WILL HELP YOU VISUALIZE THE REFRACTION"
170  PRINT "OF LIGHT AS IT CROSSES A BOUNDARY SEPARATING TWO DIFFERENT"
180  PRINT "MEDIA."
190  PRINT 
200  PRINT "THE DIAGRAM BELOW SHOWS LIGHT INCIDENT TO THE BOUNDARY AT"
210  PRINT "45 DEGREES.  THE INDICES OF REFRACTION ARE  N1=1.0 AND"
220  PRINT "N2=1.5  RESPECTIVELY."
230  PRINT 
240  LET N1=1
250  LET N2=1.5
260  LET A=A1=45
270  GOSUB 780
280  PRINT 
290  PRINT "     NOW YOU CAN CHANGE THE INCIDENT ANGLE. THE REFRACTIVE"
300  PRINT "INDICES WILL REMAIN AS  N1=1.0  AND  N2=1.5 ."
310  PRINT 
320  PRINT "REMEMBER, ONLY POSITIVE ANGLES BETWEEN 0 AND 90 DEGREES ARE"
330  PRINT "PERMISSIBLE  ENTRIES."
340  PRINT "SO, WHAT ANGLE DO YOU WANT";
350  INPUT A1
360  LET A=A1
370  IF A<90 THEN 470
380  LET A=60
390  GOSUB 780
400  GOTO 490
410  PRINT 
420  PRINT "YOUR VALUE FOR THE INCIDENT ANGLE (";A1;"DEGREES) DIDN'T MAKE"
430  PRINT "SENSE SO I AUTOMATICALLY MADE IT 60 DEGREES."
440  PRINT 
450  LET A1=60
460  GOTO 1370
470  IF A<0 THEN 380
480  GOSUB 780
490  PRINT 
500  PRINT "     NOW ";
510  PRINT "SPECIFY NEW VALUES FOR  N1, N2, AND ANGLE 1."
520  PRINT "SEPARATE WITH COMMAS. ";
530  PRINT " OKAY, WHAT VALUES";
540  INPUT N1,N2,A
550  IF N1 <= 3 THEN 580
560  PRINT "VALUE OF N1 IS UNREASONABLE."
570  GOTO 590
580  IF N1<1 THEN 560
590  IF N2 <= 3 THEN 620
600  PRINT "VALUE OF N2 IS UNREASONABLE."
610  GOTO 630
620  IF N2<1 THEN 600
630  IF A<90 THEN 660
640  PRINT "VALUE OF ANGLE 1 IS UNREASONABLE."
650  GOTO 730
660  IF A<0 THEN 640
670  IF N1>3 THEN 730
680  IF N1<1 THEN 730
690  IF N2>3 THEN 730
700  IF N2<1 THEN 730
710  GOSUB 780
720  GOTO 510
730  LET B=B+1
740  IF B >= 3 THEN 1520
750  PRINT "YOU MUST RE-TYPE ALL THREE NUMBERS."
760  PRINT 
770  GOTO 530
780  LET B=0
790  PRINT 
800  PRINT "                N"
810  LET C=(N1/N2)*SIN(A*.0174533)
820  IF C >= 1 THEN 1180
830  GOSUB 1310
840  FOR Y=8 TO 1 STEP -1
850  LET X=2*Y*((SIN(A*.0174533))/(COS(A*.0174533)))
860  IF X>16 THEN 890
870  PRINT TAB(16-X);"*";
880  GOTO 900
890  LET X=16
900  PRINT TAB(16);"."
910  NEXT Y
920  PRINT "               *.           MEDIUM 1, N1=";N1
930  PRINT "----------------*---------------------------------"
940  PRINT "                .*          MEDIUM 2, N2=";N2
950  FOR Y=1 TO 8 STEP 1
960  LET X=2*Y*C/SQR(1-C*C)
970  PRINT TAB(16);".";
980  IF X>40 THEN 1000
990  PRINT TAB(17+X);"*";
1000  PRINT " "
1010  NEXT Y
1020  PRINT 
1030  GOSUB 1350
1040  PRINT "THE ANGLE OF REFRACTION, A2=";A2
1050  PRINT 
1060  PRINT "DO YOU WANT TO CONTINUE (1=YES, 0=NO) : ";
1070  INPUT J
1080  IF J=0 THEN 1540
1090  IF J <> 1 THEN 1050
1100  RETURN 
1110  PRINT "               *.*          MEDIUM 1, N1="N1
1120  PRINT "----------------*---------------------------------"
1130  PRINT "                            MEDIUM 2, N2=";N2
1140  PRINT "YOU WENT PAST THE CRITICAL ANGLE."
1150  GOSUB 1440
1160  PRINT "THE ANGLE OF REFLECTION IS";A;"DEGREES."
1170  GOTO 1050
1180  FOR Y=8 TO 1 STEP -1
1190  LET X=2*Y*((SIN(A*.0174533))/(COS(A*.0174533)))
1200  LET X2=X
1210  IF X>16 THEN 1240
1220  PRINT TAB(16-X);"*";
1230  GOTO 1250
1240  LET X=16
1250  PRINT TAB(16);".";
1260  IF X2>40 THEN 1280
1270  PRINT TAB(17+X2);"*";
1280  PRINT " "
1290  NEXT Y
1300  GOTO 1110
1310  LET F=C/SQR(1-C*C)
1320  LET G=ATN(F)
1330  LET A2=INT(1000*(G/.0174533)+.5)/1000
1340  RETURN 
1350  IF A1 >= 90 THEN 410
1360  IF A1<0 THEN 410
1370  PRINT "WHAT DO YOU THINK THE ANGLE OF REFRACTION IS";
1380  INPUT A3
1390  IF ABS(A2-A3)>.1*A2 THEN 1420
1400  PRINT "YOU ARE WITHIN 10 PERCENT."
1410  GOTO 1430
1420  PRINT "YOU ARE MORE THAN 10 PERCENT OFF."
1430  RETURN 
1440  PRINT 
1450  PRINT "WHAT DO YOU THINK THE ANGLE OF REFLECTION IS";
1460  INPUT A4
1470  IF A4 <> A THEN 1500
1480  PRINT "THAT'S RIGHT, ";
1490  GOTO 1510
1500  PRINT "YOU HAD BETTER STUDY THE LAWS OF REFLECTION."
1510  RETURN 
1520  PRINT "I SUGGEST YOU LEARN MORE ABOUT REFRACTION SO YOU CAN"
1530  PRINT "ENTER MORE MEANINGFUL INDICES AND ANGLES."
1540  END 
