[procedure] Drachenkurve

Zur Vorstellung von Komponenten und Units für Lazarus
Antworten
bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

[procedure] Drachenkurve

Beitrag von bembulak »

Hi!

Nachdem ich Coding for Fun gelesen habe und nun Interesse an Fraktalen entwickelt habe, möchte ich den Code mit euch teilen.

Folgende Prozedur erstellt eine sogenannte "Drachenkurve".

Code: Alles auswählen

procedure TForm1.dragon(x0, y0, x1, y1, level: Integer);
var
   x2, y2 : Integer;
begin
   x2 := (x0 + x1 + y0 - y1) div 2;
   y2 := (-x0 + x1 + y0 + y1) div 2;
 
   if (level <= 0) then
   begin
        self.Canvas.Pen.Color := clRed;
        self.Canvas.Line(x0, y0, x2, y2);
        self.Canvas.Line(x2, y2, x1, y1);
   end else
   begin
        dragon(x0, y0, x2, y2, level-1);
        dragon(x1, y1, x2, y2, level-1);
   end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
   dragon(50, 200, 700, 500, 12);
end;
Dateianhänge
dragonpasdm4.png

Antworten