računarska grafika

27
Računarska Računarska grafika grafika predavanja predavanja v.as.mr. Samir Lemeš v.as.mr. Samir Lemeš [email protected] [email protected]

Upload: khanh

Post on 06-Jan-2016

31 views

Category:

Documents


2 download

DESCRIPTION

Računarska grafika. predavanja v.as.mr. Samir Lemeš [email protected]. 22. Algoritmi isijecanja. Pojam isijecanja Isijecanje tačke Isijecanje linije Algorit a m Cohen-Sutherland Algoritam Liang-Barsky Algoritam Nicholl-Lee-Nicholl. Pojam i sijecanja. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Računarska grafika

RačunarskaRačunarskagrafikagrafika

predavanjapredavanjav.as.mr. Samir Lemešv.as.mr. Samir Lemeš[email protected]@mf.unze.ba

Page 2: Računarska grafika

22. 22. Algoritmi isijecanjaAlgoritmi isijecanja

Pojam isijecanjaPojam isijecanja Isijecanje tačkeIsijecanje tačke Isijecanje linijeIsijecanje linijeAlgoritAlgoritaam Cohen-Sutherlandm Cohen-SutherlandAlgoritam Liang-Barsky Algoritam Liang-Barsky Algoritam Nicholl-Lee-NichollAlgoritam Nicholl-Lee-Nicholl

Page 3: Računarska grafika

Pojam iPojam isijecanjasijecanja

Isijecanje je svaka procedura koja uklanja Isijecanje je svaka procedura koja uklanja dijelove slike.dijelove slike.

Algoritmi isijecanja se koriste u 2D Algoritmi isijecanja se koriste u 2D pogledima da bi se identifikovao dio slike pogledima da bi se identifikovao dio slike koji se nalazi unutar prozora isijecanjakoji se nalazi unutar prozora isijecanja(vidljivi dio slike).(vidljivi dio slike).

Matrice transformacija se primjenjuju na Matrice transformacija se primjenjuju na isječeni dio slike, kako bi se smanjio obim isječeni dio slike, kako bi se smanjio obim proračunaproračuna

Page 4: Računarska grafika

Pojam iPojam isijecanjasijecanja

Najčešće se koriste sljedeći 2D algoritmi Najčešće se koriste sljedeći 2D algoritmi isijecanja:isijecanja: isijecanje tačakaisijecanje tačaka isijecanje linija (pravolnijskih segmenata)isijecanje linija (pravolnijskih segmenata) isijecanje zatvorenih kontura (poligona)isijecanje zatvorenih kontura (poligona) isijecanje krivuljaisijecanje krivulja isijecanje tekstaisijecanje teksta

Page 5: Računarska grafika

Pojam iPojam isijecanjasijecanja

Prozor isijecanja se definiše koordinatama Prozor isijecanja se definiše koordinatama krajnjih dijagonalnih tačaka prozora:krajnjih dijagonalnih tačaka prozora:(X(Xminmin,Y,Yminmin) i (X) i (Xmaxmax,Y,Ymaxmax))

Tako definisane koordinate odgovaraju Tako definisane koordinate odgovaraju normalizovanom kvadratu, gdje se normalizovanom kvadratu, gdje se vrijednosti koordinata x i y kreću od 0 do 1 vrijednosti koordinata x i y kreću od 0 do 1 ili od -1 do 1ili od -1 do 1

Page 6: Računarska grafika

Isijecanje tačkeIsijecanje tačke

Ako su x koordinate okvira isijecanja Ako su x koordinate okvira isijecanja Xmin Xmin ii Xmax, Xmax, aa y y kkoordinate Ymin oordinate Ymin ii Ymax, Ymax, onda onda sljedeće nejednakosti moraju biti zadovoljene da sljedeće nejednakosti moraju biti zadovoljene da bi tačka bi tačka (X,Y) (X,Y) bila unutar okvira isijecanjabila unutar okvira isijecanja: :

Xmin < X < XmaxXmin < X < Xmax i i Ymin < Y < Ymax Ymin < Y < Ymax Ako barem jedna od ove 4 nejednakosti nije Ako barem jedna od ove 4 nejednakosti nije

zadovoljena, tačka je izvan okvira isijecanjazadovoljena, tačka je izvan okvira isijecanja..

Page 7: Računarska grafika

Isijecanje tačkeIsijecanje tačke

prozor isijecanja

Page 8: Računarska grafika

Isijecanje linijeIsijecanje linije

Kod isijecanja linije, ne posmatraju se sve tačke Kod isijecanja linije, ne posmatraju se sve tačke koje joj pripadaju, nego samo krajnje tačke. koje joj pripadaju, nego samo krajnje tačke.

Ako su obje krajnje tačke unutar okvira Ako su obje krajnje tačke unutar okvira isijecanja, cijela linija je vidljiva (trivijalno).isijecanja, cijela linija je vidljiva (trivijalno).

Ako je jedna krajnja tačka unutar a druga izvan, Ako je jedna krajnja tačka unutar a druga izvan, onda linija siječe okvir i treba izračunati tačku onda linija siječe okvir i treba izračunati tačku presjeka. presjeka.

Ako su obje krajnje tačke izvan okvira, potrebni Ako su obje krajnje tačke izvan okvira, potrebni su dodatni proračuni da bi se utvrdila da li je dio su dodatni proračuni da bi se utvrdila da li je dio linije vidljiv.linije vidljiv.

Page 9: Računarska grafika

IIsijecanje linijesijecanje linije

prozor isijecanja

Page 10: Računarska grafika

Isijecanje linijeIsijecanje linije

Za netrivijalne slučajeve razvijeni su Za netrivijalne slučajeve razvijeni su algoritmi za isijecanje linije:algoritmi za isijecanje linije:AlgoritAlgoritaam Cohen-Sutherlandm Cohen-SutherlandAlgoritam Liang-Barsky Algoritam Liang-Barsky Algoritam Nicholl-Lee-Nicholl Algoritam Nicholl-Lee-Nicholl

Page 11: Računarska grafika

AlgoritAlgoritaam Cohen-Sutherlandm Cohen-Sutherland

1.1. Parovi krajnjih tačaka se prvo provjere da Parovi krajnjih tačaka se prvo provjere da li se trivijalno odbacuju ili prihvataju li se trivijalno odbacuju ili prihvataju pomoću binarnih regionapomoću binarnih regiona

2.2. Ako se tako ne može utvrditi vidljivost Ako se tako ne može utvrditi vidljivost linije, linija se dijeli na dva segmenta po linije, linija se dijeli na dva segmenta po ivici okvira ivici okvira

3.3. Iterativno se testiraju segmenti dok se ne Iterativno se testiraju segmenti dok se ne dođe do segmenta koji je cijeli vidljiv ili se dođe do segmenta koji je cijeli vidljiv ili se trivijalno odbacujetrivijalno odbacuje. .

Page 12: Računarska grafika

AlgoritAlgoritaam Cohen-Sutherlandm Cohen-Sutherland

Binarni Binarni regioniregioni

AABBCCDD

goregore

doledole

desnodesno

lijevolijevoprozor isijecanja

Page 13: Računarska grafika

AlgoritAlgoritaam Cohen-Sutherlandm Cohen-Sutherland

Bit 1: Bit 1: iznad gornjeg rubaiznad gornjeg rubaY > Ymax Y > Ymax

Bit 2: Bit 2: ispod donjeg rubaispod donjeg rubaY < Ymin Y < Ymin

Bit 3: Bit 3: desno od desnog rubadesno od desnog rubaX > Xmax X > Xmax

Bit 4: Bit 4: lijevo od lijevog rubalijevo od lijevog rubaX < Xmin X < Xmin

Page 14: Računarska grafika

AlgoritAlgoritaam Cohen-Sutherlandm Cohen-Sutherland

Trivijalna rješenja se dobiju logičkim Trivijalna rješenja se dobiju logičkim operacijama sa bitovima koji predstavljaju operacijama sa bitovima koji predstavljaju regione.regione.

Ako su obje krajnje tačke vidljive (Ako su obje krajnje tačke vidljive (OR OR krajnjih tačakakrajnjih tačaka == 0 == 0000000): trivi): trivijjalalno vidljivono vidljivo..

Ako su obje krajnje tačke u istom dijelu, Ako su obje krajnje tačke u istom dijelu, koji je izvan okvira (ANDkoji je izvan okvira (AND krajnjih tačakakrajnjih tačaka !!= 0= 0000000): trivi): trivijjalalno nevidljivono nevidljivo..

Page 15: Računarska grafika

ZadatakZadatak

Izvršiti klasifikaciju linija koristeći AND Izvršiti klasifikaciju linija koristeći AND (nevidljivo) i OR (vidljivo). (nevidljivo) i OR (vidljivo). 0: 0 i 0; 0 i 1; 1 i 0; 0 ili 00: 0 i 0; 0 i 1; 1 i 0; 0 ili 0

Page 16: Računarska grafika

ZadatakZadatak vidljivo: "ili" mora biti 0000 vidljivo: "ili" mora biti 0000 nevidljivo: "i" nije 0000nevidljivo: "i" nije 0000

1000 ili 1000 = 1000 - ?1000 ili 1000 = 1000 - ? 1000 i 1000 = 1000 – nevidljivo1000 i 1000 = 1000 – nevidljivo

0000 ili 0000 = 0000 – vidljivo0000 ili 0000 = 0000 – vidljivo 0000 i 0000 = 0000 - ?0000 i 0000 = 0000 - ?

0010 ili 0000 = 0010 - ?0010 ili 0000 = 0010 - ? 0010 i 0000 = 0000 - ?0010 i 0000 = 0000 - ?

Page 17: Računarska grafika

AlgoritAlgoritaam Cohen-Sutherlandm Cohen-Sutherland

Ako su obje krajnje tačke u različitim regionima, Ako su obje krajnje tačke u različitim regionima, algoritam traži jednu od tačaka koja je izvan algoritam traži jednu od tačaka koja je izvan okvira.okvira.

Zatim se izračunava tačka presjeka te vanjske Zatim se izračunava tačka presjeka te vanjske tačke i pravca koji prolazi kroz ivicu okvira tačke i pravca koji prolazi kroz ivicu okvira (parametarskom jednačinom tog pravca).(parametarskom jednačinom tog pravca).

Tako izračunata tačka presjeka se uzima kao Tako izračunata tačka presjeka se uzima kao nova krajnja tačka.nova krajnja tačka.

Algoritam se ponavlja dok se ne dođe do Algoritam se ponavlja dok se ne dođe do trivijalnog rješenjatrivijalnog rješenja. .

Page 18: Računarska grafika

AlgoritAlgoritaam Cohen-Sutherlandm Cohen-Sutherland

Primjeri implementacije:Primjeri implementacije: http://alumni.media.mit.edu/~yanhao/6.83http://alumni.media.mit.edu/~yanhao/6.83

7/assignment2/CohenSutherland.html7/assignment2/CohenSutherland.html

http://www.cs.princeton.edu/~min/cs426/jhttp://www.cs.princeton.edu/~min/cs426/jar/clip.htmlar/clip.html

Primjer C++ koda:Primjer C++ koda: http://student.kuleuven.be/~m0216922/Chttp://student.kuleuven.be/~m0216922/C

G/lineclipping.htmlG/lineclipping.html

Page 19: Računarska grafika

AlgoritAlgoritaam Cohen-Sutherlandm Cohen-Sutherland

Koji su kodovi Koji su kodovi regiona za krajnje regiona za krajnje tačke ovih linija:tačke ovih linija:

10011001 10001000 10101010

00010001 00000000 00100010

01010101 01000100 01100110

Page 20: Računarska grafika

Algoritam Liang-BarskyAlgoritam Liang-Barsky

AlgoritamAlgoritam Liang-Barsky Liang-Barsky koristi koristi parametarsku jednačinu linije i parametarsku jednačinu linije i nejednakosti koje opisuju granice okvira nejednakosti koje opisuju granice okvira isijecanja da bi se odredili presjeci između isijecanja da bi se odredili presjeci između linije i okvira isijecanja.linije i okvira isijecanja.

Pomoću tih presjeka se može znati koji dio Pomoću tih presjeka se može znati koji dio linije je vidljivlinije je vidljiv

Algoritam je efikasniji od algoritma Algoritam je efikasniji od algoritma Cohen-Cohen-Sutherland. Sutherland.

Page 21: Računarska grafika

Algoritam Liang-BarskyAlgoritam Liang-Barsky

1.1. PredstavitiPredstaviti segmente segmente linlinijije e uu parametparametaarrskojskoj form formii

2.2. Izvesti jednačine za testiranje da li je Izvesti jednačine za testiranje da li je tačka unutar prozoratačka unutar prozora

3.3. Izračunati nove vrijednosti Izračunati nove vrijednosti parametparametaarraa za za vidljivi dio segmenta, ako takav postojividljivi dio segmenta, ako takav postoji

4.4. Prikazati vidljivi dio segmenta linijePrikazati vidljivi dio segmenta linije

Page 22: Računarska grafika

Algoritam Liang-BarskyAlgoritam Liang-Barsky

PrikazPrikaz segmenta linije u parametarskom segmenta linije u parametarskom oblikuobliku::x = x1 + (x2x = x1 + (x2 -- x1)x1) ** m = x1 + dxm = x1 + dx ** m m

0.0 < m < 1.0 0.0 < m < 1.0 y = y1 + (y2 - y1) * m = y1 + dy * my = y1 + (y2 - y1) * m = y1 + dy * m

Kad jeKad je m = 0.0 => x1, y1 m = 0.0 => x1, y1Kad jeKad je m = 1.0 => x2, y2 m = 1.0 => x2, y2

Page 23: Računarska grafika

Algoritam Liang-BarskyAlgoritam Liang-Barsky

Određuju se tačke Određuju se tačke Pi * m <qi Pi * m <qi ii == 1, 2, 3, 4 1, 2, 3, 4

gdje jegdje je:: P1 = -dx P1 = -dx q1 = x1 - Xmin q1 = x1 - Xmin LLijevoijevo P2 = dx P2 = dx q2 = Xmax - x1 q2 = Xmax - x1 DesnoDesno P3 = -dy P3 = -dy q3 = y1 - Ymin q3 = y1 - Ymin DoleDole P4 = dy P4 = dy q4 = Ymax - y1 q4 = Ymax - y1 GoreGore

Page 24: Računarska grafika

Algoritam Liang-BarskyAlgoritam Liang-Barsky

Vidljivi dio linije počinje od najveće vrijednosti m:Vidljivi dio linije počinje od najveće vrijednosti m:m1 = MAX ( {qi / Pi | Pi < 0, im1 = MAX ( {qi / Pi | Pi < 0, i == 1, 2, 3, 4} U {0} ) 1, 2, 3, 4} U {0} )

ZaZa Pi > 0 Pi > 0 dobije se završna tačka vidljivog dijela:dobije se završna tačka vidljivog dijela:

m2 = MIN ( {qi / Pi | Pi > 0, i = 1, 2, 3, 4} U {1} ) m2 = MIN ( {qi / Pi | Pi > 0, i = 1, 2, 3, 4} U {1} ) Ako postoji vidljivi segment, on odgovara Ako postoji vidljivi segment, on odgovara

parametarskom intervaluparametarskom intervalum1 <= m <= m2 m1 <= m <= m2 ii m1 <= m2 m1 <= m2

Ako jeAko je m1 > m2 m1 > m2 linija se cijela ne vidi, a ako nije linija se cijela ne vidi, a ako nije treba izračunati krajnje tačketreba izračunati krajnje tačke od od m1, m2. m1, m2.

Page 25: Računarska grafika

Algoritam Nicholl-Lee-NichollAlgoritam Nicholl-Lee-Nicholl

Najsloženiji algoritamNajsloženiji algoritamNajbrži algoritamNajbrži algoritamRadi dobro samo uRadi dobro samo u 2D 2D, za razliku od , za razliku od

prethodno prikazanih algoritama koji se prethodno prikazanih algoritama koji se mogu primijeniti i na 3D linije mogu primijeniti i na 3D linije

Na osnovu položaja druge krajnje tačke, Na osnovu položaja druge krajnje tačke, dodaje nove regione dodaje nove regione

Page 26: Računarska grafika

Algoritam Nicholl-Lee-NichollAlgoritam Nicholl-Lee-Nicholl

Podjela regiona na osnovuPodjela regiona na osnovu početne tačke linije Ppočetne tačke linije P11

SlučajSlučaj 1: 1: PP11 unutraunutra

SlučajSlučaj 2: 2: PP1 1 na na

rubnom regionurubnom regionu SlučajSlučaj 3: 3: PP11 na na

ugaonom regionuugaonom regionu

G

De

Do

L

LG

LDe

LDo

LL

L

GGDe

LDo

L G

GDo

Page 27: Računarska grafika

Algoritam Nicholl-Lee-NichollAlgoritam Nicholl-Lee-Nicholl

Ako je tačka PAko je tačka P11 u jednom od regiona u jednom od regiona

označenih slovom L, onda se linija označenih slovom L, onda se linija odsijeca na lijevoj granici okvira isijecanja i odsijeca na lijevoj granici okvira isijecanja i čuva se segment linije od te presječne čuva se segment linije od te presječne tačke do druge krajnje tačke Ptačke do druge krajnje tačke P22..

Ako je krajnja tačka PAko je krajnja tačka P22 u regionu LG, onda u regionu LG, onda

se čuva segment od lijeve do gornje se čuva segment od lijeve do gornje granice okvira, itd.granice okvira, itd.