Upload
vuongdien
View
233
Download
0
Embed Size (px)
Citation preview
Racunarska grafikaGeometrijske osnove
Vesna Marinkovic
Vesna Marinkovic Racunarska grafika Geometrijske osnove 1 / 28
Obnavljanje
Popunjavanje regiona – obnavljanje
1 Kako se zadaje region definisan unutrasnjoscu, a kako region definisangranicom?
2 Na kakve regione se primenjuje flood-fill algoritam a na kakveboundary-fill algoritam? Kako svaki od njih funkcionise?
3 Gde se u popularnoj igrici Minesweeper koristi neki od ovihalgoritama?
4 Koje su slozenosti ovi algoritmi?
Vesna Marinkovic Racunarska grafika Geometrijske osnove 2 / 28
Obnavljanje
Popunjavanje poligona – obnavljanje
5 Sta je scan linija? Koliko scan linija se razmatra u algoritmu za scanpopunjavanje poligona?
6 Kako se za jednu scan liniju određuje koje tacke te linije pripadajuunutrasnjosti poligona?
7 Na koji nacin obrađujemo scan linije koje prolaze kroz neko temepoligona?
8 Koliki broj presecnih tacaka racunamo za horizontalne stranicepoligona? Da li se boje donje stranice poligona? Da li se boje gornjestranice poligona?
9 Sta je sliver? Zbog cega se on javlja?
Vesna Marinkovic Racunarska grafika Geometrijske osnove 3 / 28
Obnavljanje
Određivanje preseka scan linije sa levom stranicompoligona – obnavljanje
10 Koja inkrementalna veza vazi za presek (i + 1)-ve scan linije sa nekomstranicom poligona na osnovu preseka sa i-tom scan linijom?
11 Na koji nacin prelazimo na celobrojnu aritmetiku – koje dve celobrojnevrednosti razmatramo i na koji nacin vrsimo obradu?
12 Zasto u algoritmu LeftEdgeScan vrednost promenljive inkrement
krece od vrednosti imenilac?
13 Kako bi se izmenio algoritam ukoliko bismo racunali presek sa desnomstranicom poligona?
14 Kako bi se izmenio algoritam za stranice sa koeficijentom pravcam < 1?
Vesna Marinkovic Racunarska grafika Geometrijske osnove 4 / 28
Obnavljanje
Cohen-Sutherland-ov algoritam za seckanje duzi –obnavljanje
15 Na kakav kliping region se primenjuje Cohen-Sutherland-ov algoritam?
16 Na koliko regiona se u ovom algoritmu deli ravan? Sta svaki odbitova u 4-bitnom kodu tacke oznacava?
17 Koji kod imaju tacke u unutrasnjosti kliping regiona?
18 Sta mozemo zakljuciti ako za kodove K1 i K2 krajnjih tacaka duzivazi K1&K2 6= 0?
19 Sta mozemo zakljuciti ako za kodove K1 i K2 krajnjih tacaka duzivazi K1&K2 = 0?
Vesna Marinkovic Racunarska grafika Geometrijske osnove 5 / 28
Geometrijske osnove Osnovni pojmovi
Jednacina ravni u 3D prostoru
Ravan α je određena tackom koja joj pripada A(x0, y0, z0) i vektoromnormale nα : [A,B,C ]
Neka je M : (x , y , z) proizvoljna tacka ravni α
Jednacinu ravni dobijamo iz cinjenice da su vektori−−→AM i nα upravni:
0 = −→nα ·−−→AM = A(x−x0) +B(y −y0) +C (z− z0) = Ax +By +Cz +D
Vesna Marinkovic Racunarska grafika Geometrijske osnove 6 / 28
Geometrijske osnove Osnovni pojmovi
Jednacina ravni u 3D prostoru
Ako je ravan zadata trima nekolinearnim tackama P1, P2 i P3, onda
je vektor−−−→P1P2 ×
−−−→P1P3 kolinearan vektoru normale ravni [A,B,C ]
Rastojanje tacke B(x1, y1, z1) od ravni α jednako je:
d =Ax1 + By1 + Cz1 + D√
A2 + B2 + C 2
Za sve tacke sa jedne strane ravni, vrednost Ax + By + Cz + D jeistog znaka
Vesna Marinkovic Racunarska grafika Geometrijske osnove 7 / 28
Geometrijske osnove Osnovni pojmovi
Vektori
Vektor je n-torka vrednosti
Vaze naredne formule za sabiranje, mnozenje skalarom i skalarniproizvod vektora (za n = 2):
−→v1 +−→v2 =
[x1y1
]+
[x2y2
]=
[x1 + x2y1 + y2
]
a−→v = a
[xy
]=
[axay
]−→v1 · −→v2 =
[x1y1
]·[x2y2
]= x1x2 + y1y2
Analogne formule bi vazile za vektore duzine 3
Vektori dimenzije 2 mogu da opisuju tacke u Dekartovoj ravni, avektori dimenzije 3 mogu da opisuju tacke u Dekartovom prostoru
Vesna Marinkovic Racunarska grafika Geometrijske osnove 8 / 28
Geometrijske osnove Osnovni pojmovi
Vektori
Duzina vektora −→v jednaka je:
|−→v | =√−→v · −→v
Jedinicni vektor istog pravca i smera kao vektor −→v jednak je:
−→v /|−→v |
Ugao ϕ između dva vektora −→v i −→u moze se izracunati na osnovuveze:
−→v · −→u = |−→v ||−→u |cosϕ
Vesna Marinkovic Racunarska grafika Geometrijske osnove 9 / 28
Geometrijske osnove Osnovni pojmovi
Linearne transformacije
Za funkciju f kazemo da je linearna funkcija 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
Koordinatni pocetak je invarijantan u odnosu na linearnetransformacije (skaliranje, rotacija i smicanje jesu linearne, atranslacija nije)
Linearne transformacije se mogu predstaviti invertibilnim matricama
Baza vektorskog prostora je skup vektora {V1,V2} za koje vazi:
vektori iz datog skupa su linearno nezavisnisvaki vektor iz vektorskog prostora moze se izraziti kao linearnakombinacija vektora iz ovog skupa: V = c1V1 + c2V2
Vektore iz ovog skupa nazivamo baznim vektorima
Vesna Marinkovic Racunarska grafika Geometrijske osnove 10 / 28
Geometrijske osnove 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 T primenjenoj navektore 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 osnove 11 / 28
Geometrijske osnove 2D transformacije
Skaliranje u ravni
Tacke se mogu skalirati (istezati) duz x i duz y oseSkaliranje 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
7
8
9
10
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 gapribiliziti ili udaljiti od koordinatnog pocetka
Vesna Marinkovic Racunarska grafika Geometrijske osnove 12 / 28
Geometrijske osnove 2D transformacije
Matrica skaliranja
Izvedimo matricu skaliranja S razmatranjem na koji nacin vektori e1 ie2 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 osnove 13 / 28
Geometrijske osnove 2D transformacije
Rotacija u ravni
Razmatramo rotaciju oko koordinatnog pocetka za ugao ϕ, pri cemusu uglovi pozitivno orijentisani
0 1 2 3 4 5 6 7
1
2
3
4
5
6
7
x
y
ϕ
Svojstva rotacije:
cuva velicine objekatacuva uglove među parovima objekata
Vesna Marinkovic Racunarska grafika Geometrijske osnove 14 / 28
Geometrijske osnove 2D transformacije
Matrica rotacije
Izvedimo matricu rotacije Rϕ razmatranjem na koji nacin ona utice navektore e1 i e2
e1 =
[10
]→[
cosϕsinϕ
]e2 =
[01
]→[− sinϕcosϕ
]
x
y
(1, 0)
(cosϕ, sinϕ)
ϕ x
y
(0, 1)(− sinϕ, cosϕ)
ϕ
Vesna Marinkovic Racunarska grafika Geometrijske osnove 15 / 28
Geometrijske osnove 2D transformacije
Matrica rotacije
[x ′
y ′
]=
[cosϕ − sinϕsinϕ cosϕ
]·[xy
]x ′ = x · cosϕ− y · sinϕ
y ′ = x · sinϕ+ y · cosϕ
Vesna Marinkovic Racunarska grafika Geometrijske osnove 16 / 28
Geometrijske osnove 2D transformacije
Smicanje u ravni
Transformacija pri kojoj objekat treba iskositi u smeru neke odkoordinatnih osa
Jednacine transformacije su:
x ′ = x + a · y , y ′ = y
odnosno:
x ′ = x , y ′ = y + b · x
SHx : x ′ = x + ay SHy : y ′ = y + bx
Vesna Marinkovic Racunarska grafika Geometrijske osnove 17 / 28
Geometrijske osnove 2D transformacije
Matrice smicanja
Matrica smicanja po x osi je:
SHx =
[1 a0 1
]Matrica smicanja po y osi je:
SHy =
[1 0b 1
]
Vesna Marinkovic Racunarska grafika Geometrijske osnove 18 / 28
Geometrijske osnove 2D transformacije
Translacija u ravni
Nije linearna transformacija, te se ne moze predstaviti invertibilnommatricom
Translaciju je moguce predstaviti koriscenjem sabiranja:
x ′ = x + tx y ′ = y + ty[x ′
y ′
]=
[xy
]+
[txty
]Koriscenje sabiranja vektora nije konzistentno sa razmatranimmetodom matrica transformacija
Bilo bi pozeljno sve transformacije predstaviti na isti nacin da bismokombinaciju transformacija mogli da izrazimo koriscenjem kompozicijenjihovih matrica
Vesna Marinkovic Racunarska grafika Geometrijske osnove 19 / 28
Geometrijske osnove 2D transformacije
Homogene koordinate u ravni
Bilo bi dobro 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
2D tacka se predstavlja trojkom vrednosti (x , y ,W )
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 ′
Bar jedna od vrednosti x , y , W nije 0
Ako je W 6= 0, onda tacku mozemo predstaviti u obliku(x/W , y/W , 1) i (x/W , y/W ) zovemo Dekartovim koordinatamahomogene tacke
Vesna Marinkovic Racunarska grafika Geometrijske osnove 20 / 28
Geometrijske osnove 2D transformacije
Homogene koordinate u ravni
Tacka (x , y , 0) je beskonacno daleka tacka u pravcu (x , y)Homogenim 2D tackama odgovaraju trojke, a te trojke odgovarajutackama 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 dekartovskom smislu pripada ravni W = 1
W
P
Y
X
1(x/W , y/W , 1)
(x , y ,W )
Vesna Marinkovic Racunarska grafika Geometrijske osnove 21 / 28
Geometrijske osnove 2D transformacije
2D transformacije u homogenim koordinatama
Tacku v =
xy1
zelimo da preslikamo u tacku v ′ =
x ′
y ′
1
Kod linearnih transformacija potrebno je “ugraditi” matricu 2x2 ugornji levi ugao 3x3 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
Vesna Marinkovic Racunarska grafika Geometrijske osnove 22 / 28
Geometrijske osnove 2D transformacije
Inverzne transformacije
Zahvaljujuci homogenim koordinatama, sve matrice su invertibilne
Inverzna transformacija skaliranju za faktor sx i sy je skaliranje zafaktor 1
sxi 1sy
Inverzna transformacija rotaciji oko koordinatnog pocetka za ugao ϕje rotacija oko koordinatnog pocetka za ugao −ϕ (inverz matricerotacije je njen transponat)
Inverzna transformacija smicanju za faktor a je smicanje za faktor −aInverzna transformacija translaciji za vektor [tx ty ]T je translacija zavektor [−tx − ty ]T
Vesna Marinkovic Racunarska grafika Geometrijske osnove 23 / 28
Geometrijske osnove 2D transformacije
Kompozicija transformacija
Da bismo konstruisali slozenije transformacije, formiramo kompozicijumatrica transformacija
Ukoliko zelimo da napravimo transformaciju kojom se tacka skalira,nakon toga rotira, a zatim translira dobili bismo narednu matricutransformacije: 1 0 tx
0 1 ty0 0 1
cosϕ − sinϕ 0sinϕ cosϕ 0
0 0 1
sx 0 00 sy 00 0 1
Vazne napomene:
matrice se primenjuju zdesna ulevo.bitan je poredak matrica jer mnozenje matrica u opstem slucaju nijekomutativno
Vesna Marinkovic Racunarska grafika Geometrijske osnove 24 / 28
Geometrijske osnove 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 je skaliranje 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 osnove 25 / 28
Geometrijske osnove 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 po istoj osi je smicanje po istoj osi 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 osnove 26 / 28
Geometrijske osnove 2D transformacije
Transformacije koje nisu u odnosu na koordinatni pocetak
Rotacija oko tacke P(x1, y1) (koja nije koordinatni pocetak) za ugaoϕ moze se izvesti na sledeci nacin:
transliraj tacku P u koordinatni pocetakrotiraj za ugao ϕtransliraj koordinatni pocetak u tacku P
T (x1, y1) · R(ϕ) · T (−x1,−y1) = 1 0 x10 1 y10 0 1
· cosϕ − sinϕ 0
sinϕ cosϕ 00 0 1
· 1 0 −x1
0 1 −y10 0 1
=
cosϕ − sinϕ x1(1− cosϕ) + y1 sinϕsinϕ cosϕ y1(1− cosϕ)− x1 sinϕ
0 0 1
Analogno bi se razmatralo skaliranje u odnosu na tacku koja nijekoordinatni pocetak, ako npr. hocemo da pri skaliranju ne promenimocentar objekta
Vesna Marinkovic Racunarska grafika Geometrijske osnove 27 / 28
Geometrijske osnove 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 osnove 28 / 28