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.

Reguła

Łańcuch: trójkąty łączą się końcami, więc rysunek jest jedną ciągłą linią.

Przeciągaj rogi. Kliknij trójkąt, żeby wybrać go dla przycisków. Na klawiaturze Shift i Alt przełączają dwie opcje poniżej, dopóki są wciśnięte.

Podstawa
10
Linia

Poziom 5 · 3072 kawałki Wersja 1.2

0123
Jak rośnie: poziomy 0–3 na jednym łuku, z trójkątami

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łaTrójkątyRysunek
Gładkaodcinki 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ńcajedna ciągła linia, choćby najbardziej poszarpana
Luźnanie łączą się końcamigałę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.