Zbierka - Rekurzívne guličky

Zo stránky Parametrické a Generatívne 3D modelovanie
Verzia z 05:07, 9. máj 2024, ktorú vytvoril Admin (diskusia | príspevky)
(rozdiel) ← Staršia verzia | Aktuálna úprava (rozdiel) | Novšia verzia → (rozdiel)
   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.