Prírodou inšpirované algoritmy

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

Späť ku kurzom triedy
Obsah
Kochova snehová vločka - začíname
Kombinácia ostrovov a jazier - parametre sekcie View
Dračia krivka
Vetviace sa štruktúry - svet rastlín
Stochastické L-systémy
Kontextovo závislé L-systémy
Parametrické L-systémy



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


Kombinácia ostrovov a jazier - parametre sekcie View

V tomto príklade sa budeme venovať len o čosi zložitejšiemu fraktálu, ktorý je generovaný pomocou L-systému. Hlavne sa sústredíme na ďalšie parametre tentoraz v sekcii View, ktoré rozširujú možnosti čo do spôsobu generovania, resp. vizualizácie L-systému. Vytvoríme nový projekt a sekcii L-system definujeme samostatný fraktál.

#define STEP 2
system: 0
derivation length: 2
axiom: F+F+F+F
F --> F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF
f --> ffffff
endlsystem

Oproti predošlému príkladu tu pribudla jedna direktíva a to #define meno hodnota, ktorou je možné definovať konštanty používane ďalej v L-systéme. Taktiež sa objavil nový interpretačný symbol v podobe f, jeho funkcia je obdobná ako v prípade F, t.j. posúva sa o jednotku dĺžku, ale nezanecháva za sebou úsečku. Čiže ide o transláciu kresliacej korytnačky.

Axióma L-systému generuje štvorec (za predpokladu že angle increment je rovný hodnote 90) a prepisovacie pravidlo F --> F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF sa interpretuje následovne:

Venujme sa teraz ale parametrov v sekcii View. Ide o typický súbor zobrazenia (*.v), ktorý je možný až na malé zmeny používať pri ľubovoľných l-systémoch.

angle factor: 4 - popisuje špecifický uhol používaný pri generovaní L-systému. Rovnakú funkciu má aj parameter angle increment.
initial color: 1 - parameter špecifikuje primárnu farbu, alebo materiál, ktorým sa vykresľuje L-systém.
color increment: 0 - určuje farebný inkrement, t.j. je možné vykresľovať rôzne iterácie pri generovaní L-systému rôznými farbami a tak napríklad simulovať čerstvé výhonky rastlí, resp. kôrnatenie kmeňa.
initial line width: 2 - parameter určuje šírku čiary, ktorou sa L-systém vykresľuje.
line width increment: 0 - určuje inkrement hrúbky kresliacej čiary, t.j. počas generovania L-systému je možné v závislosti na derivačnom kroku meniť hrúbku čiar. Využiteľné napr. pri simulácii hrubnutia stoniek rastlín.
viewpoint: 0,0,1 - určuje koordináty miesta pohľadu v generovanom svete(vychádza z implementácie OpenGL), hodnoty reprezentujú, súradnice, x,y,z.
view reference point: 0,0,0 - určuje koordináty miesta na ktoré sa pozeráme v generovanom svete, zvyšok je totožný s predošlým.
twist: 0 - parameter špecifikuje, ako má byť výsledný obraz v okne rotovaný, hodnota sa udáva v desatinách stupňa.
projection: parallel - identifikuje typ zamýšľanej projekcie, na výber je parallel, alebo perspective.
front distance: -100000.0 - vzdialenosť pozorovateľa ku prednej rezovej rovine(OpenGL).
back distance: 100000.0 - vzdialenosť pozorovateľa od zadnej rezovej roviny(OpenGL).
scale factor: 0.9 - parameter určuje finálnu veľkosť obrázku na obrazovke. Hodnota 1.0, korešponduje s max veľkosťou.
z buffer: off - identifikuje, či majú byť skryté povrchy eliminované (použitím Z-buffera).[on / off]
shade mode: 7 - parameter identifikuje, jeden z 7 typov tieňovania.(rendering)

  1. jednoduchá výplň
  2. interpolovaná výplň
  3. Gourandovo tieňovanie
  4. B-spline
  5. uzavreté B-spline
  6. obojstranné tieňovanie
  7. drôtený model

light direction: 1.0, 1.0, 1.0 - hodnoty určujú súradnice vektora, špecifikujúce smer svetla. Relevantné iba ak pracujete v Colormap mode, inak sa použije parameter light.
diffuse reflection: 0 - číslo určuje interval farieb, ktoré sú použité v procese tieňovania.
tropism direction: 0.0,1.0,0.0 - súradnice špecifikujú vektor, poukazujúci smer ku vetvám so sklonom k ohýbaniu, význam tohoto príkazu je hlavne v spätnej kompatibilite.
initial elasticity: 0.0 - parameter určuje náchylnosť vetvy k ohnutiu.
elasticity increment: 0.0 - parameter slúži ako inkrement, resp. dekrement pre hodnotu elasticity asociovanú s nejakým symbolom.

Takže po následnom spustení simulácie dostávame nasledujúci obrazec.

Isteže cpfg, disponuje podstatne širšou paletou rôznych parametrov, pre viac informácii odporúčam CPFG užívateľský manuál, stať 6., resp. 6.2

Hore
Kontakt: Marek Bundzel