Zbierka - Kochova kocka: Rozdiel medzi revíziami
Bez shrnutí editace |
Bez shrnutí editace |
||
(20 medziľahlých úprav od rovnakého používateľa nie je zobrazených.) | |||
Riadok 1: | Riadok 1: | ||
<div class="worksheet"> | <div class="worksheet"> | ||
[[File:Koch_cube. | [[File:Koch_cube.stl|360x360px|left|norotate=0]] | ||
<h1>Kochova kocka iteratívne</h1> | |||
<div class="section"> | <div class="section"> | ||
<div class="lesson-plan-text"> | <div class="lesson-plan-text"> | ||
<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> | <div><div>Náročnosť:</div><span>pokročilý</span></div> | ||
<div><div>Zručnosti:</div><span>transformácie, cykly, | <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> | <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> | </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> | <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> | ||
Riadok 55: | Riadok 16: | ||
<h3>Zadanie úlohy</h3> | <h3>Zadanie úlohy</h3> | ||
<p> | <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. | 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> | </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://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> | </div> | ||
Riadok 64: | Riadok 34: | ||
<li>Otvorte si nástroj OpenSCAD</li> | <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>Všetky koncepty, ktoré k zostrojeniu takéhoto modelu potrebujete už poznáte z predošlých úloh.</li> | ||
<li>Dobre si pozrite | <li>Princíp fungovania fraktálov môžeme vidieť na nasledujúcich obrázkoch:<br clear=all> | ||
<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 | |||
<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é | 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> | ||
[[File:Iteracie_fraktal.png|alt=obrázok s iteráciami fraktálov|500px]]<br clear=all> | |||
<br clear=all> | |||
Na tomto gif obrázku môžeme zas vidieť ako sa nekonečne zanára bežný fraktál:<br> | |||
[[File:recursion_fractal.gif|alt=gif fraktálu|200px]] | |||
</li> | |||
<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> | |||
<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. | |||
*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.</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>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> | <li>Všímajte si, že pri každom zanorenom cykle trvá dlhšie renderovanie daného objektu.</li> | ||
Riadok 87: | Riadok 70: | ||
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. | 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> | </p> | ||
</div> | </div> | ||
Aktuálna revízia z 04:24, 9. máj 2024
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
- Otvorte si nástroj OpenSCAD
- Všetky koncepty, ktoré k zostrojeniu takéhoto modelu potrebujete už poznáte z predošlých úloh.
- 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ť:
Na tomto gif obrázku môžeme zas vidieť ako sa nekonečne zanára bežný fraktál:
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.