Refração
Quando ocorre a passagem de luz de um meio para outro, por exemplo do ar para agua, verifica-se, de um modo geral, a mudança de intensidade da velocidade de propagação da mesma. Esta mudança de velocidade é traduzida através de um fenômeno denominado REFRAÇÃO.
Esse programa simula a passagem de um feixe de luz monocromática de um meio para outro, num dióptro plano, baseado na Lei de Snell.
Teste o programa no WebMSX – The Online MSX Emulator
De início, o programa pede que você informe os índices de refração absolutos dos dois meios. Devido aos limites físicos que a naturaza impõe, os valores dos índices não devem ser inferiores a 1 e nem superiores a 5. Qualquer valor não contido no intervalo mencionado não será aceito pelo programa.
Uma vez informados os índices de refração, o programa muda a tela para o modo “SCREEN 2” e nela desenha a superfície de separação do dois meios, a reta normal à essa superfície que passa pelo ponto de incidência da luz e a fonte luminosa, representada por um círculo verde.
A fonte luminosa é inicialmente posicionada de modo que o ângulo de incidência seja de 45 graus. No entanto, você pode mudar esse ângulo reposicionando a fonte. Para isso use as teclas de seta e acompanhe o valor do ângulo que é constantemente atualizado e mostrado no box correspondente. Esse box encontra-se no quadrante inferior esquerdo da tela e contém a letra “i” referente ao ângulo de incidência.
Convêm notar que o movimento da fonte só pode ser realizado sobre os lados de um quadrado imaginário, ou seja, para ângulos superiores a 45 graus funcionam apenas as teclas de seta “para cima” e “para baixo”. Da mesma forma, para ângulos inferiores a 45 graus, só funcionam as teclas de seta “para esquerda” e “para direita”.
Quando o valor do ângulo desejado tiver sido ajustado, pressione a “barra de espaços” para que você possa ver os feixes de luz incidente, refletido e refratado.
Após serem desenhados os raios de luz, serão mostrados também o ângulo de refração e as velocidades de propagação da luz em cada um dos meios relativamente à velocidade de propagação da luz no vácuo (c). Além disso, uma seta ficará indefinidamente se deslocando do meio 1 para o meio 2 com velocidade proporcional à da propagação da luz em cada meio.
Neste ponto você tem duas opções: pressionar a tecla F1 para reiniciar o programa e, desta forma, redefinir os índices de refração, ou pressionar a tecla F2 para repetir a “experiência”, mantendo os mesmos índices de refração, mas tendo a oportunidade de alterar o ângulo de incidência.
Quando o índice de refração do meio 1 for maior do que o do meio 2, a pressão da tecla F3, antes que os raios de luz sejam desenhados, fará o programa mostrar o ÂNGULO LIMITE DE REFRAÇÃO.
Fonte: Livro Coleção de Programas para MSX Volume 2
Editora: Aleph
Ano: 1986
Autor: Luiz Tarcísio de Carvalho Jr.
Digitação: Renato Faria Lopes
Código fonte
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
100 ' REFRACAO - LEI DE SNELL 110 ' LUIZ TARCISIO DE CARVALHO JR 120 ' 130 ON KEY GOSUB 200,270,620 140 ON STRIG GOSUB 520 150 KEYOFF: OPEN"GRP:"FOR OUTPUT AS #1 160 SCREEN2:SPRITE$(1)=CHR$(0)+CHR$(24)+CHR$(60)+CHR$(126)+CHR$(126)+CHR$(60)+CHR$(24)+CHR$(0) 170 SPRITE$(2)=STRING$(3,0)+STRING$(3,255)+STRING$(2,0) 180 SPRITE$(3)=CHR$(124)+STRING$(3,68)+CHR$(198)+CHR$(68)+CHR$(40)+CHR$(16) 190 SPRITE$(4)=CHR$(255)+STRING$(3,1)+CHR$(17)+STRING$(3,1) 200 DEFUSR=&H156:Q=USR(0):KEY(1)OFF:COLOR15,4:SCREEN0:LOCATE7,1:PRINT"REFRACAO EM DIOPTRO PLANO":LOCATE13,3:PRINT"LEI DE SNELL" 210 LOCATE1,7:PRINT"Qual o indice de refracao do":LOCATE3,8:PRINT"meio do qual a luz provem?":LOCATE6,10:PRINT"Meio 1 => ";:LINE INPUT X$ 220 N1=VAL(X$): IF N1<1 OR N1>5 THEN LOCATE 15,10:PRINT SPACE$(17):GOTO 210 230 N1=INT(N1*10000+.5)/10000 240 LOCATE1,13:PRINT"Qual o indice de refracao do":LOCATE2,14:PRINT"meio para o qual a luz passa?":LOCATE6,16:PRINT"Meio 2 => ";:LINE INPUT Y$ 250 N2=VAL(Y$):IF N2<1 OR N2>5 THEN LOCATE 15,16:PRINT SPACE$(17):GOTO 240 260 N2=INT(N2*10000+.5)/10000:PI=3.141592#:IL=100 270 KEY(2)OFF: COLOR15,1,1:SCREEN2 280 COLOR11:PSET(96,8),1:PRINT#1,"REFRACAO" 290 A$="LEI DE SNELL":FORY=56 TO 144 STEP 8:PSET(16,Y),1:PRINT#1,MID$(A$,Y/8-6,1):NEXT Y 300 LINE (24,20)-(232,188),15,B 310 A$="MEIO 1":COLOR 2:FOR Y=32 TO 72 STEP 8:PSET(240,Y),1:PRINT#1,MID$(A$,Y/8-3,1):NEXT Y 320 A$="MEIO 2":COLOR3:FOR Y=120 TO 160 STEP 8:PSET(240,Y),1:PRINT#1,MID$(A$,Y/8-14,1):NEXT Y 330 FORX=120TO128STEP8:K=X/8-13:PUT SPRITEK,(X,100),7,2:NEXTX 340 LINE(25,104)-(119,106),7,BF 350 LINE(136,104)-(231,106),7,BF 360 FORI=32TO174STEP4:PSET(128,I),8:PSET(128,I+1),8:NEXTI:PUTSPRITE0,(129,95),8,4 370 LINE(30,110)-(106,138),15,B:LINE(30,124)-(106,124),15:LINE(30,150)-(66,178),15,B:LINE(30,164)-(66,164),15:COLOR15:PSET(32,112),1:PRINT#1,"n1=":PSET(32,128),1:PRINT#1,"n2=" 380 PSET(32,152),1:PRINT#1,"i=":PSET(32,168),1:PRINT#1,"r=":PSET(72,160),1:PRINT#1,"(graus)" 390 PSET(48,112),1:PRINT#1,N1:PSET(48,128),1:PRINT#1,N2 400 X=64:Y=25:STRIG(0)ON:IFN1>N2THENKEY(3)ON:Z=N2/N1:I1=ATN(Z/SQR(-Z*Z+1)):IL=INT(((I1*180)/PI)+.5) 410 T=STICK(0) 420 IFT=3ANDY=25ANDX<124THENX=X+1 430 IFT=7ANDY=25ANDX>64THENX=X-1 440 IFT=5ANDX=64ANDY<100THENY=Y+1 450 IFT=1ANDX=64ANDY>25THENY=Y-1 460 PUTSPRITE1,(X,Y),3,1 470 X1=124-X:Y1=100-Y 480 IFY1=0THENI=PI/2:IG=90:GOTO500 490 I=ATN(X1*1.25/Y1):IG=(I*180)/PI:IG=INT(IG+.5) 500 LINE(48,152)-(63,159),1,BF:PSET(40,152),1:PRINT#1,IG 510 GOTO410 520 STRIG(0)OFF:IF IG=IL THEN RG=90:GOTO 680 530 IF(SIN(I)*N1)/N2>1 OR IG>IL THEN GOTO 720 540 Z=(SIN(I)*N1)/N2:R=ATN(Z/SQR(-Z*Z+1)):RG=(R*180)/PI:RG=INT(RG+.5) 550 PSET(40,168),1:PRINT#1,RG 560 LINE(X+4,Y+4)-(128,104),9 570 IFIG=0 THEN LINE-(128,184),9:GOTO730 580 X2=128+60*TAN(R):Y2=104+75/TAN(R) 590 IF RG=45 THEN LINE-(188,179),9:GOTO700 600 IF RG<45 THEN LINE-(X2,179),9:GOTO700 610 IF RG>45 THEN LINE-(188,Y2),9:GOTO700 620 KEY(3)OFF 630 LINE(48,152)-(63,159),1,BF:PSET(40,152),1:PRINT#1,IL 640 IF IL=45 THEN X=64:Y=25 650 IF IL<45 THEN Y=25:X=60-(60*TAN(I1))+64 660 IF IG>45 THEN X=64:Y=75-(75/TAN(I1))+25 670 PUTSPRITE1,(X,Y),3,1:RG=90 680 PSET(40,168),1:COLOR15:PRINT#1,RG 690 LINE(X+4,Y+4)-(128,104),9:LINE-(188,104),9:PSET(152,128),1:COLOR8:PRINT#1,"ANGULO":PSET(152,144),1:PRINT#1,"LIMITE" 700 LINE(128,104)-(252-X,Y+4),6 710 GOTO730 720 LINE(X+4,Y+4)-(128,104),9:LINE-(252-X,Y+4),9:PSET(144,128),1:COLOR8:PRINT#1,"REFLEXAO":PSET(160,144),1:PRINT#1,"TOTAL" 730 KEY(1)ON:KEY(2)ON:KEY(3)OFF:RETURN740 740 V1=INT((1/N1)*1000+.5)/1000:V2=INT((1/N2)*1000+.5)/1000:PSET(160,22),1:COLOR13:PRINT#1,V1;"c":PSET(160,178),1:PRINT#1,V2;"c" 750 FORS=30TO104:PUTSPRITE10,(220,S),13,3:FORT=1TO5*N1:NEXTT:NEXTS:FORS=105TO171:PUTSPRITE10,(220,S),13,3:FORT=1TO5*N2:NEXTT:NEXTS:PUTSPRITE10,(0,0),0,3:FORT=1TO300:NEXT:GOTO750 |