28
Raˇ cunarska grafika Geometrijske osnove Vesna Marinkovi´ c Vesna Marinkovi´ c Raˇ cunarska grafika Geometrijske osnove 1 / 28

Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

Embed Size (px)

Citation preview

Page 1: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

Racunarska grafikaGeometrijske osnove

Vesna Marinkovic

Vesna Marinkovic Racunarska grafika Geometrijske osnove 1 / 28

Page 2: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 3: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 4: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 5: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 6: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 7: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 8: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 9: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 10: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 11: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 12: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 13: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 14: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 15: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 16: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 17: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 18: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 19: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 20: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 21: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 22: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 23: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 24: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 25: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 26: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 27: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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

Page 28: Ra cunarska gra ka Geometrijske osnovepoincare.matf.bg.ac.rs/~vesnap/grafika/04_geometrijske_osnove.pdf · Geometrijske osnove 2D transformacije 2D transformacije u homogenim koordinatama

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