puyo-3/examples/mandelbrot.puyo

53 lines
1 KiB
Text

while := ();
fn while([test body]) (
if test! [
body!;
while test body;
] [];
);
fn for([start stop body]) (
i := start;
while [i < stop] [
body i;
i := i + 1;
];
);
fn map([min0 max0 min1 max1 x]) (
min1 + (((x - min0) * (max1 - min1)) / (max0 - min0))
);
xmin := -1.5;
xmax := 0.47;
ymin := -1.12;
ymax := 1.12;
char_width := 110;
char_height := 50;
scale_x := map {^min0 := 0; ^max0 := char_width; ^min1 := xmin; ^max1 := xmax};
scale_y := map {^min0 := 0; ^max0 := char_height; ^min1 := ymin; ^max1 := ymax};
iter_max := 26;
# why is Y changing
for 0 char_height fn([y]) (
for 0 char_width fn ([x]) (
x0 := scale_x x;
y0 := scale_y y;
x := 0;
y_ := 0;
iter := 0;
while [(x**2 + y_**2 <= 2**2) * (iter < iter_max)] [
xtemp := x**2 - y_**2 + x0;
y_ := 2*x*y_ + y0;
x := xtemp;
iter := iter + 1;
];
put (if (iter = iter_max) 32 (64 + iter));
);
put 10;
);