RosettaCodeData/Task/Julia-set/Oberon-07/julia-set.oberon
2026-04-30 12:34:36 -04:00

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.