SCREEN 12
LOCATE 6, 1
PRINT " PROGRAMA
'ABALACAR'"
PRINT "Aberraciones
a la carta."
PRINT "Construye un
diagrama de puntos ficticio a partir de coeficientes de aberracion"
PRINT "de tercer
orden suministrados arbitrariamente."
PRINT "Para
homologarlos, se toma un valor 100 como aquel que si se presenta solo"
PRINT "llena el
marco cuadrado."
PRINT "La
distorsion y la curvatura de campo no se consideran porque no afectan la"
PRINT "imagen, en
este contexto."
PRINT "Se introduce
la aberracion de primer orden 'defoco' para examinar la imagen a lo"
PRINT "largo del
eje."
PRINT "La
composicion de las aberraciones modifica la dimension de la figura
resultante"
PRINT "y la coma
introduce una asimetria. Para compensar ambas cosas se debe corregir"
PRINT "manualmente
variando la escala y el corrimiento horizontal hasta encuadrar la"
PRINT
"imagen."
PRINT "Sirve para
comparar con el trazado de rayos."
PRINT "Los valores
predeterminados corresponden al primer cuadro de la fig. 4.23"
PRINT "Para terminar,
poner escala = 0."
DO: LOOP WHILE INKEY$ = ""
CLS
eesf = 0
ccma = 100
aast = 100
ddfc = 0
ddhz = -.91
esc = .63
DO
LOCATE 1, 1
PRINT "aberracion esferica ="; eesf; : INPUT a$
IF a$ <> "" THEN eesf = VAL(a$)
esf = eesf * .6
PRINT "coma ="; ccma; : INPUT a$
IF a$ <> "" THEN ccma = VAL(a$)
cma = ccma * 1.6
PRINT "astigmatismo ="; aast; : INPUT a$
IF a$ <> "" THEN aast = VAL(a$)
ast = aast * 1.2
PRINT "defoco ="; ddfc; : INPUT a$
IF a$ <> "" THEN ddfc = VAL(a$)
dfc = ddfc * 2.4
PRINT "desplazamiento horizontal ="; ddhz; : INPUT a$
IF a$ <> "" THEN ddhz = VAL(a$)
dhz = ddhz * 240
PRINT "escala
="; esc; : INPUT a$
IF a$ <> "" THEN esc = VAL(a$)
IF esc = 0 THEN END
CLS
20 FOR i = 1 TO 5000
3 y = 2 * RND - 1
z = 2 * RND - 1
IF y ^ 2 + z ^ 2 > 1 THEN 3
yesf = 4 * esf * y * (y
^ 2 + z ^ 2)
zesf = 4 * esf * z * (y
^ 2 + z ^ 2)
ycma = cma * (3 * y ^ 2
+ z ^ 2)
zcma = 2 * cma * y * z
yast = 2 * ast * y
zast = 0
ydfc = dfc * y
zdfc = dfc * z
y = yesf + ycma + yast +
ydfc
z = zesf + zcma + zast +
zdfc
yp = 240 + dhz + esc * y
zp = 240 + esc * z
LINE (yp, zp)-(yp + 1, zp + 1), 15, BF
NEXT i
LINE (0, 0)-(479, 479), , B
LOCATE 14, 65: PRINT "esf ="; eesf
LOCATE 15, 65: PRINT "cma ="; ccma
LOCATE 16, 65: PRINT "ast ="; aast
LOCATE 17, 65: PRINT "dfc ="; ddfc
DO: LOOP WHILE INKEY$ = ""
LOOP