računarska grafika
DESCRIPTION
opisTRANSCRIPT
Računarska geometrija i računarska grafika• Računarska geometrija:
– deo matematike koji se bavi algoritamskim rešavanjem geometrijskih problema
• Računarska grafika:– granična oblast računarstva i geometrije koja se bavi vernim prikazivanjem
geometrijskih objekata na ekranu
Kontinualni i diskretni prostori• 2D prostor u kome se modeliraju matematički objekti je kontinualan
– duži, kružnice ili krive nemaju “debljinu”
• Ekran (ili drugi rasterski izlazni uređaj) je diskretan– sastavljen od konačnog skupa tačaka (piksela)– tačke mogu biti u dva stanja (monohromatski) ili većeg broja stanja iz
konačnog skupa (kolor)
• Kako verno predstaviti geometrijske objekte na ekranu?
Bresenhamov algoritam za crtanje duži 1/6
• Izračunava piksele koje treba “osvetliti” odnosno uključiti• Inkrementalni algoritam
– izračunava se piksel po piksel
Bresenhamov algoritam za crtanje duži 2/6
• Pretpostavimo da je osvetljena tačka P(x,y)• Koju sledeću tačku treba osvetliti: Q1 ili Q2?
Q2(x+1,y+1)
M
P(x,y) Q1(x+1,y)
Bresenhamov algoritam za crtanje duži 3/6
• Tačka M se nalazi na polovini duži Q1Q2
• Ako duž prolazi iznad M, osvetlićemo Q2
• U drugom slučaju osvetlićemo Q1
Q2(x+1,y+1)
M
P(x,y) Q1(x+1,y)
Bresenhamov algoritam za crtanje duži 4/6
• Prikazani algoritam radi ispravno samo ako duž ima nagib od 0° do 45°
• Preostali slučajevi:– 45° - 90°– -45° - 0°– -90° - -45°
0° - 45°
Zona 1
Zona 2
Zona 3
Zona 4
Bresenhamov algoritam za crtanje duži 5/6
• Za tekuću tačku P(x,y) naredna tačka se bira na sledeći način:– Zona 1:
• Q1(x+1,y) ili Q2(x+1,y+1)
– Zona 2:• Q1(x,y+1) ili Q2(x+1,y+1)
– Zona 3:• Q1(x-1,y) ili Q2(x-1, y-1)
– Zona 4:• Q1(x,y-1) ili Q2(x-1,y-1)
Bresenhamov algoritam za crtanje duži 6/6
• Primer
Linije različite debljine• Prekrivanje centara piksela paralelogramom• Širina paralelograma određena je debljinom linije• Oni pikseli čiji centri su unutar paralelograma su osvetljeni
Isecanje vidljivog dela duži (clipping)• u slučaju da se duž prostire izvan vidljivog dela ravni potrebno je pre
crtanja ukloniti delove koji se neće videti
(xmax, ymax)
(x’0, y’0)
(x’1, y’1)
(x1, y1)
(xmin, ymin)
(x0, y0)
Bresenhamov algoritam za crtanje kružnice 1/4
• Simetrija kružnice– Ako je osvetljen piksel P(x,y) tada su osvetljeni i sledeći pikseli:
• (-x,y)• (-x,-y)• (x,-y)• (y,x)• (y,-x)• (-y,x)• (-y,-x)
(x,y)
(y,x)
(-y,-x)
(-x,-y)
(-y,x)
(-x,y)
(y,-x)
(x,-y)
Bresenhamov algoritam za crtanje kružnice 2/4
• Izračunavanje piksela koji se osvetljavaju radi se samo za interval[45°, 90°] – osmina kruga
• Na osnovu izračunatog piksela osvetljava se i preostalih sedam simetričnih piksela
Bresenhamov algoritam za crtanje kružnice 3/4
• Pretpostavimo da je osvetljena tačka P(x,y)• Koju sledeću tačku treba osvetliti: Q1 ili Q2?
P(x,y) Q1(x+1,y)
Q2(x+1,y-1)
M
Bresenhamov algoritam za crtanje kružnice 4/4
• Tačka M se nalazi na polovini duži Q1Q2
• Ako je tačka M unutar kružnice, osvetlićemo Q1
• U drugom slučaju osvetlićemo Q2
P(x,y) Q1(x+1,y)
Q2(x+1,y-1)
M
Crtanje splajnova 1/3
• Hornerov metodZa splajn dat parametarskim polinomima:x(t) = axt3 + bxt2 +cxt +dx
y(t) = ayt3 + byt2 + cyt +dy
prethodne izraze zapišemo u drugačijem obliku:x(t) = [(axt + bx)t + cx]t + dx
y(t) = [(ayt + by)t + cy]t + dy
– Za izračunavanje jedne koordinate jedne tačke potrebna su tri množenja i tri sabiranja
Crtanje splajnova 2/3
• Bézierov metod– osvetlimo središnju tačku splajna– određivanje središnje tačke:
• tačka X je na sredini duži AB• tačka Y je na sredini duži BC• tačka Z je na sredini duži CD• tačka P je na sredini duži XY• tačka Q je na sredini duži YZ• tačka M – središnja tačka splajna – je na sredini duži PQ
B C
MX
Y
Z
P Q
A D
Crtanje splajnova 3/3
• Bézierov metod– sada podelimo splajn na dva segmenta oko središnje tačke– dobijemo splajnove određene tačkama AXPM i MQZD– za njih ponovimo postupak– postupak ponavljamo sve dok poligon koji obuhvata splajn ne bude dovoljno
“tanak”, odnosno blizak duži
B C
MX
Y
Z
P Q
A D
Popunjavanje figure bojom 1/3
• Za dati piksel popuniti površinu figure koja ga sadrži• Različiti algoritmi
– Algoritam poplave– Popunjavanje pomoću semenke (seed)
Popunjavanje figure bojom 2/3
• Flood fill– obojiti izabrani piksel– za izabrani piksel proveriti sva četiri suseda (sever, jug, istok, zapad)– ako neki od njih nije obojen ponoviti postupak za njega
Popunjavanje figure bojom 3/3
• Popunjavanje pomoću semenke– popuni se horizontalna linija koja sadrži izabrani piksel– traže se nove semenke u liniji iznad tekuće– traže se nove semenke u liniji ispod tekuće– za nove semenke se ponovi postupak
5 5 65
2 3 2 3 2 32 3
1
4
1 114 44
korak 1 korak 2 korak 3 korak 4
5 6 5 65 6 5 6
2 3 2 32 3 2 3
14
14
7 8
1 144
7 87 8
9 109 10
korak 5 korak 6 korak 7 korak 8
Aliasing 1/3
• Aliasing je potencijalni problem kad god se analogni signal konvertuje u digitalni
• U prikazu 2D grafike tipičan problem je pojava nazubljenih ivica kosih linija
Originalna kriva koja se projektuje na matricu piksela Oblik dobijen iscrtavanjem
Aliasing 2/3
• Gubitak detalja– gustina matrice piksela nije dovoljna za prikaz sitnih detalja
Aliasing 3/3
• Teksture koje gube svoje vizuelne karakteristike
Antialiasing 1/4
• Metode za korekciju efekta aliasinga• Dve klase metoda:
– prefiltering– postfiltering (supersampling)
Antialiasing 2/4
• Prefiltering– piksel se tretira kao 2D objekat koji ima dimenzije (kvadrat)– njegova boja se izračunava na osnovu boja koje su prisutne u crtežu na
površini koju on prekriva
Antialiasing 3/4
• Prefiltering– prikaz slova– tehnika je nezavisna od izabranog fonta
Antialiasing 4/4
• Postfiltering (supersampling)– slika se renderuje na n puta većoj rezoluciji nego što će biti prikazana– boja konačnog piksela se računa kao prosek boja pod-piksela od kojih se on
sastoji
– Primer• za sliku 512x512 iscrtava se slika sa 3 puta gušćom matricom 1536x1536• boja piksela se računa kao prosek boja devet pod-piksela od kojih se sastoji• nije svaki pod-piksel jednako značajan – u račun se uvode težinski koeficijenti
1/16 1/8 1/16
1/8 1/4 1/8
1/16 1/8 1/16