Vježbe 4
Koordinatni sustav kamere - Perspektivno projiciranje
4.1. Klasi Ortho
dodajte metodu KSK(double x0, double y0,
double z0, double x1, double y1, double z1, double Vx, double Vy, double 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 KSK
ostaje
zapamćena i primjenjuje se kod svakog sljedećeg crtanja (mijenja se tek novim
pozivom metode KSK
).
4.2. Mrežom ravnih linija vizualizirajte
xy-ravninu, a na nju postavite
stilizirano slovo F sačinjeno od osam kocaka. Kamerom kružite oko slova F
mijenjajući više puta visinu na kojoj se nalazi kamera.
applet
4.3. Modificirajte klasu
Ortho
koja implementira ortogonalno projiciranje
u klasu
Persp
koja implementira perspektivno projiciranje i ima sljedeće
metode:
postaviNa(double x, double y, double z)
– postavlja početak
linije na poziciju (x, y, z) u 3D globalnim koordinatama;
linijaDo(double x, double y, double z)
– povlači liniju
od posljednje zapamćene pozicije do (x, y, z) u 3D globalnim koordinatama;
trans(MT3D m)
– zadaje se matrica transformacije koja se
primjenjuje prije crtanja u globalnim koordinatama (to je zapravo
transformacija iz lokalnih u globalne koordinate - po defaultu postaviti
identitet, tj. jediničnu matricu);
postaviBoju(Color c)
– postavlja boju linije;
KSK(double x0, double y0, double z0, double x1, double y1, double z1,
double Vx, double Vy, double Vz)
– transformacija u koordinatni
sustav kamere opisana u zadatku 4.1.
Konstruktorom
Persp(Graphics g, double xmin, double xmax,
double ymin, double ymax, double d, int xsize, int ysize)
zadaje se pravokutnik u ravnini projekcija na kojeg se vrši perspektivno
projiciranje, udaljenost
d ravnine projekcija od centra projekcija,
tj. položaja kamere, te dimenzije prozora (appleta) koje su nužne za
za transformaciju projiciranih u zaslonske koordinate.
4.4. Riješite zadatak 4.2. primjenom perspektivnog projiciranja.
applet