Temat: Ciekawe zbiory punktów.                                         zb-pkt.doc – 211 kB

 

Celem lekcji jest zapoznanie z przykładami figur samopodobnych (fraktalami).

 

Przebieg lekcji:

 

1. Rozwiązanie zadania:

 

Na płaszczyźnie dany jest trójkąt ABC. Po płaszczyźnie skacze żaba, która przed każdym skokiem losuje wierzchołek trójkąta  w kierunku którego wykona skok. Długość każdego skoku jest równa połowie odległości jaka dzieli ją od wylosowanego wierzchołka. Jaką figurę utworzą punkty płaszczyzny w których przebywała żaba?

 

            Rozwiązanie.

            Pierwszych 8 skoków żaby przedstawia rys.1.

Rys. 1. Pierwszych 8 skoków żaby.

 

            Do wykonania dalszych skoków można zastosować poniższy program „Zaba”.

 

program Zaba;                                    {Turbo Pascal}

uses Graph;

var  karta,tryb:integer; skok: real;

     n_kat,i,x,y,r,los:longInt;

begin

  karta:=detect; initGraph(karta,tryb,'');

  n_kat := 3;  skok := 1 / 2; r := 200; randomize;

  for i := 1 to 250 do

    begin

      putPixel(x + r, y + r, yellow);

      los := random(n_kat) + 1;

      x:=round(x+(r*cos(los*2*pi/n_kat)-x)*skok);

      y:=round(y+(r*sin(los*2*pi/n_kat)-y)*skok);

   end;

   readLn; closeGraph;

end.

program Zaba;                                    {Think Pascal}

var  n_kat, i, x, y, r, los: longInt;

     skok: real;

begin

  n_kat := 3;

  skok := 2 / 3;

  r := 100;

  for i := 1 to 250 do

    begin

      paintCircle(x + r, y + r, 1);

      los := abs(random) mod n_kat + 1;

      x:=round(x+(r*cos(los*2*pi/n_kat)-x)*skok);

      y:=round(y+(r*sin(los*2*pi/n_kat)-y)*skok);

   end;

end.

 

 

            Po uruchomieniu tego programu otrzymujemy 250 skoków żaby – rys.2.

Rys.2. 250 skoków żaby. Niektóre obszary trójkąta nie są odwiedzane przez żabę.

 

            Zmieniając w programie liczbę 250 na 100000 otrzymujemy figurę jak na rys.3.

Rys.3. Skoki żaby układają się w trójkąt Sierpińskiego.

Każdy fragment tej figury jest podobny do całości. Taką figurę nazywamy fraktalem.

 

2. Zapoznanie z innymi sposobem konstrukcji trójkąta Sierpińskiego.

 

Program Trojkat_Sierpinskiego;

uses graph;

var karta,tryb,n,k:integer;

begin

  karta:=detect; initgraph(karta,tryb,'');

  for n:=0 to 127 do

      for k:=0 to 127-n do

      if (n and k)=0 then putPixel(320+n-k,n+k,white);

  readln; closegraph;

end.

 

program trojkat_Sierpinskiego2;

uses graph;

var karta, tryb, n, k, i, bok: integer;

    tr:array[1..3,1..2] of integer;

procedure trojkat (x, y, bok, znak: integer);

begin

  tr[1,1]:=x; tr[1,2]:=y;

  tr[2,1]:=x-bok div 2; tr[2,2]:=y-znak*bok div 2;

  tr[3,1]:=x+bok div 2; tr[3,2]:=y-znak*bok div 2;

  fillPoly(3,tr);

end;

begin

  karta:=detect; initGraph(karta,tryb,'');

  bok:=128; trojkat(bok,0,bok*2,-1);

  setFillStyle(1,black);

  i:=0;

  repeat

    readLn;

    for n:=0 to i do

      for k:=0 to i do

        if n and k = 0 then

          trojkat((n-k)*(bok div (i+1))+bok,

          (n+k-i)*(bok div (i+1))+bok,bok div (i+1),1);

    i:=2*i+1;

  until i>64;

  closeGraph;

end.

 

Rys. 4. Kolejne etapy konstrukcji trójkata Sierpińskiego według programu „trojkat_Sierpinskiego2”.

 

3. Konstruowanie innych figur Sierpińskiego przy pomocy programu „Zaba”.

W programie należy zmieniać wartości zmiennych  n_kat,  skok, r. Zmienna n_kat oznacza rodzaj wielokąta, zmienna skok oznacza długość skoku żaby, zmienna r oznacza wielkość rysunku.

 

Zadanie. Dla jakich wartości zmiennych n_kat,  skok, r otrzymano poszczególne figury przedstawione na rys. 5?

 

Rys.5. Inne figury Sierpińskiego.

 

4. Konstruowanie kolorowych figur Sierpińskiego przy pomocy poniższego programu „Figury_Sierpinskiego