Vježbe 4
Rotacija oko proizvoljne osi -
Koordinatni sustav kamere - Perspektivno projiciranje
4.1. Klasi MT3D
matričnih reprezentacija geometrijskih transformacija
u 3D (zadatak 3.2) dodajte rotaciju oko proizvoljne osi koja se zadaje dvjema točkama:
rotiraj(double x1, double y1, double z1, double x2, double y2, double z2,
double kut)
.
4.2. Animirajte rotaciju kocke oko osi zadane točkama P
1 = (2, -5, 2)
i P
2 = (-3, 5, -3). U početnom položaju, lijevi donji vrh kocke je
u ishodištu, a stranice duljine a = 2 su na koordinatnim osima.
applet
4.3. 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. smjer duž 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.4. Mrežom ravnih linija vizualizirajte
xz-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.5. 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.3.
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.6. Riješite zadatak 4.4. primjenom perspektivnog projiciranja.
applet