Przeczytaj
Dzięki funkcjom rekurencyjnymrekurencyjnym możemy uzyskać różne znane fraktalefraktale. Są to między innymi:
zbiór Cantora,
płatek Kocha,
dywan Sierpińskiego,
drzewo binarne.
Do tworzenia takich obrazów w języku Python doskonale nadaje się moduł turtleturtle.
W funkcjach będziemy wykorzystywać obiekt klasy Turtle
do utworzenia obiektu żółwia. Ponieważ funkcja rekurencyjna wywołuje samą siebie wielokrotnie, obiekt żółwia musi być do niej przekazany jako jeden z parametrów. W przeciwnym razie wyniki działania funkcji rekurencyjnej mogłyby być nieprzewidywalne.
Algorytm opisowy do generowania dywanu Sierpińskiego
Dywan Sierpińskiego otrzymujemy z kwadratu przez podzielenie go na dziewięć mniejszych kwadratów (3 x 3). Następnie środkowy kwadrat zostaje zamalowany. Ponownie rekurencyjnie wywołujemy tę funkcję dla każdego z pozostałych kwadratów.
Spróbujmy zdefiniować algorytm tworzenia geometrycznej prezentacji:
Na podstawie powyższego opisu zapiszemy kod funkcji:
Efekt wykonania algorytmu wygląda następująco:
Algorytm opisowy do generowania zbioru Cantora
Zbiór Cantora to odcinek, z którego wycinamy część środkową, pozostawiając odcinki pierwszej i trzeciej części. Następnie analogicznie postępujemy z każdą z pozostałych części. W każdym kolejnym kroku liczba części odcinka zwiększa się dwukrotnie, a długość narysowanych odcinków maleje. Kolejne kroki narysowane jeden pod drugim tworzą układ fraktalny.
Spróbujmy zdefiniować algorytm tworzenia geometrycznej prezentacji:
Opierając się na powyższym algorytmie, wykonamy implementację w języku Python. W tym celu wykorzystamy moduł turtle
:
Powyższy kod nie spowoduje jednak wyrysowania fraktala – brakuje w nim poleceń, które wywołałyby rysowanie na różnych poziomach. Musimy zatem napisać dodatkową funkcję, która pomoże w tworzeniu obrazu:
Kod niezbędny do wyrysowania fraktala i wygenerowania obrazu to:
Algorytm opisowy do generowania płatka Kocha
Płatek Kocha powstaje w wyniku podziału odcinka na trzy części i usunięcia środkowej, a w jej miejsce wstawieniu trójkąta równobocznego o boku długości usuniętego odcinka. Taki algorytm stosujemy dla każdego fragmentu odcinka bazowego, a następnie dla każdego fragmentu każdego kolejnego pododcinka – i tak dalej. Taka figura może mieć nieskończoną długość, gdyż każdy podział tworzy cztery razy więcej odcinków niż poprzedni.
Spróbujmy zdefiniować algorytm tworzenia geometrycznej prezentacji:
Na podstawie takiego opisu zapiszemy kod funkcji:
A oto efekt wykonania algorytmu:
Algorytm opisowy do generowania drzewa binarnego
Drzewo binarne to odcinek, który dzieli się na dwa kolejne, każdy rysowany pod kątem 45 stopni w lewo i 45 stopni w prawo. W ten sposób powstaje swego rodzaju „korona drzewa”. W kolejnym module tego e‑materiału znajdziesz prezentację multimedialną, dzięki której dokładnie prześledzisz proces powstawania tego fraktala.
Spróbujmy zdefiniować algorytm tworzenia geometrycznej prezentacji:
Na podstawie powyższego opisu zapiszemy kod funkcji:
Efekt wykonania algorytmu wygląda następująco:
Podsumujmy najważniejsze elementy tego e‑materiału.
Fraktale to figury geometrycznie nieskończenie samopodobne.
Możemy przygotować funkcje rekurencyjne i wizualizować je za pomocą modułu
turtle
.Obiekt żółwia przy funkcjach rekurencyjnych musimy tworzyć poza przestrzenią nazwprzestrzenią nazw funkcji.
Słownik
(łac. fractus – złamany, cząstkowy, ułamkowy) obiekt składający się z coraz bardziej złożonych detali, z których każdy jest podobny do całości
(ang. namespace) miejsce w pamięci operacyjnej, w której jest przechowywana dana zmienna; najczęściej przestrzeń nazw wiąże się z funkcją, a zmienne używane w niej są widoczne tylko w obrębie tej przestrzeni – jest to „zakres obowiązywania” tych zmiennych
proces polegający na wywoływaniu funkcji przez siebie samą do momentu rozwiązania określonego zadania
(z ang. żółw) moduł (standardowa biblioteka) w języku Python realizujący grafikę żółwia