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”