Vježbe 2

Matrična reprezentacija geometrijskih transformacija u 2D

2.1. Nacrtajte koordinatne osi te kružnicu polumjera r = 4 i elipsu s poluosima a = 4 i b = 2 sa središtem u ishodištu uz pomoć metoda klase GKS iz zadatka 1.4. Raspon vrijednosti x i y koordinata neka bude od -5 do 5.   Primjer:   applet
2.2. Implementirajte klasu MT2D matričnih reprezentacija geometrijskih transformacija u 2D: rota­cije, translacije, skaliranja i zrcaljenja. Sljedeće metode trebaju kreirati odgovarajuće 3 x 3 matrice transformacije (radimo sa homogenim koordinatama):
  1. pomakni(double px, double py) – translacija za pomak px, py;
  2. skaliraj(double sx, double sy) – skaliranje s faktorima sx, sy;
  3. zrcaliNaX() – zrcaljenje na osi x (dakle mijenja se predznak y koordinate);
  4. zrcaliNaY() – zrcaljenje na osi y (dakle mijenja se predznak x koordinate);
  5. rotiraj(double kut) – rotacija za kut u stupnjevima (ne zaboraviti preračunavanje u radijane!);
  6. identitet() – postavlja matricu transformacije na jediničnu.
2.3. U klasu GKS dodajte metodu trans(MT2D m) kojom se zadaje matrica transformacije koja se primjenjuje prije crtanja u globalnim koordinatama (to je zapravo transformacija iz lokalnih u globalne koordinate - po defaultu postaviti na identitet, tj. jediničnu matricu!). Definirajte koordinatni sustav s donjim lijevim uglom (­-10, -­5) i gornjim desnim uglom (10, 5), te uz pomoć metode trans(MT2D m) i odgovarajućih matrica transformacije nacrtajte sljedeće elipse:
  1. Poluosi a = 4, b = 2, a središte elipse je u točki (4, ­2);
  2. Poluosi a = 4, b = 2, velika os elipse je pod kutem od 30° prema osi x, a središte je u ishodištu.
  Primjer:   applet
2.4. U klasu MT2D dodajte mogućnost kompozicije geometrijskih transformacija (tj. množenja odgovarajućih matrica transformacija) preko metode mult(MT2D m) pri ćemu matrica m množi s desna. Kombiniranjem odgovarajućih geometrijskih transformacija nacrtajte sljedeće elipse:
  1. Poluosi a = 6, b = 3, velika os elipse je pod kutem od -30° prema osi x, a središte je u točki (4, 0) (nacrtajte crvenom bojom);
  2. Isto kao i gore, ali promijenite poredak transformacija: prvo pomaknite, pa rotirajte (nacrtajte plavom bojom);
  3. Poluosi a = 4, b = 1, elipsa je najprije zarotirana za 75°, potom pomaknuta za 3 u desno, te zrcaljena na osi y (zelena boja).
  Primjer:   applet
2.5. Koristeći jednostavne geometrijske likove (pravokutnike, kružnice, elipse, etc.) nacrtajte lokomotivu (kamion, automobil ili slično) u crnoj boji. Potom crvenom bojom nacrtajte pravac y = 3 x + 6, te u plavoj boji nacrtajte lokomotivu koja se zrcali na tom pravcu (upotrijebite metode klasa MT2D i GKS).   Primjer:   applet