Zbierka - Rekurzívne guličky: Rozdiel medzi revíziami

Zo stránky Parametrické a Generatívne 3D modelovanie
Bez shrnutí editace
Bez shrnutí editace
 
(4 medziľahlé úpravy od rovnakého používateľa nie sú zobrazené.)
Riadok 6: Riadok 6:
         <div><div>Trvanie:</div><span>1 hod</span></div>
         <div><div>Trvanie:</div><span>1 hod</span></div>
         <div><div>Náročnosť:</div><span>pokročilý</span></div>
         <div><div>Náročnosť:</div><span>pokročilý</span></div>
         <div><div>Zručnosti:</div><span>transformácie, CSG operácie, podmienky, 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/Rekurzia rekurzia]</span></div>
         <div><div>Nástroj:</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_-_Rekurz%C3%ADvne_guli%C4%8Dky učitelia - rekurzívne guličky]</span></div>
     </div>
     </div>
         <p>V predošlom príklade sme si vytvorili fraktál rekurzívnych kociek nejakým spôsobom. Touto úlohou si chceme prehĺbiť pochopenie rekurzie a ukázať iný spôsob, ktorý môžeme v rekurzii použiť, taktiež si ukážeme viac podmienok a prečo treba pri zložitejších objektoch akými sú napríklad gule dbať na počet plôch v nich obsiahnutých.</p>
         <p>V predošlom príklade sme si vytvorili fraktál rekurzívnych kociek nejakým spôsobom. Touto úlohou si chceme prehĺbiť pochopenie rekurzie a ukázať iný spôsob, ktorý môžeme v rekurzii použiť, taktiež si ukážeme viac podmienok a prečo treba pri zložitejších objektoch akými sú napríklad gule dbať na počet plôch v nich obsiahnutých.</p>
Riadok 17: Riadok 18:
             Úlohou je rekurzívne vytvoriť fraktál zostavený z gúľ, ktoré sa každú iteráciu rozmiestňujú na viaceré smery základného objektu.
             Úlohou je rekurzívne vytvoriť fraktál zostavený z gúľ, ktoré sa každú iteráciu rozmiestňujú na viaceré smery základného objektu.
         </p>
         </p>
    </div>
    <div class="section">
        <h3>Odkazy na materiály</h3>
        <p>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:</p>
        <ul>
            <li>[https://kempelen.dai.fmph.uniba.sk/design/index.php/Te%C3%B3ria Teória] - rozcestník stručnej teórie pre koncepty, ktoré potrebujeme</li>
            <li>[https://www.blockscad3d.com/edu/lessons/ 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</li>
            </li>
            <li>[https://en.wikibooks.org/wiki/OpenSCAD_User_Manual 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</li>
            <li>[https://sk.wikipedia.org/wiki/Rekurzia_(matematika) Rekurzia - Wikipedia]</li>
            <li>[https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Other_Language_Features#Circle_resolution:_$fa,_$fs,_and_$fn Rozlíšenie kruhu]</li>
        </ul>
     </div>
     </div>


Riadok 23: Riadok 38:
         <ol>
         <ol>
             <li>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ý.</li>
             <li>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ý.</li>
             <li>Skúste analyzovať obrázok a predstaviť si opakovania, ktoré pri implementácii robíme.</li>
             <li>Skúste analyzovať 3D model a predstaviť si opakovania, ktoré pri implementácii robíme.</li>
             <li>Vytvárame rekurziu, takže primárne si vytvoríme funkciu, ktorú budeme opakovane volať.</li>
             <li>Vytvárame rekurziu, takže primárne si vytvoríme funkciu, ktorú budeme opakovane volať.</li>
             <li>Implementujte do funkcie opakujúce sa štruktúry, ktoré ste si všimli na obrázku - dostatočne odpodmienkujte smery v ktorých budete Ďalšie objekty umiestnovať.</li>
             <li>Implementujte do funkcie opakujúce sa štruktúry, ktoré ste si všimli na modeli - dostatočne odpodmienkujte smery v ktorých budete Ďalšie objekty umiestnovať.</li>
             <li>Z predošlej úlohy sme zistili na čo všetko si treba dávať pozor pri rekurzii - počet volaní, správne vytvorenú podmienku a premennú v tejto podmienke. Treba si na to dať pozor aj v tomto prípade.</li>
             <li>Z predošlej úlohy sme zistili na čo všetko si treba dávať pozor pri rekurzii - počet volaní, správne vytvorenú podmienku a premennú v tejto podmienke. Treba si na to dať pozor aj v tomto prípade.</li>
             <li>Taktiež si treba dať pozor na počet plôch obsiahnutý v objektoch, ktoré sa pokúšame renderovať. Taká kocka má presne 6 plôch, čo je celkom málo, no taká guľa môže mať mnohonásobne viac - podľa toho akú hladkú ju chceme. No my ju nechceme hladkú keď ju využívame v rekurzii, pretože renderovanie takto zložitého objektu s mnohými plochami priveľa krát je príliš výpočtovo náročné. Preto si treba dobre pozrieť parameter <b>[https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Other_Language_Features#Circle_resolution:_$fa,_$fs,_and_$fn $fn]</b> a ako funguje (ako ho využijeme na zmenu počtu plôch v objekte).</li>
             <li>Taktiež si treba dať pozor na počet plôch obsiahnutý v objektoch, ktoré sa pokúšame renderovať. Taká kocka má presne 6 plôch, čo je celkom málo, no taká guľa môže mať mnohonásobne viac - podľa toho akú hladkú ju chceme. No my ju nechceme hladkú keď ju využívame v rekurzii, pretože renderovanie takto zložitého objektu s mnohými plochami priveľa krát je príliš výpočtovo náročné. Preto si treba dobre pozrieť parameter <b>[https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Other_Language_Features#Circle_resolution:_$fa,_$fs,_and_$fn $fn]</b> a ako funguje (ako ho využijeme na zmenu počtu plôch v objekte).</li>
Riadok 46: Riadok 61:
             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.
             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.
         </p>
         </p>
    </div>
    <div class="section">
        <h3>Odkazy na materiály</h3>
        <p>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:</p>
        <ul>
            <li>[https://www.blockscad3d.com/edu/lessons/ 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</li>
            </li>
            <li>[https://en.wikibooks.org/wiki/OpenSCAD_User_Manual 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</li>
            <li>[https://sk.wikipedia.org/wiki/Rekurzia_(matematika) Rekurzia - Wikipedia]</li>
            <li>[https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Other_Language_Features#Circle_resolution:_$fa,_$fs,_and_$fn Rozlíšenie kruhu]</li>
        </ul>
     </div>
     </div>



Aktuálna revízia z 05:07, 9. máj 2024

   https://kempelen.dai.fmph.uniba.sk/design/images/a/a6/Recursive_spheres.stl 

Rekurzívne guličky

Trvanie:
1 hod
Náročnosť:
pokročilý
Nástroje:
BlocksCAD alebo OpenSCAD
Inštrukcie pre učiteľov:
učitelia - rekurzívne guličky

V predošlom príklade sme si vytvorili fraktál rekurzívnych kociek nejakým spôsobom. Touto úlohou si chceme prehĺbiť pochopenie rekurzie a ukázať iný spôsob, ktorý môžeme v rekurzii použiť, taktiež si ukážeme viac podmienok a prečo treba pri zložitejších objektoch akými sú napríklad gule dbať na počet plôch v nich obsiahnutých.


Zadanie úlohy

Úlohou je rekurzívne vytvoriť fraktál zostavený z gúľ, ktoré sa každú iteráciu rozmiestňujú na viaceré smery základného objektu.

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:

Inštrukcie

  1. 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ý.
  2. Skúste analyzovať 3D model a predstaviť si opakovania, ktoré pri implementácii robíme.
  3. Vytvárame rekurziu, takže primárne si vytvoríme funkciu, ktorú budeme opakovane volať.
  4. Implementujte do funkcie opakujúce sa štruktúry, ktoré ste si všimli na modeli - dostatočne odpodmienkujte smery v ktorých budete Ďalšie objekty umiestnovať.
  5. Z predošlej úlohy sme zistili na čo všetko si treba dávať pozor pri rekurzii - počet volaní, správne vytvorenú podmienku a premennú v tejto podmienke. Treba si na to dať pozor aj v tomto prípade.
  6. Taktiež si treba dať pozor na počet plôch obsiahnutý v objektoch, ktoré sa pokúšame renderovať. Taká kocka má presne 6 plôch, čo je celkom málo, no taká guľa môže mať mnohonásobne viac - podľa toho akú hladkú ju chceme. No my ju nechceme hladkú keď ju využívame v rekurzii, pretože renderovanie takto zložitého objektu s mnohými plochami priveľa krát je príliš výpočtovo náročné. Preto si treba dobre pozrieť parameter $fn a ako funguje (ako ho využijeme na zmenu počtu plôch v objekte).
  7. Do funkcie implementujte volanie samej seba a skúste ju obozretne otestovať a upravovať.

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:

  • zmeniť parameter $fn pre porovnanie zložitosti výpočtov pri renderovaní
  • zmeniť parametre, ktoré určujú rozmiestnenie ďalších objektov, prípadne pridánie ďalších pozícií

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 úlohe sme implementovali ďalšiu rekurziu iným spôsobom a mohli sme v nej viac pozorovať ako moc je dôležité venovať pozornosť zložitosti objektov.