🌱 L-systemy — proceduralne rośliny
Reguły przepisywania Lindenmayera tworzą rośliny, krzywe fraktalne i wzory wypełniające przestrzeń. 10 presetów — Koch, Hilbert, smok, paproć, Sierpiński.
O L-systemach
Ta symulacja rozwija systemy Lindenmayera: ciąg zwany aksjomatem jest przepisywany przez kilka iteracji za pomocą reguł produkcji, gdzie każdy symbol jest równolegle zastępowany swoim ciągiem zastępczym. Ostateczny ciąg jest odczytywany jako polecenia grafiki żółwia. F i G rysują odcinek do przodu, plus i minus obracają o wybrany kąt, a nawiasy kwadratowe zapisują i przywracają na stosie pozycję oraz kierunek żółwia, tworząc gałęzie.
Menu presetów wczytuje dziesięć klasycznych systemów, takich jak Roślina fraktalna, płatek Kocha, krzywa smoka, krzywa Hilberta i paproć w stylu Barnsleya. Suwak Iteracje ustala głębokość przepisywania, Kąt kontroluje wielkość obrotu, a Długość odcinka skaluje każdy segment. Rysuj renderuje wynik, a Animuj wzrost stopniowo odsłania kolejne segmenty. L-systemy są podstawą proceduralnego modelowania roślin, drzew i naturalnych rozgałęzień w grafice i biologii.
Najczęściej zadawane pytania
Czym jest L-system?
L-system, czyli system Lindenmayera, to gramatyka formalna, która wielokrotnie przepisuje początkowy ciąg znaków zwany aksjomatem, stosując reguły produkcji. Powstały ciąg jest interpretowany geometrycznie, najczęściej jako polecenia grafiki żółwia. Został opracowany przez biologa Aristida Lindenmayera w 1968 roku do modelowania wzrostu roślin.
Jak dokładnie działa przepisywanie?
Każda iteracja skanuje bieżący ciąg i jednocześnie zastępuje każdy symbol prawą stroną odpowiadającej mu reguły, pozostawiając symbole bez reguły bez zmian. Na przykład przy regule F na FF ciąg F staje się FF, potem FFFF i tak dalej. To równoległe podstawianie odróżnia L-systemy od zwykłych gramatyk sekwencyjnych.
Co oznaczają symbole w regułach?
W tym symulatorze F i G przesuwają żółwia do przodu i rysują linię, a A i B przesuwają go do przodu bez rysowania — używane przy krzywych wypełniających przestrzeń. Znaki plus i minus obracają kierunek w prawo i w lewo o zadany kąt, a nawiasy kwadratowe zapisują i przywracają stan żółwia, tworząc gałęzie.
Co kontrolują trzy suwaki?
Iteracje ustalają, ile razy zastosowane zostaną reguły, więc wyższe wartości dają wykładniczo dłuższe ciągi i więcej szczegółów. Kąt to wielkość obrotu w stopniach przy każdym plusie lub minusie. Długość odcinka skaluje każdy segment w pikselach, zmieniając ogólny rozmiar, zanim widok automatycznie dopasuje się do płótna.
Dlaczego zwiększanie liczby iteracji spowalnia symulację?
Ponieważ każda iteracja może pomnożyć długość ciągu przez średni rozmiar reguły, wzrost jest w przybliżeniu wykładniczy. System z regułą F na FF podwaja się co krok, więc dziewięć iteracji może dać setki tysięcy znaków. Kod ogranicza ciągi do około 1,5 miliona symboli, aby przeglądarka pozostała responsywna.
Czym jest grafika żółwia?
Grafika żółwia to model rysowania, w którym wyimaginowany żółw porusza się po płótnie, niosąc pióro. Polecenia każą mu poruszać się do przodu, skręcać o dany kąt lub podnosić i opuszczać pióro. Przekładając ciągi L-systemu na te ruchy, abstrakcyjne sekwencje symboli zamieniają się w widoczne krzywe i rozgałęziające się kształty roślin.
Co robi stos nawiasów?
Nawias otwierający zapisuje na stosie bieżącą pozycję i kierunek żółwia, a nawias zamykający je przywraca. Dzięki temu gałąź może wyrosnąć, a następnie żółw wraca do miejsca, w którym gałąź się zaczęła, aby mogła wyrosnąć gałąź siostrzana. Zagnieżdżone nawiasy tworzą rekurencyjne, samopodobne rozgałęzienia widoczne w presetach Roślina fraktalna i Krzew.
Czy te kształty są matematycznie prawdziwymi fraktalami?
Wiele presetów odtwarza prawdziwe fraktale matematyczne, w tym krzywą Kocha, trójkąt Sierpińskiego, krzywą smoka, krzywą Lévy'ego C i krzywą Hilberta wypełniającą przestrzeń. Przy nieskończonej liczbie iteracji mają one dobrze zdefiniowany wymiar fraktalny. Na ekranie renderujemy skończone przybliżenie, ponieważ narysować można tylko ograniczoną liczbę kroków przepisywania.
Dlaczego presety roślin wyglądają tak realistycznie?
Prawdziwe rośliny rozwijają się poprzez powtarzające się, samopodobne rozgałęzienia rządzone lokalnymi regułami wzrostu, a dokładnie to kodują L-systemy z nawiasami. Wybór botanicznie wiarygodnych kątów w okolicach 20–25 stopni oraz reguł dzielących się na gałęzie lewe i prawe naśladuje fyllotaksję i wzrost wierzchołkowy, dzięki czemu wynik przypomina paprocie, krzewy i drzewa.
Gdzie L-systemy są wykorzystywane w prawdziwym świecie?
L-systemy są szeroko stosowane w grafice komputerowej do proceduralnego generowania drzew, listowia i roślinności w filmach i grach, eliminując potrzebę ręcznego modelowania każdej rośliny. Pojawiają się też w modelowaniu biologicznym wzrostu, w sztuce generatywnej oraz w algorytmach syntezy realistycznych sieci dróg i układów miast.