Vježbe 4
Rotacija oko proizvoljne osi -
Koordinatni sustav kamere - Perspektivna projekcija
1. Klasi geometrijskih transformacija u 3D (zadatak 3.2) dodajte rotaciju
oko proizvoljne osi koja se zadaje dvjema točkama.
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
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ćava transformaciju u koordinatni sustav kamere postavljene
u točki (x0, y0, z0) globalnog koordinatnog sustava. Kamera je usmjerene 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 slijedećeg crtanja (mijenja se tek novim pozivom
metode KSK).
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
5. Modificirajte klasu
Ortho
koja implementira ortogonalnu projekciju
u klasu
Persp
koja implementira perspektivnu projekciju i ima slijedeće
metode:
idiNa(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); MT3D
(ili slično) je klasa 3D transformacija implementiranih u zadatku 3.2
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 3.
- konstruktor:
Persp(Graphics g, double xmin, double ymin,
double xmax, double ymax, int xsize, int ysize, double d)
– sa (xmin, ymin) zadaje se donji, a sa (xmax, ymax) gornji ugao
pravokutnika u ravnini projekcije na kojeg se vrši perspektivna
projekcija; dimenzije zaslona (appleta) xsize i ysize nužne
su za transformaciju projiciranih u zaslonske koordinate;
d je udaljenost ravnine projekcije od centra projekcije
(položaja kamere).
6. Riješite zadatak 4. uz korištenje perpektivne projekcije.
applet