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