Upload
khanh
View
31
Download
2
Embed Size (px)
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
Citation preview
RačunarskaRačunarskagrafikagrafika
predavanjapredavanjav.as.mr. Samir Lemešv.as.mr. Samir Lemeš[email protected]@mf.unze.ba
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
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
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
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
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..
Isijecanje tačkeIsijecanje tačke
prozor isijecanja
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.
IIsijecanje linijesijecanje linije
prozor isijecanja
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
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. .
AlgoritAlgoritaam Cohen-Sutherlandm Cohen-Sutherland
Binarni Binarni regioniregioni
AABBCCDD
goregore
doledole
desnodesno
lijevolijevoprozor isijecanja
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
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..
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
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 - ?
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. .
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
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
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.
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
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
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
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.
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
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
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.