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 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
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:
  1. idiNa(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); MT3D (ili slično) je klasa 3D transformacija implementiranih u zadatku 3.2
  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 3.
  6. 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