Gramatyki Lindenmayera
Gramatyki Lindenmayera Inna nazwa to równolegle przepisujące systemu lub L-systemy, Twórcą jest biolog Aristid Lindenmayer, który w 1968 roku stworzył formalny sposób opisu wzrostu roślin. Polegają na zamianie modułu zwanego rodzicem, matką lub przodkiem na moduł zwany dzieckiem, córką lub potomkiem.
Rodzaje L-systemów D0L-system - deterministyczny, bezkontekstowy L-system, D1L-system - deterministyczny, wrażliwy na kontekst L-system, 0L-system - stochastyczny, bezkontekstowy L-system, 1L-system - stochastyczny, z kontekstem jednostronnym L-system, 2L-system - stochastyczny, z kontekstem dwustronnym (prawym i lewym) L-system, parametryczny L-system, zegarowy L-system (Timed L-system).
L-systemy jak to działa: Przepisywanie zaczynamy od pojedynczego modułu zwanego aksjomatem, W trakcie symulacji korzystamy z reguł przepisania, które w najprostszym przypadku mają postać: Poprzednik Następnik Przepisanie polega znalezieniu reguły gdzie poprzednik pasuje do modułu matki i zastąpieniu tego modułu sekwencją z następnika.
D0L-system – opis formalny D0L-system to uporządkowaną trójka G = (, P, ), gdzie = {s1, s2, . . . , sn} jest alfabetem, - aksjomatem oraz należy do zbioru *, który jest zbiorem wszystkich ciągów symboli z . Przekształcenie przepisywania jest określone jako: P : * z s P(s) dla każdego s. Każdemu symbolowi s odpowiada tylko jedna reguła przepisywania. L-system generuje kolejne sekwencje: (0), (1), (2), . . .. Sekwencje (i+1) otrzymujemy z poprzedniej (i) przez zastosowanie reguł podstawiania do wszystkich m symboli 1(i) , . . . , m(i) ciągu jednocześnie: (i+1) = P(1(i))P(2(i) ) . . . P(m(i) )
D0L-system – przykład Anabena Catenula - glon sinica Reguły przepisania: Sekwencja produkcji:
Grafika żółwia – podstawowe symbole Znaczenie F idź do przodu jeden krok o długości l i narysuj linie od poprzedniej pozycji do nowej idź do przodu jeden krok o długości l ale nie rysuj linii + obróć się w lewo (przeciwnie do ruchu wskazówek zegara) o stały kąt - obróć się w prawo (zgodnie z ruchem wskazówek zegara) o stały kąt
Grafika żółwia Matematycznie można powiedzieć, ze żółwiowi przypisuje się stan który składa się z bieżącego położenia, oznaczonego para współrzędnych x i y oraz bieżącego kierunku, wyrażonego przez kat . Zapisuje się to jako trojkę liczb (x, y, ). Zmiana stanu żółwia następuje po każdym wykonaniu polecenia.
Grafika żółwia Wykorzystując elementarne własności trygonometryczne zbiór poleceń dla żółwia można zapisać teraz następująco: Symbol stan (x, y, ) przechodzi w F (x + l cos , y + l sin ,_) (x + l cos , y + l sin ,) + (x, y, − ) - (x, y, + )
Grafika żółwia l – oznacza długość korku a to kąt o jaki żółw obraca się w prawo Stan początkowy to (0, 0, 0) co oznacza, ze żółw skierowany jest w prawo i znajduje się w początku bieżącego układu współrzędnych. Potrzebny będzie również czynnik redukcji do zmniejszania długości kroku w kolejnych przypisaniach.
Grafika żółwia – przykład Zbiór Cantora: czynnik redukcji: 1/3, = 0, l= 400, Aksjomat: F, reguły przepisania: F->FfF f->fff Produkcje: FfFfffFfFfffffffffFfFfffFfF
Zadanie Stworzyć program z zastosowaniem L-systemów rysujący krzywą Peano Krzywa Peano: czynnik redukcji: 1/3, = 90, l= 300, Aksjomat: F, reguły przepisania: F->FF+F+F+FF+F+F-F
Literatura H.-O. Peitgen, H. J¨urgens, D. Saupe Granice Chaosu Fraktale cz.2, Wydawnictwa Naukowe PWN, Warszawa 1996; A. Lindenmayer, P. Prusinkiewicz, The Algorithmic Beauty of Plants”, Springer-Verlag, Elektroniczna wersja opublikowana w 2004