DEFDBL A-Z

CLS

COLOR 15

LOCATE 6, 1

PRINT "                              PROGRAMA 'CAUSTICA'"

PRINT

PRINT

PRINT "La caustica se origina en la aberracion esferica. En la aproximacion de"

PRINT "tercer orden la altura de interseccion de un rayo sobre el plano"

PRINT "paraxial es proporcional al cubo de la altura sobre la pupila."

PRINT "En el grafico la pupila esta hacia la izquierda a una distancia grande X0"

PRINT "y tiene un radio grande RP, en unidades arbitrarias."

PRINT "El grafico comienza a x pixels (0<x<640) a la izquierda del plano paraxial."

PRINT "Se dibuja el plano paraxial y un numero par N de rayos."

PRINT "Los valores predeterminados corresponden a la fig.4.18. "

PRINT "Para terminar poner N = 0"

DO: LOOP WHILE INKEY$ = ""

bv = .25

x0 = -8000

rp = 8000

x = 147

n = 10

SCREEN 12

CLS

DO

PRINT "coeficiente B1 ="; bv;

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

PRINT "Distancia a la pupila X0 ="; x0;

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

PRINT "Radio de la pupila RP ="; rp;

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

PRINT "Distancia del plano paraxial al borde izquierdo x ="; x;

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

PRINT "Mitad del numero de rayos N/2 ="; n;

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

IF n = 0 THEN END

CLS

FOR y0 = -rp TO rp STEP rp / n

b = bv / 1000000000

y = b * y0 ^ 3

y1 = (y - y0) * (640 - x) / (x - x0) + y

yc0 = -y0 + 240

yc1 = -y1 + 240

LINE (x0, yc0)-(640, yc1)

NEXT y0

LINE (x, 0)-(x, 480)'

DO: LOOP WHILE INKEY$ = ""

LOOP