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:
  1. postaviNa(x, y, z) – postavlja početak linije na poziciju (x, y, z) u 3D globalnim koordinatama;
  2. linijaDo(x, y, z) – povlači liniju od posljednje zapamćene pozicije do (x, y, z) u 3D globalnim koordinatama;
  3. trans(m) – zadaje se matrica transformacije iz klase MT3D koja se primjenjuje prije crtanja u globalnim koordinatama;
  4. 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.