Zbierka - Kochova kocka: Rozdiel medzi revíziami

Zo stránky Parametrické a Generatívne 3D modelovanie
Bez shrnutí editace
Bez shrnutí editace
 
(21 medziľahlých úprav od rovnakého používateľa nie je zobrazených.)
Riadok 1: Riadok 1:
[[File:Koch_cube.png|alt=Kochova kocka|top|left|256px]]
<div class="worksheet">
V tejto aktivite sa naučíte ako fungujú cykly, pomocou ktorých si vytvoríte kocku podobajúcu sa Kochovým fraktálom a ilustrujeme koľko cyklov je priveľa cyklov.
    [[File:Koch_cube.stl|360x360px|left|norotate=0]]  
 
    <h1>Kochova kocka iteratívne</h1>
    <div class="section">
    <div class="lesson-plan-text">
        <div><div>Trvanie:</div><span>1 hod</span></div>
        <div><div>Náročnosť:</div><span>pokročilý</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]</span></div>
        <div><div>Nástroje:</div><span>[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_-_Kochova_kocka_iterat%C3%ADvne učitelia - kochova kocka iteratívne]</span></div>
    </div>
        <p>Pri tvorbe 3D modelov často potrebujeme dbať na optimálnu implementáciu. Ak máme náročných operácií veľa a navyše ak ich kombinujeme, naše riešenie nebude dostatočne odladené a bude príliš náročné na výpočet. Je možné, že nám "spadne" program, alebo sa bude objekt modelovať veľmi dlho.</p>
    </div>
<br clear=all>
<br clear=all>
    <div class="section">
        <h3>Zadanie úlohy</h3>
        <p>
            V tejto aktivite si ukážeme ako vyzerá taký fraktál a ako sa dá iteratívne zapísať pomocou cyklov. Vytvoreným modelom si predvedieme ako rapídne rastie zložitosť programov pri zanáraní cyklov a prečo je v tomto prípade lepšie použiť rekurzívny prístup, ktorý si precvičíme v nasledovných príkladoch. Fraktály sú matematické objekty, ktoré vykazujú opakujúce sa vzory na rôznych mierkach. Tieto vzory sú vytvorené iteratívnym procesom, kde sa malá časť obrazu opakuje vo väčšej štruktúre. Fraktály majú komplexnú a často nádherne detailnú geometriu, ktorá sa podobá prírodným javom a procesom. Sú využívané v rôznych oblastiach, od matematiky a fyziky po umenie a počítačovú grafiku, a slúžia ako nástroj na skúmanie chaosu, sebopodobnosti a zložitosti vo svete okolo nás. Príklad fraktálu v prírode: [https://www.google.com/search?sca_esv=ee33e09d020e77e6&sxsrf=ADLYWIKYuO2L_yZeRCTjysSiKLCJKUwbvA:1714872786315&q=fractals+in+nature&uds=ADvngMgNG4qWEcyOv6mZ7d9R1NXiCe0knOAEIMdBUj_P4Tbqfy35nzreHpoKtBkm_iPk1r2e92N7NrqunV-CiKfUv-ahBeGdihip1uJwTTBD6dL-x9UHzgTsNoO-rBMzrNPvJb2RQ5hsZKB2jRkFCFq7HO6qxRkj-18Lvo-5EAHsLKtpDPEXQc-oMCp0W2JCBwfjgqWSH4eOsqAyI9hwzzLlFhISqQDi5BVdolyus4wTEqPAUOC6_a1H30zE_a-bDz86XsD7NFxqwhbudiAs8klyZ8RXjWTaSQ&udm=2&prmd=isvnbz&sa=X&ved=2ahUKEwjIo436rvWFAxVp7bsIHWudDl4QtKgLegQIDBAB&biw=1920&bih=945&dpr=1 vyhľadávanie Google - "fractals in nature"]. Príklad kochovej kocky: [https://www.google.com/search?q=koch+cube&sca_esv=ee33e09d020e77e6&udm=2&biw=1920&bih=945&sxsrf=ADLYWILKv_kTIl0SeyhnIDoM9-VaY8TDzQ%3A1714873408744&ei=QOQ2ZoaKLeH_7_UPid2J-AQ&ved=0ahUKEwiGqvOisfWFAxXh_7sIHYluAk8Q4dUDCBA&uact=5&oq=koch+cube&gs_lp=Egxnd3Mtd2l6LXNlcnAiCWtvY2ggY3ViZTIEECMYJzIIEAAYExgIGB5I0QxQiAZY3AtwAngAkAEBmAG_AaAB3gaqAQM0LjS4AQPIAQD4AQGYAgmgArQFwgIKEAAYgAQYQxiKBcICBhAAGAcYHsICCBAAGIAEGLEDwgIFEAAYgATCAgQQABgewgIHEAAYgAQYE8ICCBAAGBMYBRgemAMAiAYBkgcDNi4zoAfcLA&sclient=gws-wiz-serp vyhľadávanie Google - "koch cube"]
        </p>
    </div>


<h2>'''Potrebné materiály:'''</h2>
    <div class="section">
*počítač
        <h3>Odkazy na materiály</h3>
*softvér OpenSCAD
        <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>
*učebné materiály (návody, videá, atď.)
        <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://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>
        </ul>
    </div>


<h2>'''Inštrukcie:'''</h2>
    <div class="section">
        <h3>Inštrukcie</h3>
        <ol>
            <li>Otvorte si nástroj OpenSCAD</li>
            <li>Všetky koncepty, ktoré k zostrojeniu takéhoto modelu potrebujete už poznáte z predošlých úloh.</li>
            <li>Princíp fungovania fraktálov môžeme vidieť na nasledujúcich obrázkoch:<br clear=all>


<h3>Skúmanie:</h3>
Z tohto obrázku môžeme vyčítať, že fraktál má definovanú nejakú základnú štruktúru, ktorá sa postupne pri každej iterácii prepoužíva s určitými zmenami, toto sa pokúsime implementovať:<br>
Pred začatím tvorby 3D modelu objektu pripomínajúceho Kochov fraktál preskúmame, čo je fraktál a aké sú jeho charakteristiky. Tiež sa zameriame na pochopenie toho, ako sa vytvára Kochov fraktál pomocou zanorených cyklov.
[[File:Iteracie_fraktal.png|alt=obrázok s iteráciami fraktálov|500px]]<br clear=all>
 
<br clear=all>
<h3>Brainstorming:</h3>
Na tomto gif obrázku môžeme zas vidieť ako sa nekonečne zanára bežný fraktál:<br>
Spoločne premýšľame o spôsoboch, ako vyrezávať menšie kocky z pôvodnej kocky tak, aby výsledok pripomínal Kochov fraktál. Diskutujeme o tom, ako dosiahnuť symetriu a detaily, ktoré definujú fraktál.
[[File:recursion_fractal.gif|alt=gif fraktálu|200px]]
 
</li>
<h3>Návrh:</h3>
            <li>Dobre si pozrite model, alebo sa inšpirujte vyhľadaním obrázkov "koch cube" alebo "fractal" a uvažujte aké princípy sa pri modelovaní takéhoto objektu využili.</li>
Navrhujeme algoritmus, ako pomocou zanorených cyklov (alebo rekurzie) vytvoriť objekt pripomínajúci Kochov fraktál. Plánujeme detaily, ako budeme postupne vyrezávať kocky a aké parametre budeme potrebovať na začatie.
            <li>Základná štruktúra programu na vykreslenie fraktálu zahŕňa:<br>
 
*Definovanie matematických vzorcov alebo pravidiel, ktoré určujú tvar a štruktúru fraktálu.
<h3>Doladenie:</h3>
*Implementácia algoritmu na vykreslenie fraktálu, ktorý využíva tieto vzorce a pravidlá.
Testujeme algoritmus s rôznymi parametrami a úrovňami zanorenia. Snažíme sa optimalizovať algoritmus tak, aby sme dosiahli požadovaný vzhľad Kochovho fraktálu a zároveň minimalizovali zložitosť procesu.
*Aplikácia transformácií podľa definovaných pravidiel.
*Opakovanie procesu pre každú úroveň detailu alebo potrebnú úroveň zväčšenia alebo zmeny.</li>
            <li>Objekt začnite implementovať pridaním samostatnej kocky a postupujte princípmi, ktoré ste si zvolili - ak ste si dobre všimli, základným modelom je hlavná kocka, z ktorej sa robí rozdiel menších kociek, dobrým spôsobom pri implementácii je teda použitie CSG operácie rozdielu.</li>
            <li>Ak ste dokázali impementovať samotnú kocku, z ktorej ste vyrezali menšie kocky, tak sa pokúste implementovať pomocou ďalšieho cyklu podobné vyrezanie.</li>
            <li>Motivujte sa vzorovým riešením a všimnite si použitie parametrov. Tieto parametre skúste upraviť aby ste pochopili ich význam.</li>
            <li>Všímajte si, že pri každom zanorenom cykle trvá dlhšie renderovanie daného objektu.</li>
        </ol>
    </div>


<h3>Zdieľanie:</h3>
    <div class="section">
Zdieľame náš postup a algoritmus s ostatnými študentmi a diskutujeme o ich skúsenostiach a úspechoch pri tvorbe Kochovej kocky. Spoločne hľadáme riešenia problémov a vylepšení.
        <h3>Testovanie a úpravy</h3>
        <p>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:</p>
        <ul>
            <li>vyskúšať implementovať iné prepočítavanie parametrov a sledovať ako sa aplikovaním parametrického dizajnu mení celý model</li>
            <li>vyskúšajte namiesto kociek pracovať s inými základnými modelmi</li>
            <li>vyskúšajte implementovať viac cyklov a pozorovať ako rapídne sa renderovanie modelu spomaľuje</li>
        </ul>
    </div>


<h3>Prezentovanie:</h3>
    <div class="section">
Prezentujeme hotový 3D model objektu pripomínajúceho Kochov fraktál vytvorený pomocou zanorených cyklov. Vysvetľujeme náš algoritmus a jeho fungovanie prostredníctvom prezentácie alebo demonštrácie. Poskytneme priestor na otázky a diskusiu.
        <h3>Spätná väzba</h3>
        <p>
            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, spomeňte pozorované zmeny rýchlostí, buďte otvorení k hodnoteniam od ostatných a k prípadným návrhom na zlepšenie.
        </p>
    </div>


<h3>Zdroje modelov:</h3>  
    <div class="section">
[https://github.com/Achinys-out/ParametricAndGenerativeDesign/blob/main/OpenSCAD/koch_cube.scad OpenSCAD]<br>
        <h3>Vzorové riešenie</h3>
        <p>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ť:</p>
        <ul>
            <li>[https://github.com/Achinys-out/ParametricAndGenerativeDesign/blob/main/OpenSCAD/koch_cube.scad OpenSCAD]</li>
        </ul>
    </div>


<h2>'''Vysvetlenie:'''</h2>
    <div class="section">
Pri tomto modeli sme si ilustrovali ako funguje zanáranie cyklov a aké je dôležité optimalizovať svoj kód.
        <h3>Záver</h3>
        <p>
            Týmto modelom sme ilustrovali potrebu optimalizácie vašej implementácie a taktiež sme si vizualizovali jeden zo základných fraktálov, tzn. "Kochovu kocku" pri čim vidíme opakovanie určitých či podobných operácií dokola. Fraktály sú geometrické objekty budované pomocou rekurzie. Často sa s nimi stretávame v prírode a vieme ich zapísať pomocou matematických vzorcov, no sú náročné pri 3D modelovaní. V tomto prípade sme model implementovali iteratívne, ďalej si ukážeme ako funguje rekurzia.
        </p>
    </div>
</div>

Aktuálna revízia z 04:24, 9. máj 2024

   https://kempelen.dai.fmph.uniba.sk/design/images/8/88/Koch_cube.stl 

Kochova kocka iteratívne

Trvanie:
1 hod
Náročnosť:
pokročilý
Nástroje:
OpenSCAD
Inštrukcie pre učiteľov:
učitelia - kochova kocka iteratívne

Pri tvorbe 3D modelov často potrebujeme dbať na optimálnu implementáciu. Ak máme náročných operácií veľa a navyše ak ich kombinujeme, naše riešenie nebude dostatočne odladené a bude príliš náročné na výpočet. Je možné, že nám "spadne" program, alebo sa bude objekt modelovať veľmi dlho.


Zadanie úlohy

V tejto aktivite si ukážeme ako vyzerá taký fraktál a ako sa dá iteratívne zapísať pomocou cyklov. Vytvoreným modelom si predvedieme ako rapídne rastie zložitosť programov pri zanáraní cyklov a prečo je v tomto prípade lepšie použiť rekurzívny prístup, ktorý si precvičíme v nasledovných príkladoch. Fraktály sú matematické objekty, ktoré vykazujú opakujúce sa vzory na rôznych mierkach. Tieto vzory sú vytvorené iteratívnym procesom, kde sa malá časť obrazu opakuje vo väčšej štruktúre. Fraktály majú komplexnú a často nádherne detailnú geometriu, ktorá sa podobá prírodným javom a procesom. Sú využívané v rôznych oblastiach, od matematiky a fyziky po umenie a počítačovú grafiku, a slúžia ako nástroj na skúmanie chaosu, sebopodobnosti a zložitosti vo svete okolo nás. Príklad fraktálu v prírode: vyhľadávanie Google - "fractals in nature". Príklad kochovej kocky: vyhľadávanie Google - "koch cube"

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
  • 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

Inštrukcie

  1. Otvorte si nástroj OpenSCAD
  2. Všetky koncepty, ktoré k zostrojeniu takéhoto modelu potrebujete už poznáte z predošlých úloh.
  3. Princíp fungovania fraktálov môžeme vidieť na nasledujúcich obrázkoch:
    Z tohto obrázku môžeme vyčítať, že fraktál má definovanú nejakú základnú štruktúru, ktorá sa postupne pri každej iterácii prepoužíva s určitými zmenami, toto sa pokúsime implementovať:
    obrázok s iteráciami fraktálov

    Na tomto gif obrázku môžeme zas vidieť ako sa nekonečne zanára bežný fraktál:
    gif fraktálu
  4. Dobre si pozrite model, alebo sa inšpirujte vyhľadaním obrázkov "koch cube" alebo "fractal" a uvažujte aké princípy sa pri modelovaní takéhoto objektu využili.
  5. Základná štruktúra programu na vykreslenie fraktálu zahŕňa:
    • Definovanie matematických vzorcov alebo pravidiel, ktoré určujú tvar a štruktúru fraktálu.
    • Implementácia algoritmu na vykreslenie fraktálu, ktorý využíva tieto vzorce a pravidlá.
    • Aplikácia transformácií podľa definovaných pravidiel.
    • Opakovanie procesu pre každú úroveň detailu alebo potrebnú úroveň zväčšenia alebo zmeny.
  6. Objekt začnite implementovať pridaním samostatnej kocky a postupujte princípmi, ktoré ste si zvolili - ak ste si dobre všimli, základným modelom je hlavná kocka, z ktorej sa robí rozdiel menších kociek, dobrým spôsobom pri implementácii je teda použitie CSG operácie rozdielu.
  7. Ak ste dokázali impementovať samotnú kocku, z ktorej ste vyrezali menšie kocky, tak sa pokúste implementovať pomocou ďalšieho cyklu podobné vyrezanie.
  8. Motivujte sa vzorovým riešením a všimnite si použitie parametrov. Tieto parametre skúste upraviť aby ste pochopili ich význam.
  9. Všímajte si, že pri každom zanorenom cykle trvá dlhšie renderovanie daného objektu.

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ť iné prepočítavanie parametrov a sledovať ako sa aplikovaním parametrického dizajnu mení celý model
  • vyskúšajte namiesto kociek pracovať s inými základnými modelmi
  • vyskúšajte implementovať viac cyklov a pozorovať ako rapídne sa renderovanie modelu spomaľuje

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, spomeňte pozorované zmeny rýchlostí, 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

Týmto modelom sme ilustrovali potrebu optimalizácie vašej implementácie a taktiež sme si vizualizovali jeden zo základných fraktálov, tzn. "Kochovu kocku" pri čim vidíme opakovanie určitých či podobných operácií dokola. Fraktály sú geometrické objekty budované pomocou rekurzie. Často sa s nimi stretávame v prírode a vieme ich zapísať pomocou matematických vzorcov, no sú náročné pri 3D modelovaní. V tomto prípade sme model implementovali iteratívne, ďalej si ukážeme ako funguje rekurzia.