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 P1 = (2, -5, 2) i P2 = (-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:
  1. postaviNa(double x, double y, double z) – postavlja početak linije na poziciju (x, y, z) u 3D globalnim koordinatama;
  2. linijaDo(double x, double y, double z) – povlači liniju od posljednje zapamćene pozicije do (x, y, z) u 3D globalnim koordinatama;
  3. 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);
  4. postaviBoju(Color c) – postavlja boju linije;
  5. 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