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:
  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.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