Zitat von
Khabarakh:
Schaut euch einmal XaoS an, dessen Echtzeit-Zoom ist wirklich unglaublich.
Das ist echt nicht schlecht... Aber ich möchte höhere Auflösung und mehr Details, da nehme ich die Rechenzeiten auch in Kauf...
Das hier ist mein aktueller Code für die Iterationen. Habe das ganze schon um eine Variable und eine Zuweisung erleichtert.
Kann man da noch was mit Assambler rausholen? Jeder Takt zählt ^.^
Delphi-Quellcode:
procedure TMandelbrotSet.DrawSet(var Image: TImage);
var
Pxl_x, Pxl_y: integer;
dx, dy: double;
RealC, ImagC: double;
x0, x1, y1: double;
Iterations: integer;
begin
dx:=Range_X / Image.width;
dy:=Range_y / Image.height;
for Pxl_x:=0 to Image.width-1 do
begin
for Pxl_y:=0 to Image.width-1 do
begin
RealC:=(Center_x - 0.5 * Range_x) + (Pxl_x * dx);
ImagC:=(Center_y - 0.5 * Range_y) + (Pxl_y * dy);
Iterations:=0;
x0:=0;
y1:=0;
repeat
x1:=(x0*x0) - (y1*y1) + RealC;
y1:=(2*x0*y1) + ImagC;
x0:=x1;
Inc(Iterations);
until ( (iterations >= MaxIterations) or (((x1*x1) + (y1*y1)) >= MaxValue) );
if (iterations=MaxIterations) then
Image.Canvas.Pen.Color:=clBlack
else
Image.Canvas.Pen.Color:=ChooseColor(Iterations);
Image.Canvas.MoveTo(Pxl_x,Pxl_y);
Image.Canvas.LineTo(Pxl_x+1,Pxl_y);
end;
end;
end;