Ich hab ein Mandelbrot-Programm geschrieben, das Funktioniert auch wunderbar, allerdings klappt die Vergrößerung nicht.
Ich will mit der Maus in der Paintbox einen Quadratischen Bereich auswählen und diesen dann Vergrößern, also die Mandelbrotiteration über die neu ausgewählte Punktemenge laufen lassen.
Mit anderen Worten: die Eckpunktkoordinaten des Rechtecks sollen als neue amin,amax,bmin und bmax (siehe Quellcode) verwendet werden.
Mein Problem ist, dass der vergrößerte Bereich total verzerrt ist, und nicht immer auch der ausgewählte Bereich ist.
das ist der Code fürs Mandelbrot
Delphi-Quellcode:
xsmax:=paintbox1.Width;
ysmax:=paintbox1.Height;
amin :=strtofloat(edit1.text);
//diese Koordinaten sollen dann durch die Rechteckskoordinaten
bmin :=strtofloat(edit2.text);
//ersetzt werden.
amax :=strtofloat(edit3.text);
//Mein Problem ist die Umrechnng
bmax :=strtofloat(edit4.text);
max :=strtoint(edit5.text);
da := (amax-amin) / xsmax;
db := (bmax-bmin) / ysmax;
a := amin;
for xs:=0
to xsmax
do
begin
b := bmax;
for ys:=0
to ysmax
do
begin
n:=0;
x:=a; y:=b;
repeat
xneu := x*x - y*y + a;
yneu := 2*x*y + b;
x := xneu; y := yneu;
radius := sqrt(x*x + y*y);
inc(n);
until (n > max)
or (radius > 2);
if n < max
then
begin
paintbox1.canvas.Pixels[xs,ys]:=TColor(n*10);
end
else begin
paintbox1.canvas.Pixels[xs,ys]:=clwhite;
end;
b := b -
db
end;
a := a + da
end;
end;
Vielen Dnak schon mal im Vorraus