Fraktalne krzywe Béziera
Gładka krzywa i płatek śniegu, narysowane tym samym sposobem.
Trzy punkty — początek, punkt kontrolny i koniec — wyznaczają kwadratową krzywą Béziera. Przetnij krzywą na pół, a każda połowa znów jest taką krzywą, z własnym, mniejszym trójkątem. Zastąp każdy trójkąt jego dwiema połowami, i jeszcze raz, i jeszcze, a linia zbliża się do krzywej. Zastąp go innymi trójkątami, a ta sama procedura narysuje fraktal: płatek Kocha, grot Sierpińskiego, katedrę, choinkę.
Wybierz kształt i zmień jego regułę: przeciągaj rogi trójkątów, dodawaj nowe albo usuwaj, a rysunek pójdzie za tym. Rysunek powstaje w przeglądarce; link zachowuje regułę, więc otwiera ten sam rysunek ponownie.
Poziom 5 · 3072 kawałki Wersja 1.2
Reguła
Reguła to lista mniejszych trójkątów ułożonych w dużym, a duży może mieć dowolny kształt: reguła jest zapisana względem niego. W edytorze duży trójkąt to szary trójkąt równoboczny — początek w lewym dolnym rogu, koniec w prawym dolnym, punkt kontrolny u góry. Każdy mały trójkąt ma te same trzy role, a jego cięciwa — gruba linia od początku do końca, ze strzałką — jest tym, co zostaje narysowane, kiedy trójkąt jest gotowy. Na następnym poziomie każdy mały trójkąt staje się dużym dla własnej kopii reguły.
Połowy krzywej to dwa trójkąty: od początku do środka krzywej, z punktem kontrolnym w połowie lewego ramienia, i stamtąd do końca. Podziel trójkąt gładkiej reguły na pół jeszcze raz, a reguła zostanie gładka — krzywa jest ta sama, tylko pocięta drobniej. Przesuń dowolny róg poza krzywą, a powstanie fraktal. Odwrócenie trójkąta przebiega go od końca do początku, więc to, co na nim wyrasta, wychodzi w lustrzanym odbiciu — z wyjątkiem gładkiej reguły, gdzie odcinek krzywej przebiegany od końca to wciąż ten sam odcinek.
| Reguła | Trójkąty | Rysunek |
|---|---|---|
| Gładka | odcinki krzywej dużego trójkąta, w którąkolwiek stronę, pokrywające ją całą | ta krzywa Béziera |
| Łańcuch | łączą się końcami, od początku do końca | jedna ciągła linia, choćby najbardziej poszarpana |
| Luźna | nie łączą się końcami | gałęzie albo pył |
Jednej krzywej tym sposobem się nie narysuje: okręgu. Każdy krok to przekształcenie afiniczne, a ono zamienia okrąg w elipsę, więc żadna stała reguła nie da go dokładnie — połowy samego okręgu musiałyby się zmieniać z poziomu na poziom, coraz bliżej reguły Béziera. Znalezione ręcznie Koło trzyma się okręgu z dokładnością 1,4% na trzech łukach, a z bliska jest fraktalem.
Rysunek
Reguła zaczyna od podstawy: jednego łuku; trzech łuków wokół trójkąta, wygiętych na zewnątrz, na których reguła Kocha robi płatek śniegu; albo dwóch łuków od dolnych rogów do wspólnego szczytu, lustrzanych odbić — stąd choinka ma dwie strony. Głębokość to liczba zastosowań reguły. Trójkąty mniejsze od szczegółu rysunku nie są już dzielone, a poziom ze zbyt wieloma kawałkami nie jest rysowany wcale, więc reguła z siedmiu trójkątów zatrzymuje się wcześniej niż reguła z dwóch.
Całość wyrosła z krótkiego skryptu z 2011 roku, który zapisywał jeden rysunek do pliku. Kształty powyżej zbierały się w nim, większość w 2014 roku, i noszą dawne nazwy. Kod jest na GitHubie: bsulkowski/fractal-bezier.