Vježbe 4
Koordinatni sustav kamere - Perspektivno projiciranje
4.1. Mrežom ravnih ekvidistantnih zelenih linija vizualizirajte
xy-ravninu i na nju postavite stilizirano slovo F sastavljeno od
osam kocaka u žičanom prikazu. Čitavu scenu najprije zarotirajte za 20°
oko osi z, a potom za -65° oko osi x i iscrtajte u
ortogonalnoj projekciji.
4.2. Klasi MT3D
dodajte metodu
postaviKameru(x0, y0, z0, x1, y1, z1, Vx, Vy, Vz)
koja omogućuje transformaciju u koordinatni sustav kamere postavljene
u točki (x0, y0, z0) globalnog koordinatnog sustava. Kamera je usmjerena prema
točki (x1, y1, z1), a vektor (Vx, Vy, Vz) određuje smjer prema gore (view-up
vector), tj. položaj osi y koordinatnog sustava kamere. Matrica
transformacije koja se generira kod poziva metode postaviKameru
ostaje
zapamćena (mijenja se tek novim pozivom metode postaviKameru
)
i primjenjuje se kod svakog sljedećeg crtanja na način da se modificira metoda
trans(m)
klase Ortho
.
4.3. Kamerom kružite oko stiliziranog slova F iz zadatka 4.1. mijenjajući više
puta visinu na kojoj se nalazi kamera.
4.4. Modificirajte klasu
Ortho
koja implementira ortogonalno projiciranje
u klasu
Persp
koja implementira perspektivno projiciranje i ima sljedeće
metode:
postaviNa(x, y, z)
– postavlja početak
linije na poziciju (x, y, z) u 3D globalnim koordinatama;
linijaDo(x, y, z)
– povlači liniju
od posljednje zapamćene pozicije do (x, y, z) u 3D globalnim koordinatama;
trans(m)
– zadaje se matrica transformacije iz klase
MT3D
koja se primjenjuje prije crtanja u globalnim koordinatama;
postaviBoju(c)
– postavlja boju linije.
Konstruktorom
Persp(platno, xmin, xmax, ymin, ymax, d)
zadaje se pravokutnik u ravnini projekcija na kojeg se vrši perspektivno
projiciranje i udaljenost
d ravnine projekcija od centra projekcija,
tj. položaja kamere.
Zadaća 4.1. Riješite zadatak 4.3. primjenom perspektivnog projiciranja.