Prírodou inšpirované algoritmy

študijné materiály pre projekt mobilnej triedy umelej inteligencie

Späť ku kurzom triedy
Obsah
Úvod
Bezkontextové L-systémy
Interpretácia
Príklady L-Systémov
Ručné farbenie L-Systémov
Stochastické L-systémy
Príklady
Stochastické
Kontextové
Parametrické
Vkladanie objektov
3D grafika
Využitie L-systémov pri modelovaní vývinu rastlín
Software
Literatúra



Ostatné kapitoly
Lindenmayerove systémy
Modelovanie ekosystémov
Dawkinsove biomorfy
Reakčno-difúzne modely
Difúzne ohraničené zhlukovanie
Voronoiove diagramy
Časticové systémy
Fibbonaciho čísla a zlatý rez


Tutoriály
 Celulárne automaty
 Morfogenéza
 Simulátory
 Evolučné algoritmy
 Chaos
 Roboty
 Rôzne


Vkladanie objektov

Vkladanie objektov do obrazu rastliny

Dosiaľ sme uviedli len symboly, ktorých grafická interpretácia korytnačou grafikou umožňovala generovať len obrazce, pozostávajúce z úsečiek. Reprezentácia listov a kvetov rastlín vyžaduje generovať polygóny, aproximujúce s dostatočnou vernosťou orgány prírodných rastlín.

Jednou z možností je vkladať do výsledného obrazca predom definované plošné útvary (nie nutne polygóny). Každý z týchto útvarov je reprezentovaný v reťazci jediným symbolom, pred ktorým je špeciálny symbol ~ ( tilda ), upozorňujúci interpreter, že nasledujúci symbol reprezentuje preddefinovanú plochu. Je možné tak vytvoriť veľmi verné kópie prírodných rastlín, ale tento prístup je v rozpore s duchom L-systémov, napríklad v tom, že uvedené útvary nie sú schopné vývoja.

Konzistentné riešenie ponúka rozšírenie sady príkazov pre korytnačku o symboly, interpretované v procese generovania polygónov:

SymbolPopis
{začína generovať polygón : po každom pohybe korytnačky príkazom F a f bude pozícia korytnačky zaznamenaná ako vrchol polygónu
}ukončí generovanie polygónu a zaradí ho do vytváraného obrazca
Gmá rovnaký význam ako symbol F s tým rozdielom, že pozícia korytnačky nie je zaznamenaná ako vrchol polygónu
gmá rovnaký význam ako symbol f s tým rozdielom, že pozícia korytnačky nie je zaznamenaná ako vrchol polygónu
.zaznamená polohu korytnačky ako vrchol polygónu

Pri vlastnom generovaní môžeme postupovať dvojakým spôsobom:

  • pomocou príkazov F a f vytvoríme obrys polygónu, zaznamenávajúc nimi všetky jeho vrcholy,
  • pomocou príkazov G a g vytvoríme kostru polygónu (napríklad žily listu) a vrcholy zaznamenávame príkazom . (bodka).

Prvý postup ilustruje príklad :

Axiom = L
α = 20°
L → {--FXX+FX+++X+++FX-----|-----FX+++X+++FX+FXX}
X → FX
Generovanie obrysu polygónu

Druhý postup ilustruje príklad :

Axiom = X[A][B]
α = 20°
X → F(50)X
A → [+A{.].C.}
B → [-B{.].C.}
C → gC
X → XF

Parameter 50 v prvom pravidle znamená, že sa korytnačka prejde (a nakreslí) len 50% z dĺžky, ktorú by prešla po príkaze F. Na obrázku dole sú uvedené tretia, piata a siedma iterácia.

Generovanie kostry a obrysu polygónu

Hore
Kontakt: Marek Bundzel