Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Racunarska grafikaGeometrijske transformacije
Vesna Marinkovic
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 1 / 64
Obnavljanje
Koen-Saderlandov algoritam za seckanje duzi – obnavljanje
1 Na kakav kliping region se primenjuje Koen-Saderlandov algoritam?
2 Na koliko regiona se u ovom algoritmu deli ravan? Sta svaki odbitova u 4-bitnom kodu tacke oznacava?
3 Koji kod imaju tacke u unutrasnjosti kliping regiona?
4 Sta mozemo zakljuciti ako za kodove K1 i K2 krajnjih tacaka duzivazi K1 & K2 6= 0?
5 Sta mozemo zakljuciti ako za kodove K1 i K2 krajnjih tacaka duzivazi K1 & K2 = 0?
6 Koje je vremenske slozenosti Koen-Saderlandov algoritam?
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 2 / 64
Obnavljanje
Sajrus-Bekov algoritam za seckanje duzi – obnavljanje
7 Na kakve kliping regione se moze primeniti Sajrus-Bekov algoritam?
8 Da bi se tacka preseka klasifikovala kao potencijalno ulazna/izlaznarazmatra se odnos koja dva vektora?
9 Kako za dati konveksni mnogougao dobiti vektore normala stranicausmerene ka spoljasnjosti?
10 Kako se određuje koja od dobijenih vrednosti za t predstavljapocetak, a koja kraj preseka duzi sa kliping regionom?
11 Koje je vremenske slozenosti Sajrus-Bekov algoritam?
12 Na kakve kliping regione se moze primeniti Liang-Barski algoritam?
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 3 / 64
Geometrijske transformacije Osnovni pojmovi
Geometrijske transformacije
Geometrijske transformacije igraju vaznu ulogu u:
modelovanju (dimenzionisanje i pozicioniranje elemenata),animaciji (kretanje objekata tokom vremena),transformacija iz jednog u drugi koordinatni sistem,perspektivnim i paralelnim projekcijama, . . .
Neke transformacije cuvaju neke atribute (velicinu, uglove,kolinearnost, . . .)
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 4 / 64
Geometrijske transformacije Osnovni pojmovi
Linearne transformacije
Za funkciju f kazemo da je linearna transformacija ako vazi:
f (v + w) = f (v) + f (w) za sve vrednosti v i w iz domena funkcije ff (cv) = cf (v) za sve skalare c i vrednosti v iz domena funkcije f
Linearne transformacije cuvaju:
koordinatni pocetak – pokazati za domacikolinearnost tacakaparalelnost pravih
U linearne transformacije spadaju skaliranje, rotacija i smicanje
Sve linearne transformacije se mogu predstaviti kao mnozenjematricom
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 5 / 64
Geometrijske transformacije Osnovni pojmovi
Baza vektorskog prostora
Baza vektorskog prostora dimenzije 2 je skup vektora { ~V1, ~V2} zakoje vazi:
vektori iz datog skupa su linearno nezavisnisvaki vektor iz vektorskog prostora moze se izraziti kao linearnakombinacija vektora iz ovog skupa: V = c1 ~V1 + c2 ~V2
Vektore iz ovog skupa nazivamo baznim vektorima
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 6 / 64
Geometrijske transformacije Osnovni pojmovi
Izvođenje matrica linearnih transformacija u ravni
Standardna baza: ~e1 =
[10
]i ~e2 =
[01
]Neka je
[a bc d
]matrica transformacije T
T (~e1) = T (
[10
]) =
[a bc d
] [10
]=
[ac
]
T (~e2) = T (
[01
]) =
[a bc d
] [01
]=
[bd
]Kolone matrice transformacije jednake su matrici transformacije Tprimenjenoj na vektore ~e1 i ~e2
Strategija za izvođenje matrica transformacija: izvodimo kolonu pokolonu matrice transformacije razmatranjem kako ona deluje navektore standardne baze
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 7 / 64
Geometrijske transformacije 2D transformacije
Skaliranje u ravni u odnosu na koordinatni pocetak
Tacke se mogu skalirati duz x i duz y ose
Skaliranje ne mora nuzno da bude uniformno – mozemo da skaliramopo x osi za faktor 3, a po y osi za faktor 2 (sx = 3, sy = 2)
0 1 2 3 4 5 6 7 8 9 10
1
2
3
4
5
6
x
y
(2, 1) (3, 1)
(6, 2) (9, 2)
Svojstva skaliranja:
ne cuvaju se uglovi između pravih u ravni, osim kada je sx = syako objekat ne pocinje u koordinatnom pocetku skaliranje ce gapribliziti ili udaljiti od koordinatnog pocetka
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 8 / 64
Geometrijske transformacije 2D transformacije
Matrica skaliranja u ravni
Izvedimo matricu skaliranja S razmatranjem na koji nacin vektori ~e1 i~e2 treba da budu transformisani:
~e1 =
[10
]→ sx · ~e1 =
[sx0
]
~e2 =
[01
]→ sy · ~e2 =
[0sy
][x ′
y ′
]=
[sx 00 sy
]·[xy
]Matrica S je dijagonalna matrica:
x ′ = sx · x
y ′ = sy · y
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 9 / 64
Geometrijske transformacije 2D transformacije
Rotacija u ravni oko koordinatnog pocetka
Razmatramo rotaciju oko koordinatnog pocetka za ugao ϕ
0 1 2 3 4 5 6
1
2
3
4
5
6
x
y
ϕ
Svojstva rotacije:
cuva duzine duzicuva uglove među parovima objekata
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 10 / 64
Geometrijske transformacije 2D transformacije
Matrica rotacije u ravni
Izvedimo matricu rotacije Rϕ razmatranjem na koji nacin ona utice navektore ~e1 i ~e2:
~e1 =
[10
]→[
cosϕsinϕ
]~e2 =
[01
]→[− sinϕcosϕ
]
x
y
e1 = (1, 0)
e′1 = (cosϕ, sinϕ)
ϕ x
y
e2 = (0, 1)e′2 = (− sinϕ, cosϕ)
ϕ
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 11 / 64
Geometrijske transformacije 2D transformacije
Matrica rotacije u ravni
[x ′
y ′
]=
[cosϕ − sinϕsinϕ cosϕ
]·[xy
]x ′ = x · cosϕ− y · sinϕ
y ′ = x · sinϕ+ y · cosϕ
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 12 / 64
Geometrijske transformacije 2D transformacije
Smicanje u ravni
Transformacija pri kojoj objekat treba iskositi u pravcu neke odkoordinatnih osa
SHx : x ′ = x + ay SHy : y ′ = y + bx
Svojstva smicanja:
jedna osa (horizontalna ili vertikalna) je fiksnane cuvaju se duzine osim na pravcu u kom se vrsi istezanjene cuvaju se uglovi
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 13 / 64
Geometrijske transformacije 2D transformacije
Matrice smicanja u ravni
x
y
e1 = (1, 0)
e′2e2 = (0, 1)
ϕ
a = cotϕ
Izvedimo matricu smicanja u pravcu x ose SHx razmatranjem na koji nacinona utice na vektore ~e1 i ~e2
~e1 =
[10
]→[
10
]~e2 =
[01
]→[
ctgϕ1
]gde je ϕ ugao za koji se vrsi iskosenje (oznacimo sa a = ctgϕ)
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 14 / 64
Geometrijske transformacije 2D transformacije
Matrice smicanja u ravni
Smicanje u pravcu x ose[x ′
y ′
]=
[1 ctgϕ0 1
]·[xy
]=
[1 a0 1
]·[xy
]x ′ = x + a · y
y ′ = y
Smicanje u pravcu y ose[x ′
y ′
]=
[1 0
ctg θ 1
]·[xy
]=
[1 0b 1
]·[xy
]x ′ = x
y ′ = y + b · x
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 15 / 64
Geometrijske transformacije 2D transformacije
Opsti oblik linearne transformacije
U opstem obliku matrica linearne transformacije je
[a bc d
]Ukoliko je determinanta ove matrice ad − bc jednaka nuli, onda ovutransformaciju zovemo singularna i ona nema inverz
Kod ovih transformacija kolone matrice su linearno zavisne
Ukoliko je ad − bc razlicito od nule, inverz matrice je
1ad−bc
[d −b−c a
]Za sve pomenute linearne transformacije vazi da su matriceinvertibilne
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 16 / 64
Geometrijske transformacije 2D transformacije
Translacija u ravni
Nije linearna transformacija, te se ne moze predstaviti kao mnozenjematricom
Translaciju je moguce predstaviti koriscenjem sabiranja:
x ′ = x + tx
y ′ = y + ty[x ′
y ′
]=
[xy
]+
[txty
]Sabiranje sa vektorom nije konzistentno sa mnozenjem matricomtransformacije
Pozeljno je sve transformacije predstaviti na isti nacin da bismokombinaciju transformacija izrazili kao kompoziciju njihovih matrica
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 17 / 64
Geometrijske transformacije 2D transformacije
Homogene koordinate u ravni
Zelimo da translacija (v ′ = v + T ), skaliranje (v ′ = S · v), rotacija(v ′ = R · v) i smicanje (v ′ = SH · v) imaju istu formu
Koristeci homogene koordinate ove transformacije imaju formumnozenja matrica
Tacka u ravni se predstavlja trojkom vrednosti (x , y ,W )
Bar jedna od vrednosti x , y , W nije jednaka 0
Dve trojke (x , y ,W ) i (x ′, y ′,W ′) predstavljaju istu tacku ako postojibroj t takav da je x = tx ′, y = ty ′ i W = tW ′
Ako je W 6= 0, onda tacku (x , y ,W ) mozemo predstaviti u obliku(x/W , y/W , 1) – homogenizacija
(x/W , y/W ) zovemo Dekartovim koordinatama homogene tacke
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 18 / 64
Geometrijske transformacije 2D transformacije
Homogene koordinate u ravni
Tacka (x , y , 0) je beskonacno daleka tacka u pravcu (x , y)Homogenim tackama u ravni odgovaraju trojke vrednosti, a te trojkeodgovaraju tackama u Dekartovom prostoruSkupu svih trojki kojima odgovara jedna homogena tacka odgovaraprava Dekartovog prostora: sve tacke oblika (tx , ty , tW ) (t 6= 0)pripadaju jednoj pravoj Dekartovog prostoraAko homogenizujemo tacku, dobijamo njenu reprezentaciju(x/W , y/W , 1) koja u Dekartovom smislu pripada ravni W = 1
W
P
Y
X
1(x/W , y/W , 1)
(x , y ,W )
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 19 / 64
Geometrijske transformacije 2D transformacije
2D transformacije u homogenim koordinatama
Tacku v =
xy1
zelimo da preslikamo u tacku v ′ =
x ′
y ′
1
U slucaju linearnih transformacija potrebno je “ugraditi” 2× 2matricu transformacije u gornji levi ugao 3× 3 jedinicne matrice: a b 0
c d 00 0 1
U slucaju translacije potrebno je “ugraditi” vektor translacije u trecukolonu jedinicne matrice: 1 0 tx
0 1 ty0 0 1
Proveriti!
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 20 / 64
Geometrijske transformacije 2D transformacije
Inverzne transformacije
Sve pomenute matrice transformacija su invertibilne
Transformacija inverzna skaliranju u odnosu na koordinatni pocetakza faktore sx i sy je skaliranje u odnosu na koordinatni pocetak zafaktore 1
sxi 1sy
Transformacija inverzna rotaciji oko koordinatnog pocetka za ugao ϕje rotacija oko koordinatnog pocetka za ugao −ϕ (inverz matricerotacije je njen transponat)
Transformacija inverzna smicanju sa koeficijentom a u pravcu nekekoordinatne ose je smicanje sa koeficijentom −a u pravcu iste ose
Transformacija inverzna translaciji za vektor [tx ty ]T je translacija zavektor [−tx − ty ]T
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 21 / 64
Geometrijske transformacije 2D transformacije
Kompozicija transformacija
Slozenije transformacije formiramo izracunavanjem kompozicijematrica transformacija
Primer: transformaciji kojom se tacka skalira oko koordinatnogpocetka sa faktorima sx i sy , nakon toga rotira oko koordinatnogpocetka za ugao ϕ, a zatim translira za vektor [tx ty ] odgovaramatrica transformacije: 1 0 tx
0 1 ty0 0 1
· cosϕ − sinϕ 0
sinϕ cosϕ 00 0 1
· sx 0 0
0 sy 00 0 1
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 22 / 64
Geometrijske transformacije 2D transformacije
Kompozicija transformacija
Vazne napomene:
matrice se primenjuju zdesna ulevobitan je poredak matrica, mnozenje matrica u opstem slucaju nijekomutativno
Primer: razlicit rezultat ako prvo vrsimo rotaciju, pa translaciju uodnosu na to ako prvo vrsimo translaciju, pa rotaciju
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 23 / 64
Geometrijske transformacije 2D transformacije
Kompozicija transformacija
Kompozicija dve transformacije istog tipa je transformacija istog tipa
Kompozicija dve translacije je translacija 1 0 t ′x0 1 t ′y0 0 1
· 1 0 t ′′x
0 1 t ′′y0 0 1
=
1 0 t ′x + t ′′x0 1 t ′y + t ′′y0 0 1
Kompozicija dva skaliranja u odnosu na koordinatni pocetak jeskaliranje u odnosu na koordinatni pocetak s ′x 0 0
0 s ′y 00 0 1
· s ′′x 0 0
0 s ′′y 00 0 1
=
s ′x · s ′′x 0 00 s ′y · s ′′y 00 0 1
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 24 / 64
Geometrijske transformacije 2D transformacije
Kompozicija transformacija
Kompozicija dve rotacije oko koordinatnog pocetka je rotacija okokoordinatnog pocetka
cosα − sinα 0sinα cosα 00 0 1
· cosβ − sinβ 0
sinβ cosβ 00 0 1
=
cos(α+ β) − sin(α+ β) 0sin(α+ β) cos(α+ β) 0
0 0 1
Kompozicija dva smicanja u pravcu iste koordinatne ose je smicanje upravcu iste koordinatne ose 1 a1 0
0 1 00 0 1
·
1 a2 00 1 00 0 1
=
1 a1 + a2 00 1 00 0 1
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 25 / 64
Geometrijske transformacije 2D transformacije
Transformacije koje nisu u odnosu na koordinatni pocetak
Rotacija oko tacke P(m, n) (koja nije koordinatni pocetak) za ugao ϕmoze se izvesti na sledeci nacin:
transliraj tacku P u koordinatni pocetakrotiraj oko koordinatnog pocetka za ugao ϕtransliraj koordinatni pocetak u tacku P
Tm,n · Rϕ · T−m,−n = 1 0 m0 1 n0 0 1
·
cosϕ − sinϕ 0sinϕ cosϕ 0
0 0 1
·
1 0 −m0 1 −n0 0 1
=
cosϕ − sinϕ m(1 − cosϕ) + n sinϕsinϕ cosϕ n(1 − cosϕ) −m sinϕ
0 0 1
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 26 / 64
Geometrijske transformacije 2D transformacije
Transformacije koje nisu u odnosu na koordinatni pocetak
Analogno bi se razmatralo skaliranje u odnosu na tacku koja nijekoordinatni pocetak (npr. hocemo da se pri skaliranju ne promenicentar objekta)
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 27 / 64
Geometrijske transformacije 2D transformacije
Inverz kompozicije transformacija
Inverz kompozicije transformacija je kompozicija inverza pojedinacnihtransformacija u obrnutom redosledu:
(M1M2 · . . . ·Mn)−1 = M−1n · . . . ·M−12 M−11
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 28 / 64
Geometrijske transformacije 2D transformacije
Efikasnost izracunavanja
Umesto da za svaku tacku primenjujemo mnozenje nizom matrica,racunamo matricu kompozicije
Pokusavamo da iskoristimo specificnu formu matrice kompozicije
Cesto su matrice transformacije u ravni oblika: a b txc d ty0 0 1
pa je umesto mnozenja matrica i rada sa homogenim koordinatamadovoljno koristiti jednakosti:
x ′ = x · a + y · b + tx
y ′ = x · c + y · d + ty
Za transformacije slozenih objekata u realnom vremenu potrebno jevoditi racuna o svakom mnozenju!
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 29 / 64
Geometrijske transformacije 2D transformacije
Efikasnost izracunavanja – primer
Formule rotacije u ravni oko koordinatnog pocetka:
x ′ = x · cosϕ− y · sinϕ
y ′ = x · sinϕ+ y · cosϕ
Ako je ugao ϕ mali, cosϕ se moze aproksimirati vrednoscu 1:
x ′ = x − y · sinϕ
y ′ = x · sinϕ+ y
Da bi se smanjilo nagomilavanje greske, bolje je u drugoj jednakostikoristiti x ′ umesto x :
y ′ = x ′ · sinϕ+ y = (x − y · sinϕ) · sinϕ+ y = x · sinϕ+ y(1− sin2 ϕ)
jer je determinanta
∣∣∣∣ 1 − sinϕsinϕ 1− sin2 ϕ
∣∣∣∣ = 1
Isplati se uloziti trud i analizirati dobijenu matricu transformacije
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 30 / 64
Geometrijske transformacije Izometrijske i afine transformacije
Izometrijske transformacije
Izometrijska transformacija je geometrijska transformacija koja cuvarastojanje između tacaka
Matrica je ortogonalna ako vektori koji cine njene kolone predstavljajuortonormiranu bazu:
intenzitet svake kolone jednak je 1skalarni proizvod svake dve kolone jednak je 0
Analogno vazi i za vrste ortogonalne matrice
Izometrijskoj transformaciji odgovara matrica oblika: a b txc d ty0 0 1
gde je njena gornja leva 2× 2 podmatrica ortogonalna, tj. vazi:
a2 + c2 = 1, b2 + d2 = 1, ab + cd = 0
I obratno, ovakvim matricama odgovaraju izometrijske transformacije
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 31 / 64
Geometrijske transformacije Izometrijske i afine transformacije
Izometrijske transformacije – svojstva
Izometrijske transformacije cuvaju uglove i duzine
Nazivaju se i transformacije cvrstih tela (rigid-body)
U izometrijske transformacije spadaju translacija, rotacija, simetrije(centralna, osna)
Kompozicija izometrijskih transformacija je izometrijskatransformacija
Transformacija inverzna izometrijskoj transformaciji je izometrijskatransformacija
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 32 / 64
Geometrijske transformacije Izometrijske i afine transformacije
Direktne i indirektne izometrijske transformacije
Izometrijska transformacija ravni je direktna ako cuva orijentacijuravni, tj. svaki trougao te ravni preslikava u trougao iste orijentacije
Izometrijska transformacija ravni je indirektna ako svaki trougao teravni preslikava u trougao suprotne orijentacije
Za utvrđivanje da li je izometrijska transformacija direktna iliindirektna dovoljno je izvrsiti proveru za jedan trougao
Orijentacija trougla se utvrđuje racunanjem vektorskog proizvoda
Rotacija i translacija spadaju u direktne izometrijske transformacije, anpr. osna refleksija u indirektne
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 33 / 64
Geometrijske transformacije Izometrijske i afine transformacije
Afine transformacije
Afine transformacije su transformacije koje cuvaju kolinearnost,odnose rastojanja između kolinearnih tacaka i paralelnost
Afine transformacije ne cuvaju nuzno uglove i duzine
U afine transformacije spadaju translacija, rotacija, skaliranje,smicanje
Translacija i rotacija su i izometrijske transformacije, dok skaliranje ismicanje nisu
Proizvoljni niz rotacija/translacija/skaliranja/smicanja je afinatransformacija
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 34 / 64
Geometrijske transformacije Izometrijske i afine transformacije
Predstavljanje afine transformacije
S obzirom na to da se matrica afinih transformacija moze zapisati kao: a b txc d ty0 0 1
=
[T ∗ t∗
0 1
]vazi da se svaka afina transformacija u ravni moze predstaviti kaokompozicija jedne linearne transformacije i jedne translacije:[
x ′
y ′
]= T ∗
[xy
]+ t∗
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 35 / 64
Geometrijske transformacije Preslikavanje slike u prozor
??
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 36 / 64
Geometrijske transformacije Preslikavanje slike u prozor
Problem preslikavanja slike u prozor
Jedan od standardnih zadataka u racunarskoj grafici je preslikati figuru izjednog koordinatnog sistema u drugi
Primer: preslikati sliku iz nekog koordinatnog sistema u prozor ekrana
Preslikavamo sadrzaj pravougaonika sa levim donjim temenom (xmin, ymin) igornjim desnim temenom (xmax , ymax) u koordinatnom sistemu (x , y) upravougaonik sa levim donjim temenom (umin, vmin) i gornjim desnimtemenom (umax , vmax) u koordinatnom sistemu (u, v)
x
y
x
y
u
v
u
v
translacija Tx skaliranje Sxu translacija Tu
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 36 / 64
Geometrijske transformacije Preslikavanje slike u prozor
Resenje problema preslikavanja slike u prozor
Primenjujemo translaciju koja tacku (xmin, ymin) preslikava u tacku (0, 0):
Tx =
1 0 −xmin
0 1 −ymin
0 0 1
Primenjujemo skaliranje u odnosu na (0, 0) kojim se velicina prvog pravougaonikasvodi na velicinu drugog pravougaonika:
Sxu =
umax−uminxmax−xmin
0 0
0 vmax−vminymax−ymin
0
0 0 1
Primenjujemo translaciju koja tacku (0, 0) preslikava u tacku (umin, vmin):
Tu =
1 0 umin
0 1 vmin
0 0 1
Mxu = TuSxuTx
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 37 / 64
Geometrijske transformacije 3D transformacije
Dimenzija++ (homogene koordinate za 3D prostor)
Tacka 3D prostora predstavlja se cetvorkom (x , y , z ,W )
Dve cetvorke predstavljaju istu tacku ako i samo ako je jedna cetvorkaumnozak druge
Cetvorka (0, 0, 0, 0) nije dozvoljena
Standardna reprezentacija za tacku (x , y , z ,W ), W 6= 0, je(x/W , y/W , z/W , 1)
Skupu svih cetvorki kojima odgovara jedna homogena tacka odgovaraprava u 4-dimenzionom prostoru: sve tacke oblika (tx , ty , tz , tW )(t 6= 0) pripadaju jednoj pravoj 4D prostora
Transformacije u homogenim koordinatama su predstavljenematricama dimenzije 4× 4
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 38 / 64
Geometrijske transformacije 3D transformacije
Pozitivno orijentisani koordinatni sistem
Razmatracemo pozitivno orijentisan koordinatni sistem
Uvek pisemo koordinate u istom (ciklickom) poretku xyz
Ako razmatramo rotaciju oko x ose, rotiramo +y ka +zAko razmatramo rotaciju oko y ose, rotiramo +z ka +xAko razmatramo rotaciju oko z ose, rotiramo +x ka +y
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 39 / 64
Geometrijske transformacije 3D transformacije
Translacija u 3D prostoru
Matrica translacije:x ′
y ′
z ′
1
=
1 0 0 tx0 1 0 ty0 0 1 tz0 0 0 1
·
xyz1
Kompozicija dve translacije je translacija
Transformacija inverzna translaciji je translacija
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 40 / 64
Geometrijske transformacije 3D transformacije
Skaliranje u 3D prostoru
Matrica skaliranja u odnosu na koordinatni pocetak:x ′
y ′
z ′
1
=
sx 0 0 00 sy 0 00 0 sz 00 0 0 1
·
xyz1
Kompozicija dva skaliranja u odnosu na koordinatni pocetak jeskaliranje u odnosu na koordinatni pocetak
Transformacija inverzna skaliranju je skaliranje
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 41 / 64
Geometrijske transformacije 3D transformacije
Rotacija u 3D prostoru
U 2D prostoru postoji samo rotacija oko proizvoljne tacke
U 3D prostoru se objekat moze rotirati oko proizvoljnog vektoraa = [ax ay az ]T – osa rotacije
Rodrigezova formula:
cosϕ+ a2x (1− cosϕ) axay (1− cosϕ)− az sinϕ axaz (1− cosϕ) + ay sinϕaxay (1− cosϕ) + az sinϕ cosϕ+ a2y (1− cosϕ) ayaz (1− cosϕ)− ax sinϕaxaz (1− cosϕ)− ay sinϕ ayaz (1− cosϕ) + ax sinϕ cosϕ+ a2z (1− cosϕ)
Rotacija se moze predstaviti i kao kompozicija tri rotacije:
oko x ose u Oyz ravni za ugao ϕ1
oko y ose u Oxz ravni za ugao ϕ2
oko z ose u Oxy ravni za ugao ϕ3
Ova tri ugla nazivaju se Ojlerovi uglovi
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 42 / 64
Geometrijske transformacije 3D transformacije
Rotacije oko koordinatnih osa
Matrica rotacije oko z ose:
x ′
y ′
z ′
1
=
cosϕ − sinϕ 0 0sinϕ cosϕ 0 0
0 0 1 00 0 0 1
·
xyz1
Matrica rotacije oko x ose:
x ′
y ′
z ′
1
=
1 0 0 00 cosϕ − sinϕ 00 sinϕ cosϕ 00 0 0 1
·
xyz1
Matrica rotacije oko y ose:
x ′
y ′
z ′
1
=
cosϕ 0 sinϕ 0
0 1 0 0− sinϕ 0 cosϕ 0
0 0 0 1
·
xyz1
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 43 / 64
Geometrijske transformacije 3D transformacije
Rotacije oko proizvoljne ose
Matricu rotacije oko proizvoljne ose mozemo dobiti kao kompoziciju matricatransformacija oko koordinatnih osa
Pojednostavljujemo problem: slikamo osu a u jednu od koordinatnih osa
1 racunamo ugao Θ za koji treba izvrsiti rotaciju oko y ose kako bi osa adosla u ravan Oxy
2 racunamo ugao Φ za koji treba izvrsiti rotaciju oko z ose da bi se osa aporavnala sa x osom
3 osa a je poravnata sa x osom te se vrsi rotacija oko x ose za ugao ϕ4 izvodimo transformacije inverzne transformacijama poravnanja
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 44 / 64
Geometrijske transformacije 3D transformacije
Smicanje u 3D prostoru
U 3D prostoru smicanje najcesce podrazumeva iskosenje objekta usmeru paralelnom nekoj koordinatnoj ravni (duz neke koordinatne ose)
Matrica smicanja:
1 shxy shxz 0
shyx 1 shyz 0shzx shzy 1 0
0 0 0 1
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 45 / 64
Geometrijske transformacije 3D transformacije
Smicanje u 3D prostoru
Razmotrimo smicanje kocke u pravcu koordinatne ravni Oxz : stranakocke koja lezi u Oxz ravni se ne menja, dok se strana koja lezi uravni y = 1 translira za vektor (a, b)
Koordinatni pocetak i jedinicni vektor u smeru x i z koordinatne osese ne menjaju
Matrica smicanja u pravcu Oxz ravni (duz y ose):1 a 0 00 1 0 00 b 1 00 0 0 1
Korisne su za generisanje projekcija (na primer, kako nacrtati 3Dkocku na 2D ekranu)
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 46 / 64
Geometrijske transformacije 3D transformacije
Kompozicije transformacija u 3D prostoru
Svakoj kompoziciji rotacija, skaliranja, translacija i smicanja u 3Dprostoru odgovara matrica oblika:
r11 r12 r13 txr21 r22 r23 tyr31 r32 r33 tz0 0 0 1
=
[R∗ t∗
0 1
]
gde matrica R∗ opisuje kombinovani efekat rotacija, skaliranja ismicanja, a t∗ vektor koji opisuje kombinovani efekat svih translacija
Umesto mnozenja matricom 4× 4, moze se koristiti efikasnijeizracunavanje: x ′
y ′
z ′
= R∗
xyz
+ t∗
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 47 / 64
Geometrijske transformacije 3D transformacije
Preslikavanje trojke tacaka u njoj podudarnu trojku
Zadatak: odrediti transformaciju koja preslikava trojku tacaka(P1,P2,P3) u podudarnu trojku tacaka (P ′1,P
′2,P
′3), tako da vazi:
P ′1 je koordinatni pocetak
duz P ′1P
′2 pripada pozitivnom delu z ose
duz P ′1P
′3 lezi u delu Oyz ravni u kome je pozitivna vrednost y
koordinate
Ukoliko su tri zadate tacke nekolinearne postoji tacno jedna takvadirektna izometrija
zx
y
P1
P3
P2
zx
y
P1′P3′
P2′
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 48 / 64
Geometrijske transformacije 3D transformacije
Preslikavanje trojke tacaka u njoj podudarnu trojku
Dva pristupa resavanju ovog problema:
kombinovanjem primitivnih rotacija i translacijaneposrednim određivanjem koeficijenata matrice transformacije
Prvi pristup prati ideju da tezak problem izdelimo na jednostavnijepotprobleme
Zeljena transformacija se moze izvesti u cetiri koraka:
1 translirati P1 u koordinatni pocetak2 rotirati oko y ose tako da P1P2 pripada Oyz ravni3 rotirati oko x ose tako da P1P2 pripada pozitivnom delu z ose4 rotirati oko z ose tako da P1P3 pripada delu Oyz ravni u kom je
pozitivna vrednost y koordinate
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 49 / 64
Geometrijske transformacije 3D transformacije
Preslikavanje trojke tacaka u njoj podudarnu trojku, prvarotacija
Rotacija oko y ose: duz P ′1P′2 se obara u ravan Oyz tako sto se
projekcija duzi P ′1P′2 na ravan Oxz rotira do pozitivnog dela z ose
Ugao za koji se vrsi rotacija jednak je −(90◦ −Θ) = Θ− 90◦
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 50 / 64
Geometrijske transformacije 3D transformacije
Preslikavanje trojke tacaka u njoj podudarnu trojku, drugarotacija
Rotacija oko x ose: P ′′1P′′2 se rotacijom za pozitivan ugao Φ dovodi na
poklapanje sa pozitivnim delom z ose
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 51 / 64
Geometrijske transformacije 3D transformacije
Preslikavanje trojke tacaka u njoj podudarnu trojku, trecarotacija
Rotacija oko z ose: projekcija duzi P ′′′1 P ′′′3 na ravan Oxy se rotira zapozitivni ugao α u pozitivan deo y ose, dovodeci time duz P ′′′1 P ′′′3 uravan Oyz
Rezultujuca matrica je oblika:T = Rz(α) · Rx(Φ) · Ry (Θ− 90) · T−x1,−y1,−z1
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 52 / 64
Geometrijske transformacije 3D transformacije
Preslikavanje tacaka, pravih i ravni
Matrice transformacija određuju slike pojedinacnih tacaka
Slika prave:
prava određena slikama dve tacke polazne prave
Slika ravni:
ravan određena slikama tri nekolinearne tacke polazne ravni
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 53 / 64
Geometrijske transformacije Promena koordinatnog sistema
Transformacije kao promena koordinatnog sistema
Do sada su transformacije koriscene za preslikavanje skupa tacakajednog koordinatnog sistema u isti taj koordinatni sistem – objekat jetransformisan, a koordinatni sistem je ostajao isti
Transformaciju mozemo posmatrati i kao promenu koordinatnogsistema – objekat se ne transformise, vec se racunaju njegovekoordinate u novom koordinatnom sistemu
Prvi pristup je pogodniji kada se objekat krece; drugi kada viseobjekata u svojim pojedinacnim koordinatnim sistemima trebaobjediniti u jedinstven koordinatni sistem
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 54 / 64
Geometrijske transformacije Promena koordinatnog sistema
Primer promene koordinatnog sistema
Tricikl je opisan u svom koordinatnom sistemu
Zelimo da odredimo koordinate jedne tacke na prednjem tocku dok setocak okrece
Menjamo koordinatni sistem – biramo onaj u kojem je centar tockakoordinatni pocetak, a osa tocka jednaka z osi i u njemu racunamonove koordinate tacke sa tocka
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 55 / 64
Geometrijske transformacije Promena koordinatnog sistema
Transformacije kao promena koordinatnog sistema
Mi←j – matrica transformacije koja prevodi koordinatni sistem j ukoordinatni sistem i
P(i) – reprezentacija tacke P u koordinatnom sistemu i , P(j) ukoordinatnom sistemu j i P(k) u koordinatnom sistemu k
Vazi:P(i) = Mi←jP
(j) = Mi←jMj←kP(k) = Mi←kP
(k)
iMi←jMj←k = Mi←k
kao iMi←j = M−1j←i
Iz poslednje dve jednakosti sledi vazno svojstvo: za proizvoljnupromenu koordinatnog sistema dovoljno je imati opis svođenja izrazlicitih koordinatnih sistema na jedan koordinatni sistem
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 56 / 64
Geometrijske transformacije Promena koordinatnog sistema
Transformacije kao promena koordinatnog sistema
Data su cetiri koordinatna sistema oznacena brojevima 1, 2, 3 i 4.
Cemu je jednaka matrica M1←2, cemu matrica M2←3, cemu matricaM3←4?
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 57 / 64
Geometrijske transformacije Promena koordinatnog sistema
Transformacije kao promena koordinatnog sistema
M1←2 = T4,2
M2←3 = T2,3 · S0.5,0.5M3←4 = T6.7,1.8 · R45◦
Iz prethodnog vazi: M1←3 = T4,2 · T2,3 · S0.5,0.5Matrice Mi←j imaju isti oblik kao i matrice transformacija
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 58 / 64
Geometrijske transformacije Graf scene
Graf scene
Objekti najcesce imaju hijerarhijsku strukturu
I sama scena (koja se sastoji iz velikog broja objekata) se mozesagledati hijerarhijski
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 59 / 64
Geometrijske transformacije Graf scene
Graf scene
Graf scene je struktura podataka koja se koristi za predstavljanjehijerarhijskog odnosa među transformacijama koje se primenjuju naskup objekata u trodimenzionalnom prostoru
Graf scene se sastoji iz:
cvorova objekata (kocke, valjci, lopte, . . .) koji su podrazumevanojedinicne velicine i pozicionirani u koordinatnom pocetkucvorova atributa (boja, tekstura, . . .)cvorova transformacija
Pogodan je za predstavljanje hijerarhijske strukture objekta na osnovupozicija i atributa njegovih sastavnih delova, ali i za animiranjeslozenog objekta koji se sastoji iz veceg broja delova
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 60 / 64
Geometrijske transformacije Graf scene
Format grafa scene
Transformacije se mogu primeniti:
na listove (glava, osnova, . . .)na grupe objekata (gornji i donji deo tela)
Umesto da za svaki novi objekat koji je potreban pravimo novuprimitivu, mozemo primeniti transformaciju na manji skup primitiva
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 61 / 64
Geometrijske transformacije Graf scene
Primer grafa scene
Najjednostavniji oblik grafa scene je usmereno stablo (grane suusmerene od oca ka sinu)
Kumulativna matrica transformacije M se gradi kako se penjemo uzstablo – transformacije na visem nivou se dodaju na pocetak niza
Primer: za objekat o1 vazi M = M1, za objekat o2 vazi M2 ·M3, zaobjekat o3 vazi M2 ·M4 ·M5
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 62 / 64
Geometrijske transformacije Graf scene
Definisanje grupa u grafu scene
Ako imamo vise slicnih komponenti na sceni, moguce je ponovoiskoristiti vec definisane grupe objekata
Graf scene vise nije stablo, vec DAG (usmereni aciklicki graf)
Transformacije definisane u okviru grupe g3 se ne menjaju, ali surazlicite kumulativne matrice transformacije za svako koriscenje grupeg3 kao celine: T0 · T1 vs T0 · T2 · T4
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 63 / 64
Geometrijske transformacije Graf scene
Renderovanje grafa scene
Renderovanje se sastoji od obilaska grafa scene (DFS)
Geometrijski cvorovi se iscrtavaju, a cvorovi transformacija uticu na matricutransformacije
Ukoliko je graf scene u obliku direktnog aciklickog grafa, obilazi se kao stablo
Primer: T = T0, push(T ), T = T · T1, push(T ), renderuj o1, pop(T ),push(T ), T = T · T5, renderuj o3, pop(T ), T = T · T6, renderuj o4 , . . .
Vesna Marinkovic Racunarska grafika Geometrijske transformacije 64 / 64