5. Transformacija pogleda i perspektivna projekcija

44 KB
Lab5.zip

ZADATAK VJEŽBE

Ostvariti transformaciju pogleda, perspektivnu projekciju i žičani 3D-prikaz poligona.

KONCEPTUALNO RJEŠENJE

Priprema 3D-prikaza se sastoji od dva računska postupka: transformacije pogleda i perspektivne projekcije. Njih primijenjujemo na svaku točku u sceni. U transformaciji pogleda na pojedinoj točki vršimo pet operacija, koje imaju značenja redom:

1. pomak ishodišta scene u točku očišta,
2. rotacija za kut alfa oko osi Z,
3. rotacija za kut beta oko osi Y,
4. rotacija za kut od 90' oko osi Z,
5. promjena predznaka na osi X.

Nakon toga su koordinate točke u sustavu oka. Slijedi postupak projekcije, u kojem se točke preslikavaju zrakom očište-točka na ravninu projekcije, koja zapravo predstavlja zaslon računala. Ta ravnina je okomita na pravac očište-gledište i nalazi se između njih. Iz sličnosti trokuta dobivamo jednostavne izraze za izračun koordinata na zaslonu:

xp = x/z · H
yp = y/z · H

gdje je H udaljenost ravnine projekcije od očišta, a x, y i z su koordinate u sustavu oka.

PROGRAMSKO OSTVARENJE

Svaka točka je definirana slijedećom podatkovnom strukturom:

typedef struct {
      double x, y, z;
      int xp, yp;
} tocka_t;

gdje se koordinate x, y i z odnose na sustav scene, a xp i yp na zaslon.

Nakon što su ulazni podaci (koordinate točaka) pročitani, vrše se gore navedene transformacije, struktura podataka svake točke se popunjava zaslonskim koordinatama i naposljetku slijedi prikaz poligona na zaslonu.

UPUTE ZA KORIŠTENJE

Program očekuje da mu se navede ulazna datoteka kao parametar:

Lab5.exe  ulaz.txt

Ulazna datoteka je u sljedećem formatu: u prvoj liniji nalaze se koordinate očišta, zatim u drugoj koordinate gledišta i onda slijede koordinate točaka koje čine poligon.

Primjer ulazne datoteke:

170 360 200
121 140 0

0 80 0
84 79 0
113 0 0
141 79 0
224 81 0
158 132 0
181 212 0
230 212 0
230 260 0
180 260 0
181 212 0
113 165 0
44 212 0
68 133 0

daje sljedeći 3D-prikaz:

Ante Radman, Laboratorijske vježbe iz Računalne grafike, šk. godina 2003/2004.