Um mal zusammenzufassen:
- Rekursion ist in der Regel langsamer als Iteration
- Parameter, lokale Variablen und Rückgabewerte nicht durcheinander werfen
So stelle ich mir das vor:
Delphi-Quellcode:
function zaehler(x, y, a, b: Real): Integer;
var
x2: Real;
begin
Result := 0;
while (Result <= 100) and (sqrt((x * x) + (y * y)) < 2) do
begin
x2 := (x * x) - (y * y) + a;
y := (2 * x * y) + b;
x := x2;
Inc(Result);
end;
end;
var
c: TColor;
za := zaehler(x, y, a, b);
case za of
0..9: c := clRed;
10..19: c := clGreen;
{...}
else c := clBlack;
end;
paintbox1.canvas.Pixels[s + 50, z + 50] := c;
Pixels ist so ziemlich die langsamste Möglichkeit eine Grafik auszugeben.
Besser du verwendest eine Bitmap und greifst mit Scanline darauf zu.
Die Bitmap dann komplett oder nach jeder Zeile zeichnen.
Alternativ gleich mit einer TImage-Komponente arbeiten (Image1.Picture.Bitmap).