DECLARE SUB cartel (ni!, nt!)

DECLARE SUB grilla (ni!, nt!)

DECLARE SUB curva (ni, nt, cod$)

COLOR 15

ni = 1: nt = 1.52

CLS

LOCATE 7, 1

PRINT "                            PROGRAMA FRESNEL"

PRINT

PRINT

PRINT "Grafica la reflectividad"; : COLOR 14: PRINT " TE "; : COLOR 15

PRINT "y"; : COLOR 11: PRINT " TM "; : COLOR 15: PRINT "de una interfase entre dos medios de indices"

PRINT "ni y nt con la luz incidiendo en uno y otro sentido desde 0 a 90 grados."

PRINT "Se indican el angulo de Brewster ab, el angulo critico ac y la reflectividad en incidencia normal."

PRINT "Los valores predeterminados corresponden al ejemplo de la fig. 1.7."

PRINT "Para terminar poner ni o nt = 0."

DO: LOOP WHILE INKEY$ = ""

SCREEN 12

DO

CLS

PRINT "ni="; ni;

INPUT a$: IF a$ <> "" THEN ni = VAL(a$)

IF ni = 0 THEN END

PRINT "nt="; nt;

INPUT a$: IF a$ <> "" THEN nt = VAL(a$)

IF nt = 0 THEN END

CLS

CALL cartel(ni, nt)

CALL grilla(ni, nt)

cod$ = "te"

CALL curva(ni, nt, cod$)

cod$ = "tm"

CALL curva(ni, nt, cod$)

DO: LOOP WHILE INKEY$ = ""

SWAP ni, nt

CLS

CALL cartel(ni, nt)

CALL grilla(ni, nt)

cod$ = "te"

CALL curva(ni, nt, cod$)

cod$ = "tm"

CALL curva(ni, nt, cod$)

DO: LOOP WHILE INKEY$ = ""

LOOP

 

SUB cartel (ni, nt)

pi = 4 * ATN(1)

LOCATE 2, 2: PRINT "ni ="; ni

LOCATE 3, 2: PRINT "nt ="; nt

rn = ((ni - nt) / (ni + nt)) ^ 2

LOCATE 4, 2

PRINT "Rn ="; INT(100000 * rn + .5) / 1000; "%"

x = nt / ni

abr = ATN(x)

abg = abr * 180 / pi

LOCATE 5, 2

PRINT "ab ="; INT(100 * abg + .5) / 100

xl = 640 * abg / 90

LINE (xl, 432)-(xl, 479)

IF x < 1 THEN

acr = ATN((x / SQR(1 - x ^ 2)))

acg = acr * 180 / pi

LOCATE 6, 2

PRINT "ac ="; INT(100 * acg + .5) / 100

END IF

END SUB

 

SUB curva (ni, nt, cod$)

pi = 4 * ATN(1)

FOR i = 0 TO pi / 2 STEP pi / 640

seni = SIN(i)

cosi = COS(i)

z = (ni * seni / nt) ^ 2

cost = SQR(ABS(1 - z))

IF z >= 1 THEN cost = 0

SELECT CASE cod$

CASE "tm"

r = ((nt * cosi - ni * cost) / (nt * cosi + ni * cost)) ^ 2

col = 11

CASE "te"

r = ((ni * cosi - nt * cost) / (ni * cosi + nt * cost)) ^ 2

col = 14

END SELECT

x = 1280 * i / pi

y = 479 * (1 - r)

IF i = 0 THEN PSET (x, y)

LINE -(x, y), col

NEXT i

 

END SUB

 

SUB grilla (ni, nt)

FOR y = 0 TO 479 STEP 48

LINE (0, y)-(640, y), 8

NEXT y

FOR y = 0 TO 479 STEP 4.8

LINE (0, y)-(5, y), 8

LINE (634, y)-(639, y), 8

NEXT y

LINE (0, 479)-(639, 479), 8

FOR x = 0 TO 639 STEP 71

LINE (x, 0)-(x, 479), 8

NEXT x

FOR x = 0 TO 639 STEP 7.1

LINE (x, 0)-(x, 5), 8

LINE (x, 474)-(x, 479), 8

NEXT x

END SUB