53 lines
1 KiB
Text
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;
|
|
);
|