piątek, 26 kwiecień 2024
 
Strona główna Algorytmy Fraktale

Fraktale

  1. Wstęp
  2. Drzewo
  3. Płatek Kocha
  4. Liść paproci
  5. Dywan Sierpińskiego

  1. Wstęp

    program demonstracyjny zolw.zip (237kB)

    Poniższe przykłady wykorzystują grafikę żółwia, opisaną na stronie dotyczącej Delphi.

  2. Drzewo

    drzewo
    procedure drzewo(d,k:extended);
    begin with p do
          if d<2 then nkatop(d,12)
          else
          begin np(d);
                lw(k);
                drzewo(0.6*d,k);
                pr(2*k);
                drzewo(0.6*d,k);
                lw(k);
                ws(d);
          end;
    end;
    
    // przykładowe wywołanie
    procedure TForm1.Button7Click(Sender: TObject);
    begin   p.pod;p.upoz(0,-200);p.opu;
            drzewo(100,40);
    end;
    
    do góry
  3. Płatek Kocha

    Płatek Kocha
    procedure koch(d:extended);
    begin   with p do
            if d<1 then np(d)
            else
            begin   koch(d/3);
                    lw(60);koch(d/3);
                    pr(120);koch(d/3);
                    lw(60);koch(d/3);
            end;
    end;
    
    //przykładowe wywołanie
    procedure TForm1.Button13Click(Sender: TObject);
    begin   p.pod;p.upoz(-200,-150);p.opu;
            koch(300);p.pr(90);
            koch(300);p.pr(90);
            koch(300);p.pr(90);
            koch(300);p.pr(90);
    end;
    
    do góry
  4. Liść paproci

    Paprotka
    procedure paprotka(d,k:Double);
    begin with p do
          if d>1 then
          begin  np(d/2);
                 lw(70+k);paprotka(0.5*d,k);
                 pr(70+k);np(d/2);
                 pr(70-k);paprotka(0.5*d,-k);
                 lw(70-k);
                 pr(k);
                 paprotka(d-1,k);
                 lw(k);
                 ws(d);
          end;
    end;
    
    //przykładowe wywołanie
    procedure TForm1.Button4Click(Sender: TObject);
    begin  p.pod;p.upoz(0,-200);p.opu;
                   paprotka(30,2);
    end;
    
    do góry
  5. Dywan Sierpińskiego

    Sierpiński
    procedure sierpinski(d:Double);
    var i:integer;
    begin   with p do
            if d>1 then
            begin    for i:=1 to 3 do
                     begin   sierpinski(d/2);
                             np(d);
                             pr(120);
                     end;
            end;
    end;
    
    //przykładowe wywołanie
    procedure TForm1.Button5Click(Sender: TObject);
    begin   p.pod;p.upoz(-200,-200);p.opu;
            p.pr(30);
            sierpinski(400);
            p.lw(30);
    end;
    
    do góry
© mgr inż. Piotr Kotarski, Kalety