Cvičenie 04
Cieľom cvičenia je vyskúšať si implementáciu a používanie základných trojrozmerných transformácií a prácu s jednoduchým objektom. Týmto cvičením ukončujeme našu púť svetom DOSu a o dva týždne prechádzame na OpenGL. Dúfam, že aj vďaka postupnému prechádzaniu od zapnutia grafického režimu a vykreslenia jedného pixelu, cez úsečky a kružnice až po jednoduché 3D objekty, všetci oceníte pohodlie a jednoduchosť, ktorú nám knižnica OpenGL ponúka.
- Odovzdávanie úloh pre párnotýždňových (cvičenie 02.11.2010) - 22.11.2010 23:59:59
- Odovzdávanie úloh pre nepárnotýždňových (cvičenie 09.11.2010) - 29.11.2010 23:59:59
Zdroják obsahujúci základné 3D transformácie, ktoré sme robili na cvičení: http://mirror.bwpow.eu/pub/upjs/ugr1/cv04/cv04_3d.cpp
Zadania
CV04_01 (3 body) | |
Zadanie | Vytvorte 2D projekciu 3D kocky, ktorej hrany sú viditeľné a je možné ju rotovať okolo všetkých troch osí a taktiež posúvať v smere všetkých troch osí oboma smermi. Rotácia musí stále prebiehať okolo stredu kocky, nech je posunutá kamkoľvek. Transformácie implementuje pomocou matíc 4x4 a ich aplikovanie cez násobenie matíc. |
Funkcie |
void ugr_asm_setmode(uint8_t mode) void ugr_grbuffer_enable(uint8_t enabled) void ugr_grbuffer_clear(void) void ugr_grbuffer_blit(void) void ugr_line(uint8_t c,int16_t x1,int16_t y1,int16_t x2,int16_t y2) |
EXE | http://mirror.bwpow.eu/pub/upjs/ugr1/cv04/cv04.exe |
Vzor | |
Komentár | Nemusíte riešiť prípady, ak sa kocka dostane mimo obrazovky alebo za pozorovateľa. Inšpiráciu môžete získať aj v sekcii Pomôcky k 3D transformáciám na podstránke Informácie ku cvičeniam 1, 2, 3 a 4. |
CV04_02 (2 body) | |
Zadanie | Vytvorte 2D projekciu 3D kocky, ktorej steny sú viditeľné, pričom každá ma iný index farby. Je možné ju rotovať okolo všetkých troch osí a taktiež posúvať v smere všetkých troch osí oboma smermi. Rotácia musí stále prebiehať okolo stredu kocky, nech je posunutá kamkoľvek. Transformácie implementuje pomocou matíc 4x4 a ich aplikovanie cez násobenie matíc. Steny, ktoré nevidno, naozaj nesmie byť vidno. |
Funkcie |
void ugr_asm_setmode(uint8_t mode) void ugr_grbuffer_enable(uint8_t enabled) void ugr_grbuffer_clear(void) void ugr_grbuffer_blit(void) void ugr_triangle(uint8_t color,int16_t x1,int16_t y1,int16_t x2,int16_t y2,int16_t x3,int16_t y3) |
EXE | http://mirror.bwpow.eu/pub/upjs/ugr1/cv04/cv04.exe |
Vzor | |
Komentár | Nemusíte riešiť prípady, ak sa kocka dostane mimo obrazovky alebo za pozorovateľa. V ukážkovom programe sa do tohto režimu môžete prepnúť stlačením čísla 2. |
CV04_E01 (bonusový príklad) | |
Zadanie | Vytvorte 2D projekciu 3D kocky, ktorej steny sú viditeľné, pričom každá ma iný index farby a čím je viac odvrátená od pozorovateľa, tým je tmavšia. Je možné ju rotovať okolo všetkých troch osí a taktiež posúvať v smere všetkých troch osí oboma smermi. Rotácia musí stále prebiehať okolo stredu kocky, nech je posunutá kamkoľvek. Transformácie implementuje pomocou matíc 4x4 a ich aplikovanie cez násobenie matíc. Steny, ktoré nevidno, naozaj nesmie byť vidno. |
Funkcie |
void ugr_asm_setmode(uint8_t mode) void ugr_grbuffer_enable(uint8_t enabled) void ugr_grbuffer_clear(void) void ugr_grbuffer_blit(void) void ugr_triangle(uint8_t color,int16_t x1,int16_t y1,int16_t x2,int16_t y2,int16_t x3,int16_t y3) |
EXE | http://mirror.bwpow.eu/pub/upjs/ugr1/cv04/cv04.exe |
Vzor | |
Komentár | Nemusíte riešiť prípady, ak sa kocka dostane mimo obrazovky alebo za pozorovateľa. V ukážkovom programe sa do tohto režimu môžete prepnúť stlačením čísla 3. |
CV04_E02 (bonusový príklad) | |
Zadanie | Vytvorte program, ktorý vykreslí dvojrozmernú beziérovu krivku pre ľubovoľný počet bodov väčší ako 2. |
Funkcie |
void ugr_asm_setmode(uint8_t mode) void ugr_line(uint8_t c,int16_t x1,int16_t y1,int16_t x2,int16_t y2) void ugr_mem_putpixel(uint8_t color, int16_t x, int16_t y) |
EXE | http://mirror.bwpow.eu/pub/upjs/ugr1/cv04/cv04_e02.exe |
Vzor | |
Komentár | Body vyberajte náhodne, napríklad pomocou niečoho takéhoto:
|