• Nie Znaleziono Wyników

1Wstęp L-systemy

N/A
N/A
Protected

Academic year: 2021

Share "1Wstęp L-systemy"

Copied!
7
0
0

Pełen tekst

(1)

1 Wstęp

L-systemy to pewne rodzaje gramatyk. Aksjomat to łańcuch startowy od którego zaczy- namy wszelkie wyprowadzenia. W zwykłej gramatyce każde wyprowadzenie zaczynało się od symbolu startowego. Wyprowadzenie słów w L-systemie jest odmienne. To zna- czy zaczynając od aksjomatu, w każdym kroku stosujemy wszystkie możliwe produkcje począwszy od lewej. Przykład:

G → gGGf (1)

Zaczynamy wyprowadzenie od aksjomatu G:

G =⇒ gGGf =⇒ ggGGf gGGf f =⇒ gggGGf gGGf f ggGGf gGGf f f... (2) Jeśli w każdym kroku dokładnie wiemy, którą produkcję zastosować to L-system jest nazywany deterministycznym. Jeśli w jakimś kroku istnieje więcej niż jedna możliwość zastosowania produkcji i dla każdej z nich przyporządkowane jest prawdpodobieństwo wyboru danej produkcji to l-system nazywany jest stochastycznym.

Będziemy używać na tych zajęciach L-systemów do generacji rysunków. Każdy sym- bol L-systemu będzie odpowiadał odpowiedniej operacji rysowania. Do generacji rysunku z gramatyki będziemy używać grafiki żółwia. Każdy terminal odpowiada pewnemu prze- mieszczeniu żółwia.

1.1 Grafika żółwia

Żółw znajduje się w dwuwymiarowym układzie współrzędnych. Żółw ma 3 atrybuty:

pozycję, orientację, mazak, który ma takie atrybuty jak kolor, grubość, dół lub góra (dół oznacza, że mazak przykładany jest do papieru). Żółw porusza się po układzie za pomocą komend, które odnoszą do jego aktualnego położenia.

Przykładowe komendy z programu JFLAP:

• terminal g - oznacza przesunięcie do góry

• + oznacza obrót w prawo o wcześniej zdefiniowaną liczbę stopni.

Przykład 1.

X → gggX + g (3)

(2)

Rysunek 2: Przykładowy L-system.

Aksjomatem jest X. Pierwsza iteracja:

X =⇒ gggX + g (4)

Na rysunku będą 3 kreski do góry, + oznacza obrócenie się w prawo, i jedna kreska w prawy górny róg Rys. 1.

Druga iteracja:

X =⇒ ggggggX + g + g (5)

Na rysunku będzie 6 kresek do góry, jedna kreska w bok i druga kreska w bok, ale pod większym kątem Rys. 2.

itd.

Przykład 2.

X → g[+ Y g]gX (6)

Y → +Y (7)

Aksjomat: X.

Pierwsza iteracja:

X =⇒ g[+ Y g]gX (8)

Nawiasy kwadratowe oznaczają stos. Najpierw renderowane są wszystkie symbole poza stosem, a na samym końcu stos. Stos jest renderowany począwszy od pozycji w której się znajdował. Zastosowanie stosu pozwala na robienie odgałęzień. Tylda oznacza zmniejsze- nie grubości linii. W pierwszej iteracji najpierw rysujemy kreskę do góry, później kolejną kreskę do góry. Następnie przetwarzamy stos. Zaczynając od pozycji po pierwszej kre- sce zmniejszamy grubość linii, obracamy żółwia w prawo i rysujemy kreskę Rys. 3. Na rysunku zamiast zmniejszenia grubości linii jest zmniejszenie jej długości.

Druga iteracja:

g[+ Y g]gX → g[+ +Y g]gg[+ Y g]gX (9)

Rysunek 3: Przykładowy L-system.

(3)

stosie odchylamy się jednokrotnie w prawo i rysujemy kreskę Rys.4.

Przykład 3. Gramatyka postaci:

B → [##T L − B + +B] (10)

L → [{−g + +g% − −g}] (11)

R →!@@R (12)

T → T g (13)

Aksjomatem będzie w tym wypadku łańcuch:

R##B (14)

Znaczenie symboli:

• % oznacza obrócenie żółwia w prawo o 180 stopni

• {} - nawiasy klamrowe oznaczają, że to co jest wewnątrz definiuje wierzchołki wie- lokąta, który będzie wypełniony. Pierwszym wierzchołkiem jest aktualne położenie.

• ## (pisane razem w JFLAP) oraz @@ (pisane razem w JFLAP): operatory zmie- niające kolor wypełnienia wielokąta

• − obrócenie żółwia w lewo

• ! - zwiększenie grubości linii Pierwsza iteracja:

R##B =⇒ R##[##T L − B + +B] (15) W pierwszej iteracji nie ma terminala g, a więc nic nie rysujemy. Druga iteracja:

R##[##T g[{−g + +g% − −g}] − [##T L − B + +B] + +[##T L − B + +B]] (16) W powyższej iteracji będzie namalowana kreska do góry, a później to co znajduje się w pierwszym stosie, czyli zdefiniowany wielokąt, który zostanie wypełniony Rys. 5 (bez zmiany kolorów i bez zmiany grubości linii).

Dodatkowe komendy:

• f - przesuwanie bez rysowania

• +, −, &, , /, ∗ - zestaw komend obracających żółwia w każdym wymiarze

• #, @ - zmieniają kolor linii

(4)

Rysunek 6: Przykładowy L-system.

2 Przykłady L-systemów

Rys. 6,Rys.7, Rys. 8, Rys. 9, Rys. 10

3 Zadania

3.1 Zadania podstawowe

1. Zaprojektować l-system, który generuje interesujący rysunek wykorzystując do tego rysowanie kresek, obracanie w prawo i w lewo. Uruchomić go w JFLAP.

Wskazówki

• Pomiędzy symbolami w JFLAP podczas wpisywania l-systemów powinny być spa- cje.

• http://en.wikipedia.org/wiki/L-system

• http://www.jflap.org/tutorial/lsystem/index.html 3.2 Zadania dodatkowe

1. Zaprojektować l-system, który generuje interesujący rysunek wykorzystując do te- go stos, dekrementację/inkrementację grubości linii oraz wypełnianie wielokątów.

Uruchomić go w JFLAP.

(5)

Rysunek 8: Przykładowy L-system.

(6)

Rysunek 10: Przykładowy L-system.

(7)

Rysunek 12: Dwa okręgi.

2. W pewnym L-systemie po kilku początkowych krokach otrzymujemy dwa złączone ze sobą okręgi, które w kolejnych krokach obracają się wokół punktu startowego.

Kąt jest zdefiniowany na 10 stopni. Znaleźć ten l-system Rys.11, Rys. 12.

Literatura

[1] U. J. D. Hopcroft John E., Rajeev Motwani, Wprowadzenie do teorii automatów, języków i obliczeń. Wydawnictwo Naukowe PWN, 2012.

Cytaty

Powiązane dokumenty

5 ,,Letni Konkurs Polskiego Radia" w terminie od dnia 1-go czerwca do 31-go sierpnia roku bieżącego. Odpowiedzi nadesłane po terminie, iub z pominięciem poczty, nie

The principal aim of the paper is to prove the theorem, which characterizes general solutions of the equation (1) combined with a partially pexiderized Go l¸ ab–Schinzel

Rysujemy: pakiet forest: wielowierszowe w

linecolor=kolor kolor linii wskazuj ˛ acej miejsce w tek´scie. size=\polecenie zmieniaj ˛ ace rozmiar czcionki zmiana rozmiaru czcionki

Dodaj dowoln ˛ a notatk˛e do dialogu z poprzedniego slajdu. TUTOR : True—but if they are all moving at the same speed, will anyone actually ever run into

Ten tekst jest fragmentem ksi ˛ a˙ zki Test Turinga a logika pyta´ n.}}. ...rozwa˙ za´ n epistemologicznych\footnote{Poj˛ ecie problemu ramy (\textit{frame

Duration on Network Statistics in Elementary Mod- els of Dynamic Networks, International Conference on Computational Science, Singapore (2011) [2] Laszlo Gulyas, Susan Khor,

Zakład Logiki i Kognitywistyki Instytut Psychologii.