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