DECLARE SUB curva (r!, l!, n!, h1!, h2!, col!)
n = 1: h1 = 1: h2 = 2: R1 = .86: R2 = .042: l1 = .46: l2 = .7
SCREEN 12
LOCATE 10, 1
PRINT " PROGRAMA 'AIRY'"
PRINT
PRINT
PRINT " Grafica la transmisividad de una placa de
caras planas de indice de"
PRINT "refraccion n
y espesor h variable entre los limites h1 y h2, iluminada en"
PRINT "incidencia
normal con dos longitudes de onda l1 y l2, y con dos valores"
PRINT "distintos R1
y R2 de la reflectividad de ambas caras. Esta reflectividad se"
PRINT "supone
producida por una capa especular agregada y no por una reflexion de"
PRINT
"Fresnel."
PRINT "Es para
estudiar el perfil de las franjas de interferencia multiple"
PRINT "Los valores
predeterminados corresponden al ejemplo de la Fig. 2.3"
PRINT "Longitudes
en micrones "
PRINT "Para
terminar entrar el valor n = 0"
DO: LOOP WHILE INKEY$ = ""
DO
CLS
PRINT "n ="; n; : INPUT a$: IF a$ <> "" THEN n
= VAL(a$)
IF n = 0 THEN END
PRINT "h1 ="; h1; : INPUT a$: IF a$ <> "" THEN
h1 = VAL(a$)
PRINT "h2 ="; h2; : INPUT a$: IF a$ <> "" THEN
h2 = VAL(a$)
PRINT "R1 ="; R1; : INPUT a$: IF a$ <> "" THEN
R1 = VAL(a$)
PRINT "R2 ="; R2; : INPUT a$: IF a$ <> "" THEN
R2 = VAL(a$)
PRINT "l1 ="; l1; : INPUT a$: IF a$ <> "" THEN
l1 = VAL(a$)
PRINT "l2 ="; l2; : INPUT a$: IF a$ <> "" THEN
l2 = VAL(a$)
CLS
LOCATE 30, 1: PRINT h1; : LOCATE 30, 76: PRINT h2;
FOR x = 0 TO 640 STEP 64
IF x = 640 THEN x = 639
LINE (x, 0)-(x, 480), 8
NEXT x
FOR x = 0 TO 640 STEP 6.4
LINE (x, 0)-(x, 5), 8
LINE (x, 474)-(x, 479), 8
NEXT x
FOR y = 0 TO 480 STEP 48
IF y = 480 THEN y = 479
LINE (0, y)-(640, y), 8
NEXT y
FOR y = 0 TO 480 STEP 4.8
LINE (0, y)-(5, y), 8
LINE (634, y)-(639, y),
8
NEXT y
CALL curva(R1, l1, n, h1, h2, 4)
CALL curva(R2, l1, n, h1, h2, 4)
CALL curva(R1, l2, n, h1, h2, 9)
CALL curva(R2, l2, n, h1, h2, 9)
DO: LOOP WHILE INKEY$ = ""
LOOP
SUB curva (r, l, n, h1, h2, col)
pi = 4 * ATN(1)
f = 4 * r / ((1 - r) ^ 2)
FOR h = h1 TO h2 STEP (h2 - h1) / 640
it = 1 / (1 + f * (SIN(2 * pi * n * h / l)) ^ 2)
xp = 640 * (h - h1) / (h2 - h1)
yp = 480 * (1 - it)
IF h = h1 THEN PSET (xp, yp)
LINE -(xp, yp), col
NEXT h
END SUB