Strona główna » Poradniki » Logomocja » Galeria » Dywan Sierpińskiego

Dywan Sierpińskiego

Dywan Sierpińskiego

Wstęp

Dywan Sierpińskiego jest fraktalem, który polega na wycięciu 9 razy mniejszego kwadratu z większego. Przykładowo rysujemy kwadrat, a następnie dzielimy go na 9 równych części i usuwamy środkową. Następnie te kroki należy powtórzyć dla każdego z kwadratów (prócz środkowego).

Implementacja

Przyjmuje się, że w przypadku rysowania dywanu Sierpińskiego stopnia 1 procedura narysuje jedynie obwódkę największego kwadratu.

Kod

Program rysuje dywan Sierpińskiego w sposób rekurencyjny. Procedura przyjmuje dwa parametry: :a - określa długość boku aktualnie rysowanego kwadratu oraz :deep - określa ile jeszcze razy funkcja ma być wykonana rekurencyjnie.

  1. oto KwadratSierpińskiego :a :deep
  2.   jeśli (i :deep > 0 :a > 1)[
  3.     pod
  4.     pw 45
  5.     np (:a*pwk(2))/3
  6.     lw 45
  7.     opu
  8.     powtórz (4) [np :a/3 pw 90]
  9.     pod
  10.     pw 45
  11.     ws (:a*pwk(2))/3
  12.     lw 45
  13.     opu
  14.     powtórz (4) [
  15.       powtórz (2) [
  16.         KwadratSierpińskiego :a/3 :deep-1 np :a/3
  17.       ]
  18.       np :a/3 pw 90
  19.     ]
  20.   ]
  21. już

(2.) O ile dana iteracja ma być wywołana oraz jeśli jest sens rysować to: (3. - 7.) przesuń żółwia do rysowania środkowego kwadratu, (8.) narysuj go i (9. - 13.) wróć do pozycji początkowej. Następnie (14. - 19.) narysuj 8 brzeżnych kwadratów według większego kwadratu.

Bardzo ważne, aby pamiętać, że podczas rekurencyjnego wywołania należy: ustawić nowy parametr :a na połowę aktualnego oraz wskazać, że kolejna warstwa została narysowana przekazując :deep - 1.