Zbierka - L-systém: Rozdiel medzi revíziami
Bez shrnutí editace Značka: manuálne vrátenie |
Bez shrnutí editace |
||
Riadok 8: | Riadok 8: | ||
<div><div>Zručnosti:</div><span>[https://kempelen.dai.fmph.uniba.sk/design/index.php/Transform%C3%A1cie transformácie], [https://kempelen.dai.fmph.uniba.sk/design/index.php/Cykly cykly], [https://kempelen.dai.fmph.uniba.sk/design/index.php/CSG_oper%C3%A1cie CSG operácie], [https://kempelen.dai.fmph.uniba.sk/design/index.php/Podmienky podmienky], [https://kempelen.dai.fmph.uniba.sk/design/index.php/Funkcie funkcie], [https://kempelen.dai.fmph.uniba.sk/design/index.php/Rekurzia rekurzia]</span></div> | <div><div>Zručnosti:</div><span>[https://kempelen.dai.fmph.uniba.sk/design/index.php/Transform%C3%A1cie transformácie], [https://kempelen.dai.fmph.uniba.sk/design/index.php/Cykly cykly], [https://kempelen.dai.fmph.uniba.sk/design/index.php/CSG_oper%C3%A1cie CSG operácie], [https://kempelen.dai.fmph.uniba.sk/design/index.php/Podmienky podmienky], [https://kempelen.dai.fmph.uniba.sk/design/index.php/Funkcie funkcie], [https://kempelen.dai.fmph.uniba.sk/design/index.php/Rekurzia rekurzia]</span></div> | ||
<div><div>Nástroje:</div><span>[https://www.blockscad3d.com/ BlocksCAD] alebo [https://openscad.org/ OpenSCAD]</span></div> | <div><div>Nástroje:</div><span>[https://www.blockscad3d.com/ BlocksCAD] alebo [https://openscad.org/ OpenSCAD]</span></div> | ||
<div><div>Inštrukcie pre učiteľov:</div><span>[https://kempelen.dai.fmph.uniba.sk/design/index.php/In%C5%A1trukcie_-_L-syst%C3%A9m učiteľ - L-systém]</span></div> | <div><div>Inštrukcie pre učiteľov:</div><span>[https://kempelen.dai.fmph.uniba.sk/design/index.php/In%C5%A1trukcie_-_L-syst%C3%A9m učiteľ - L-systém]</span></div> | ||
</div> | </div> |
Verzia z 21:20, 7. máj 2024
L-systém
Keďže sme už s rekurziou oboznámení, dokážeme ju použiť aj na zložitejšie modely akým môžu byť napríklad Lindenmayerove systémy (l-systémy). L-systémy sú formálne systémy, ktoré boli pôvodne vyvinuté ako modely rastu buniek v rastlinách. Sú definované pomocou abecedy symbolov a sady pravidiel pre transformáciu symbolov. L-systémy sa používajú na generovanie fraktálov a iných fraktálnych štruktúr tým, že rekurzívne aplikujú pravidlá na počiatočnú sekvenciu symbolov, čím vytvárajú komplexné a detailné obrazce.
Zadanie úlohy
V tejto aktivite budeme vytvárať jednoduchý l-systém podobajúci sa stomu. Využijeme na to väčšinu poznatkov, ktoré sme doposiaľ nadobudli, njamä rekurziu, modifikáciu parametrov a podmienky. Pre implementáciu takéhoto systému si potrebujeme definovať podmienky akými sa budeme riadiť pri každom jednom objekte, ktorý do celkového modelu budeme pridávať. Podmienky nám môžu rozhodovať o rotácii, veľkosti a podobne. Tu máme príklad jednoduchého 2D fraktálu generovaného l-systémom:
V L-systémoch implementujeme:
- Axiómu: počiatočná štruktúra alebo stav systému, ktorý je reprezentovaný symbolmi
- Pravidlá pre transformáciu: tieto pravidlá určujú, ako sa každý symbol v axiomate mení na iný symbol v každom kroku iterácie
- Iteráciu: proces opakovania transformačných pravidiel, kde sa postupne mení axiom a generuje sa nový reťazec symbolov
Rovnakým princípom vieme implementovať aj náš l-systém.
Odkazy na materiály
V tejto sekcii nájdete odkazy na materiály, ktoré vám môžu pomôcť pri riešení daných problémov a naučia vás ako používať požívané nástroje:
- Teória - rozcestník stručnej teórie pre koncepty, ktoré potrebujeme
- BlocksCAD lessons - lekcie pre tvorbu modelov - tu si môžete vyskúšat modelovanie v BlocksCADe na úlohách s rôznymi modelmi, kde si viete triediť výber úloh podľa toho čo potrebujete, alebo vás zaujíma
- OpenSCAD manuál - miesto kde nájdete všetky potrebné informácie k OpenSCADu vrátane všetkých príkazov, dokumentácie či syntaxe
- Rekurzia - Wikipedia
- L-systém
Inštrukcie
- Otvorte si daný nástroj - BlocksCAD alebo OpenSCAD, ktorý ste si na implementáciu vybrali. Tinkercad Codeblocks nám neumožňuje implementovať rekurziu, preto vo výbere nie je zahrnutý.
- Skúste analyzovať obrázok a predstaviť si opakovania, ktoré pri implementácii robíme a čo potrebujeme skontrolovať pri každej iterácii.
- Vytvárame rekurziu, takže dávame pozor na podmienku, menu parametrov a nekonečné volania (ako sme sa naučili v predošlích príkladoch).
- Implementujte do funkcie opakujúce sa štruktúry, ktoré ste si všimli na obrázku.
- Ak sme implementovali tieto opakujúce sa štruktúry - vetvy stromu a umiestnili ich aspoň približne správne, je potrebné definovať podmienky a parametre pre zmeny týchto jednotlivých vetiev. Môžeme meniť rotáciu na daných osiach, posun, výšku či šírku daných vetiev, dokonca aj ich zakrivenie, predstavivosti sa medze nekladú. Pokúste sa implementovať čo najviac parametrov pre čo najviac rôznorodý storm.
- Ukážka a vysvetlenie implementácie l-systému s parametrami a pravidlami pre prvých 5 iterácií:
-> -> -> ->
Na prvom obrázku vidíme axiómu - základnú štruktúru, s ktorou budeme pracovať (v našom prípade valec).
Tu vidíme parametre s komentármi k tomu ako fungujú a čo ovplyvňujú, tieto parametre použijeme na implementáciu pravidiel v l-systémoch:length = 40; // - dĺžka axiómy width = 4; // - šírka axiómy depth = 4; // - hĺbka zanorenia rekurzie - parameter je dôležitý na zastavenie rekurzie branches = 4; // - počet vetiev, na ktoré sa pri každej iterácii konkrétna vetva rozdelí angle = 40; // - uhol natočenia novo vznikajúcich vetiev reduction = 0.8; // - redukcia / postupné zmenšovanie dĺžok a šírok axióm pri každej iterácii
- Preskúmajte parametre, ktoré ste implementovali a vytvorte medzi nimi vzťahy tak ako môžete vidieť vo vzorovom riešení.
- Skúste si meniť parametre a podmienky, ktoré ste implementovali aby ste si vizualizovali ako parametrický dizajn naozaj funguje a zakaždým si skúste vyrenderovať váš unikátny strom.
Testovanie a úpravy
Prezrite a skontrolujte si objekt a odpovedzte si na to či daný 3D model zodpovedá zadaniu a či ste s ním spokojní. Ak chcete skúsiť model upraviť, navrhujeme:
- vyskúšať implementovať na vetvy listy
- vyskúšajte si pozmeniť parametre, obzvlášť parameter pre redukciu aby ste videli aký masícny to má násleodk na výsledný model
- vo vzorovom riešení vidíme celkom pravidelný strom, skúste implementovať pravidlá pre rotáciu, dĺžky a šírky vetví tak aby bol strom čo najmenej pravidelný, prípadne skúste implmentovať zahnutie stromu akoby stál v silnom vetri a nakláňal sa na stranu
Spätná väzba
Ak ste spokojní so svojím výsledným modelom, prezentujte ho ostatným, zhodnoťte koncepty, ktoré ste použili a ako ste ho implementovali, buďte otvorení k hodnoteniam od ostatných a k prípadným návrhom na zlepšenie.
Vzorové riešenie
Ak budete potrebovať motiváciu alebo si skontrolovať váš výsledný model, v nasledujúcich odkazoch nájdete implementáciu daného modelu v nástrojoch, ktoré ste na implementáciu mohli použiť:
Záver
V tejto aktivite sme si vytvorili náš prvý l-systém (Lindenmayerov systém). L-systémy sú pravidlá, ktoré používame na vytváranie modelov rôznych prírodných útvarov - stromy, rastliny alebo dokonca niektoré mikroorganizmy. Tieto pravidlá nám pomáhajú pochopiť, ako sa tieto útvary vyvíjajú a menia v čase. Keď vymodelujeme strom v CAD softvéri, vytvoríme si taký druh "digitálneho obrazu" tohto stromu na počítači. Potom použijeme pravidlá L-systémov na to, aby sme mohli stromu povedať ako má rásť, vetviť sa, (čo dokonca tvoriť listy a kvety).