Einzelnen Beitrag anzeigen

GuenterM

Registriert seit: 9. Feb 2004
Ort: Daheim
13 Beiträge
 
#1

Markierten Bereich vergrößern

  Alt 10. Feb 2004, 14:10
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
  Mit Zitat antworten Zitat