Einzelnen Beitrag anzeigen

Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: Imaginären/Realen Anteil berechnen

  Alt 29. Apr 2007, 11:12
Pass auf, du hast 800 Pixel in der Breite und, 600 Pixel in der Höhe.

Und du hast Für die X-Achse also die Realwerte Von ReMin (-2,25) bis ReMax (0,75), sprich entsprechen 800Pixel in der Breite 3 Einheiten in der Gauschenzahlenebene.

Sprich um ein Pixel in die Gauschezahlenebene umzurechnen rechnest du Pixel/3

Auf der Y-Achse werden die Imaginärenzahlen aufgetragen.

Von ImMin=-1,5 bis ImMax=1,5 sprich wieder 3.

Also auch Pixel/3.

nun lässt du ein Programm laufen:

Delphi-Quellcode:
//Wahrscheinlich muss die unit math eingebunden werden: uses ..., math;

procedure PaintMandelOnCanvas(ReMin, ReMax, ImMin, ImMax: Real; MaxIt: integer; Canv: TCanvas);
var
  xalt, x, xc, yalt, y, yc, RePlane, ImPlane: real;
  n, i, j: integer;
begin
  RePlane := abs(ReMin) + abs(ReMax);
  ImPlane := abs(ImMin) + abs(ImMax);
  for i := 0 to 800 do
    for j := 0 to 600 do
    begin
      xalt := 0;
      yalt := 0;
      n := 0;
      xc := (i / RePlane) + ReMin; //Umrechnen in die Gauschezahlenebene
      yc := (j / ImPlane) - ImMin;
      while (xalt*xalt + yalt*yalt < 4) and (n < MaxIt) do
      begin
        inc(n);
        x := xalt*xalt - yalt*yalt + xc;
        y := 2 * xalt * yalt + yc;
        xalt := x;
        yalt := y;
      end;
      if n = MaxIt then
        Canv.Pixel[i, j] := clblack
      else
        //Färb je nach erreichter Iteration, veränderbar
        Canv.Pixel[i, j] := RGB(n, n div 2, (n+100)/3);
    end;
end;

So, ich hab das jetzt nicht getestet aber das sollte eine Schwarze Mandelbrotmenge geben mit gefärbtem Randbereich.
Jan
  Mit Zitat antworten Zitat