23 lines
782 B
Text
23 lines
782 B
Text
MODULE JuliaSet; (* Draw an ASCII art Julia set - translation of Lua *)
|
|
IMPORT Out;
|
|
|
|
VAR cmap : ARRAY 12 OF CHAR; (* 11 characters + trailing nul *)
|
|
y, zr, zi, zrp, zip : REAL;
|
|
i, xi, yi : INTEGER;
|
|
again : BOOLEAN;
|
|
BEGIN
|
|
cmap := " .:-=+*#%$@";
|
|
FOR yi := -100 TO 100 BY 5 DO
|
|
y := FLT( yi ) / 100.0;
|
|
FOR xi := -1500 TO 1500 BY 25 DO
|
|
zr := FLT( xi ) / 1000.0; zi := y; i := 0; again := TRUE;
|
|
WHILE again & ( i < 100 ) DO
|
|
zrp := zr; zip := zi;
|
|
zr := zrp*zrp - zip*zip - 0.79; zi := zrp * zip * 2.0 + 0.15;
|
|
IF zr*zr + zi*zi > 4.0 THEN (*break*) again := FALSE ELSE INC( i, 1 ) END
|
|
END;
|
|
Out.Char(cmap[ i DIV 10 ])
|
|
END;
|
|
Out.Ln
|
|
END
|
|
END JuliaSet.
|