Maailman koordinaateista ruutukoordinaatteihin
Selitykset
1) Olkoon maailma jonka "origo" on pisteessä
pw1 = (xw,yw) (world)
Maailma on kiertynyt kulmalla a
Tämä pitäisi saada ruutukoordinaatteihin.
2) Muodostetaan ensin maailman siirtomatriisi
1 0 -xw
Tw = T(-xw,-yw) = 0 1 -yw
0 0 1
3) Muodostetaan kiertomatriisi
s = sin(-a)
c = cos(-a)
c -s 0
R = R(-a) = s c 0
0 0 1
4) Lasketaan apumatriisi A
A = R * Tw
Kuva on skaalattu pisteillä p1,p2 ja p3
(joista on sekä maailman versiot pw1,pw2 ja pw3
sekä ruudun pisteet ps1,ps2 ja ps3).
Lasketaan apupisteet
pai = A * pwi ( i = 1..3 )
Lasketaan x ja y-suuntaiset skaalaussuhteet sx,sy
pisteistä pai ja psi
5) Lasketaan skaalausmatriisi
sx 0 0
Sxy = S(sx,sy) = 0 sy 0
0 0 1
6) Nyt maailman origo olisi ruudun origossa ja
maailman x-akseli ruudun x-akselin suuntainen.
Samoin maailman x ja y skaala olisi kunnossa.
Ongelmana on, että ruudulla y kasvaa alaspäin.
Siksi tarvitaan peilausmatriisi:
1 0 0
Ss = S(1,-1) = 0 -1 0
0 0 1
7) Nyt origot ovat kohdakkain ja kun otetaan isommassa
y-koordinaatissa oleva maailman piste, niin se menee
ruudun origosta ylöspäin. Tosin silloin pois ruudusta.
Tehdään vielä siirtomatriisi, jolla siirretään ps1
haluttuun kohtaan ruudulla, eli maailman origon piste
pw1 kuvautuu ruudulla pisteeseen ps1:
1 0 xs
Ts = T(xs,ys) = 0 1 ys
0 0 1
8) Lopullinen tarvittava muunnosmatriisi saadaan
M = Ts * Ss * Sxy * R * Tw