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: rotacije, translacije, skaliranja i zrcaljenja. Sljedeće metode trebaju kreirati
odgovarajuće 3 x 3 matrice transformacije (radimo sa homogenim koordinatama):
pomakni(double px, double py)
– translacija za pomak px, py;
skaliraj(double sx, double sy)
– skaliranje s faktorima sx, sy;
zrcaliNaX()
– zrcaljenje na osi x (dakle mijenja se predznak y koordinate);
zrcaliNaY()
– zrcaljenje na osi y (dakle mijenja se predznak x koordinate);
rotiraj(double kut)
– rotacija za kut u stupnjevima (ne zaboraviti
preračunavanje u radijane!);
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:
- Poluosi a = 4, b = 2, a središte elipse je u točki (4, 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:
- 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);
- Isto kao i gore, ali promijenite poredak transformacija: prvo pomaknite, pa rotirajte
(nacrtajte plavom bojom);
- 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