Úkolem je zkonstruovat nějaké zajímavé těleso pomocí trojúhelníkové sítě (triangle-mesh) v prostředí obsahujícím implementaci "Corner-table". Konstrukce by měla být algoritmická, tj. "geometrie" (polohy vrcholů v prostoru) i "topologie" (napojení vrcholů do trojúhelníčků) by měly být dány algoritmem. Výsledkem je korektní reprezentace tělesa v paměti, kterou lze pro kontrolu nakreslit a uložit na disk v OBJ formátu.
Základem poslouží projekt 057scene z repository
grcis.
Je připravena aplikace, která umí 3D scénu načíst ze souboru (Wavefront OBJ) nebo
ji vygenerovat algoritmem (zde se uplatní Váš kód). Scéna se poté zobrazí jednoduchou čárovou kresbou
bez viditelnosti ("Wireframe"). Výsledný obrázek (bitmapu) resp. 3D scénu
půjde uložit na disk (PNG formát resp Wavefront OBJ).
Pro konstrukci vašeho tělesa budete modifikovat předem založenou
třídu Construction nacházející se ve zdrojovém souboru
Construction.cs. Konstrukční metoda se jmenuje Construction.AddMesh().
Nezapomeňte pro hladké plochy nastavit normálové vektory ve vrcholech sítě!
Alternativní projekt: budete moci použít též výsledky projektu 038, kde je implementováno vykreslování pomocí OpenTK (OpenGL) a interaktivní otáčení 3D scénou. I do tohoto projektu můžete vložit beze změny váš zdrojový soubor Construction.cs.
Náměty: Platónská tělesa (stěny složené pouze z trojúhelníků, tj. musíte je triangulovat),
graf funkce dvou proměnných, apod.
Inspiraci můžete najít v pěkné knížce
Atlas geometrie, např. 3.8 až 3.10, 6.
Technicky: dostanete objekt 3D scény SceneBrep, do kterého budete těleso přidávat, dále instanční matici transformace Matrix4 a parametr pro volbu varianty konstrukce (např. typ tělesa, pokud jich implementujete více).
Bonus: je možné ho získat za implementaci funkce, která testuje konzistenci "Corner-table" použité v SceneBrep. Hlavička funkce je též předpřipravena v zdrojovém souboru Construction.cs (funkce SceneBrep.CheckCornerTable()), pokud budete chtít ji implementovat, udělejte to a nezapomeňte mne na to upozornit v doprovodném mailu.
TERMÍN: do 5. 1. 2014
BODY: 8 až 20 bodů (více bodů za komplikovanější tělesa a za kontrolu "Corner-table")
PROJEKT: 057scene nebo 038trackball
ZDROJOVÝ SOUBOR: Construction.cs
Copyright (C) 2010-2013 J.Pelikán,
last change: $Date: 2014-10-03 15:44:39 +0200 (Fri, 03 Oct 2014) $
Send comments/requests to
pepca.at.cgg.mff.cuni.cz