Vježbe 3

Animacija u Javi - Matrična reprezentacija geometrijskih transformacija u 3D - Ortogonalna projekcija

Primjer animacije u Java appletu:   applet   source
Primjer indirektnog crtanja (blisko metodi dvostrukog spremnika - double buffering) s ciljem da se smanji titranje:   applet   source
1. Upotrijebite klasu matričnih transformacija u 2D (zadatak 1.3) i klasu GKS (zadatak 2.2), te rutinu za crtanje elipsi (zadatak 2.4) da bi isprogramirali animirani ventilator:   applet
2. Implementirajte matrične reprezentacije geometrijskih transformacija u 3D: rota­cije oko osi x, y i z, translacije i skaliranja, te njihovu kompoziciju putem matričnog produkta (proširenje zadatka 1.3 na 3D).
3. Implementirajte klasu Ortho koja iscrtava ortogonalnu projekciju linija definiranih u 3D globalnom koordinatnom sustavu sa slijedećim metodama:
  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 2
  4. postaviBoju(Color c) – postavlja boju linije
  5. konstruktor: Ortho(Graphics g, double xmin, double ymin, double xmax, double ymax, int xsize, int ysize) – sa (xmin, ymin) zadaje se donji, a sa (xmax, ymax) gornji ugao pravokutnika u ravnini projekcije na kojeg se vrši ortogonalna projekcija iz globalnog 3D koordinatnog sustava; dimenzije zaslona (appleta) xsize i ysize nužne su da bi se izračunale transformacije iz pravokutnika u ravnini projekcije u zaslonske koordinate.
4. Radi testiranja klasa iz zadataka 2. i 3. nacrtajte ortogonalne projekcije kocke zarotirane oko različitih osi u različitim bojama:
  1. Rotacija oko osi x za 30° - crveno
  2. Rotacija oko osi y za 30° - zeleno
  3. Rotacija oko osi z za 30° - plavo
  4. Rotacija najprije oko osi x, pa y, pa z, svaki put za 30° - crno
  applet
5. Animirajte rotaciju kocke i to tako da se kocka istovremeno okreće oko sve tri koordinatne osi:   applet