czwartek, 12 grudnia 2013

Fraktale w LOGO

Fraktale to, najprościej ujmując, wielokrotnie powtarzane motywy w postaci krzywych. Charakteryzują się tym, że ich części składowe są pomniejszonym obrazem całości.
Klasycznym przykładem fraktala jest płatek Kocha.




Jako stopień zerowy tego fraktala przyjmujemy odcinek o długości :n
(wywołanie koch 0 100).



Stopień pierwszy powstaje przez podział odcinka na trzy równe części, a następnie zastąpienie środkowej części dwoma złączonymi odcinkami równymi części usuniętej (wywołanie koch 1 100).



Aby utworzyć stopień drugi, musisz podzielić każdy z odcinków na 4 nowe (wywołanie koch 2 100).



Tak będzie się prezentować się wywołanie koch 4 100.



A oto procedura w języku Logo:

oto koch :st :a
jeśli :st = 0 [np :a stop]
koch :st - 1 :a / 3 pw 60
koch :st - 1 :a / 3 lw 120
koch :st - 1 :a / 3 pw 60
koch :st - 1 :a / 3
już

Możemy sprawdzić jej działanie wywołując ją z takimi parametrami:
koch 0 200
koch 1 200
koch 2 200
koch 3 200
koch 4 200

No to teraz idźmy dalej i opracujmy procedurę gwiazdka.

oto gwiazdka :st :a
powtórz 3 [ koch :st :a lw 120]
już

Wywołuj procedurę z różnymi parametrami:
gwiazdka 0 200
gwiazdka 1 200
gwiazdka 2 200
gwiazdka 3 200
gwiazdka 4 200

Drzewo binarne
oto dbin :wiek :pien
jeśli :wiek = 0 [np :pien pw 180 np :pien stop]
np :pien
lw 45
dbin :wiek - 1 :pien * 0,6
lw 90
dbin :wiek - 1 :pien * 0,6
lw 45 np :pien
już



dbin 0 50
dbin 1 50
dbin 2 50
.........
dbin 6 50

Przykład skryptu w środowisku Scratch



Plaster miodu
Oto plaster :poziom :bok
jeśli :poziom = 0 [stop]
powtórz 6 [ np :bok plaster :poziom - 1 :bok/2 pw 360/6]
już

(obrazek)

plaster 1 100
plaster 2 100
plaster 3 100
............
plaster 6 100



Trójkąt Śierpińskiego
oto troj :a
powtórz 3 [np :a pw 120]
już
oto sierp :n :a
jeśli :n = 0 [troj :a stop]
troj :a
sierp :n - 1 :a / 2
np :a / 2
sierp :n - 1 :a / 2
pw 60
np :a / 2 pw 60
sierp :n - 1 :a / 2
lw 60 ws :a / 2
lw 60 ws :a / 2
już
oto sierpinski :n :a
cs
pw 30
sierp :n :a
już


(obrazki)

Brak komentarzy:

Prześlij komentarz

Uwaga: tylko uczestnik tego bloga może przesyłać komentarze.