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”
