Vizualizacija matrične transformacije ravnine

     Matrična transformacija ravnine prikazana je preslikavanjem nekog lika iz koordinatnog sustava (x,y) na lijevoj strani u koordinatni sustav (x',y'). Matrica korištena u transformaciji nalazi se između tih dvaju koordinatnih sustava. Vrijednosti pojedinih članova matrice mogu se direktno upisivati ili mijenjati pripadnim sliderima. Također je moguće, zadavanjem kuta, direktno dobiti vrijednosti članova matrice za rotaciju i zrcaljenje. Koordinatne osi se po potrebi mogu uključivati i isključivati, a ponuđeno je i nekoliko likova kroz listu na dnu prozora.

    Vizualizacija matrične transformacije ravnine napisana je u programskom jeziku Java. Kako bi applet radio na što više različitih browsera korištene su samo funkcije Java 1.1 verzije. Program je podijeljen u dvije klase. Mat klasa obavlja transformaciju slike i sve grafičke operacije dok MatrixControl klasa upravlja grafičkim sučeljem. Originalna slika učitava se koristeći Applet::getResource(string) i Applet::getImage(url) funkcije. Stvaraju se dva polja cijelobrojnih vrijednosti u koja se pohranjuju pikseli originalne i transformirane slike pomoću klase PixelGrabber. Prolaskom kroz svaki element polja transformirane slike, traži se odgovarajući piksel u originalnoj slici. Ako bi se prvo prolazilo kroz elemente polja originalne slike, svi elementi polja transformirane slike vjerojatno ne bi bili pogodjeni. Stvaranje slike iz polja cjelobrojnih vrijednosti omogućuju funkcija createImage(ImageProducer  producer) i klasa MemoryImageSource. Dobivena slika kopira se u sliku stvorenu pomoću createImage(int width, int height) funkcije. Samo tako stvorene slike dopuštaju pristup svome Graphics objektu i moguće im je dodati tekst ili neki dodatni crtež (npr. koordinatne osi).

    Grafičko sučelje napravljeno je pomoću java.awt paketa jer noviji swing paket nije podržan u Javi 1.1. Svi dijelovi sučelja postavljeni su u GridBagConstraints layout i povezani pripadajućim listener klasama. Funkcija Mat::update(Graphics g) dodana je kako bi se zaobišlo osvježavanje pozadine grafičkog sučelja i neugodan efekt "trzanja" slike (tzv. flickering).

Izvorni kod programa dostupan je ovdje.

Tvrtko Bedeković

Matrične transformacije ravnine