Transformácie - Grafické systémy, vizualizácia a multimédia
Úloha
Vytvorte jednoduchý interaktívny nástroj (s grafickým pouzívateľským rozhraním), ktorý:
- načíta 2D útvar (polygón) zo súboru,
- vykreslí 2D úvar,
- umožní vykonávať nad útvarom základné transformácie: posunutie, otočenie, škálovanie
Podrobnosti zadania
Načítanie vstupu
2D útvar je potrebné načítať zo súboru. V programe sa musí dať zadať, z
ktorého súboru sa má 2D útvar načítať. 2D útvar je zadaný postupnosťou
bodov. Body budú pozostávať z dvojíc celých čísel. Formát súboru je nasledovný:
[pocet bodov]
[bod_1_x] [bod_1_y]
[bod_2_x] [bod_2_y]
...
Štandardný názov súboru je "vstup.txt"
Vykreslenie útvaru
Načítaný 2D útvar vykrelite do zobrazovaného okna. Napríklad cez
plátno (canvas) vašej GUI knižnice. 2D útvar vykreslite kreslením čiar.
Vždy dva po sebe idúce body sú spojené čiarou. Posledný bod je spojený s
prvým. Stačí vykresliť obrys útvaru.
Transformovanie útvaru
Program bude poskytovať tri nástroje:
- otočenie útvaru o daný uhol okolo zadaného bodu (zadáva sa uhol a bod)
- posunutie útvaru o danú deltu (zadáva sa delta pre každý rozmer)
- zoškálovanie útvaru o daný škálovací faktor s daným stredom škálovania (zadáva sa škálovací faktor a bod)
Parametre jednotlivých transformácií sa budú zadávať v kombinácii
klávesnica a myš. Za plne interaktívne ovládanie iba myšou je možné
získať bonus.
Realizácia
Na realizáciu transformácií použite matice. Transformácie a matice
naprogramujte bez použitia hotového kódu (napr. externé knižnice,
vstavané funkcie vašeho prostredia, ...)
Hodnotenie
Maximum je 15b udeľovaných nasledovne:
- načítanie + vykreslenie = 0b (nutné minimum)
- posunutie = 3b
- otočenie = 6b
- škálovanie = 6b
Je možné sískať bonus 5b ak bude nástroj veľmi interaktívny: plne
ovládateľný myšou (otáčanie, posúvanie, škálovanie), online bude
preklesľovať, keď budeme nastavovať uhol, škálovať, posúvať.
V implementácii nesmiete použiť hotový kód na prácu s maticami a transformáciami. Musíte ich naprogramovať sami.
Strhávať sa bude za:
- špagety kód (neštruktúrovaný, zle čitateľný, obrovské funkcie,...)
- kľúčové časti kódu nie sú okomentované
Odovzdanie
- do 23.3.2011 23:59 za plný počet bodov
- do 30.3.2011 23:59 za polovičný počet bodov
- spôsob odovzdania: cez stránku premetu
čo sa odovzdáva:
- skompilovateľný zdrojový kód
- spustiteľná binárka