Računarska geometrija i računarska grafika
description
Transcript of Računarska geometrija i računarska grafika
profesor:dr Milorad Banjanin
student:Ivan Milanovic
Sadržaj
Definicije Brasenhajmov algoritam za crtanje duži Brasenhajmov algoritam za crtanje kružnice Popunjavanje poligona bojom Aliasing i anti-aliasing
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 vjernim prikazivanjem geometrijskih objekata na ekranu
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
•Izračunava piksele koje treba “osvetliti”odnosno uključiti
•Inkrementalni algoritam
–izračunava se piksel po piksel
5of39
Ideja
U svakom koraku povećavamo x za jedan i biramo između dve različite y koordinate.
2 3 4 5
2
4
3
5Na primer, posle pozicije (2, 3) treba da izaberemo između (3, 3) i (3, 4)
Želimo odabrati tačku koja je bliža originalnoj liniji
(xk, yk)
(xk+1, yk)
(xk+1, yk+1)
6of39
Koordinata y na matematičkoj pravoj u tački xk+1 je:
Brasenhajmov algoritam za crtanje duži
Za xk+1 obeležimo
vertikalna rastojanja
od matematičke prave do susednih piksela sa dgore i ddole
bxmy k )1(
y
yk
yk+1
xk+1
ddole
dgore
7of39
Sledi da je:
i da je:
Ove veličine možemo upotrebiti pri odlučivanju koji je piksel bliži matematičkoj pravoj.
kdole yyd
kk ybxm )1(
yyd kgore )1(
bxmy kk )1(1
Brasenhajmov algoritam za crtanje duži
8of39
Odluka će zavisiti od razlike između pozicije dva susedna piksela:
Zamenimo li m sa ∆y/∆x gdje su ∆x i ∆y rastojanja između krajnjih tačaka, dobija se:
122)1(2 byxmdd kkgoredole
)122)1(2()(
byxx
yxddx kkgoredole
)12(222 bxyyxxy kk
cyxxy kk 22
Brasenhajmov algoritam za crtanje duži
9of39
Parametar odluke pk za k-ti korak
iscrtavanja duži dat je sa:
Znak parametra odluke pk jednak je znaku
od ddole – dgore
Pa ako je pk negativan broj, osvetliće se
piksel ispod matematičke prave, a ako je pozitivan osvetliće se piksel iznad prave
cyxxy
ddxp
kk
goredolek
22
)(
Brasenhajmov algoritam za crtanje duži
10of39
U k+1 koraku parametar odluke je dat sa:
Oduzimanjem pk od ovoga dobijamo:
cyxxyp kkk 111 22
)(2)(2 111 kkkkkk yyxxxypp
Brasenhajmov algoritam za crtanje duži
Sva izračunavanja su celobrojna, što znatno ubrzava ovaj algoritam
11of39
Pošto je, xk+1 isto kao i xk+1 sledi da je:
a yk+1 – yk je 0 ili 1 što zavisi od znaka uz pk
Prvi parametar odluke p0 izračunava se u tački (x0, y0) i dat je sa:
)(22 11 kkkk yyxypp
xyp 20
Brasenhajmov algoritam za crtanje duži
12of39
(za |m| < 1.0)
1. Ulaz zahteva krajnje tačke linije, a potom učitava levu krajnju tačku na poziciju (x0, y0)
2. Osvetljava tačku (x0, y0)
3. Računa konstante Δx, Δy, 2Δy, i (2Δy - 2Δx) i početnu vrednost za parametar odluke:
4. Za svako xk duž linije, počevši od k = 0, se ispituje:
Ako je pk < 0, osvjetljuje se tačka (xk+1, yk) i:
xyp 20
ypp kk 21
Brasenhajmov algoritam za crtanje duži
13of39
Upozorenje! Ovaj algoritam je tačan samo ako je izvod prave manji od jedan (|m| < 1.0). Za druge pravce neophodno je prilagođavanje algoritma.
U suprotnom, osvetljuje se tačka (xk+1, yk+1) i:
5. Ponavljanje koraka 4, (Δx – 1) puta
xypp kk 221
Brasenhajmov algoritam za crtanje duži
14of39
Brasenhajmov algoritam srednje-tačke kružnice
Slično kao za linije, postoji i rekurzivni algoritam za crtanje kružnice – algoritam srednje-tačke kružnice
U ovom algoritmu se upotrebljava osmostrana simetrija,
tako da računamo samo tačke gornje desne osmine kruga, a zatim koristimo simetriju za dobijanje ostalih tačaka kružnice.
Jack Bresenham, izumitelj rekurzivnog algoritma srednje tačke kružnice i algoritma za crtanje duži
15of39
(xk+1, yk)
(xk+1, yk-1)
(xk, yk)
Osvetljena je tačka (xk, yk)
Sledeća se osvetljuje
jedna od tačaka
(xk+1, yk) ;(xk+1, yk-1).
Želimo da izaberemo tačku koja je bliža stvarnoj kružnici.
Koja je ta tačka ?
Brasenhajmov algoritam srednje-tačke kružnice
16of39
Predstavimo jednačinu kružnice na sledeći način:
Dobija se da je:
Izračunavši funkciju za “srednju tačku”, koja se nalazi između piksela koji su kandidati za osvijetljavanje, omogućuje nam da donesemo odluku
222),( ryxyxfkr
,0
,0
,0
),( yxfkr
kružniceunutar ),( je ako yx
kružnici na ),( je ako yx
kružniceizvan ),( je ako yx
Brasenhajmov algoritam srednje-tačke kružnice
17of39
Uzmimo da je osvetljena tačka (xk,yk) pa trebamo odabrati između
(xk+1,yk) i (xk+1,yk-1)Parametar odluke je tada:
Ako je pk < 0, srednja tačka je unutar kružnice pa je piksel sa yk bliži kružnici
U suprotnom je bliža tačka sa yk-1
222 )21()1(
)21,1(
ryx
yxfp
kk
kkkrk
Brasenhajmov algoritam srednje-tačke kružnice
18of39
Izvedimo rekurzivnu formuluImamo da je:
ili:
gdje yk+1 menjamo sa yk ili sa yk-1 u zavisnosti od znaka pk
22
12
111
21]1)1[(
21,1
ryx
yxfp
kk
kkkrk
1)()()1(2 122
11 kkkkkkk yyyyxpp
Brasenhajmov algoritam srednje-tačke kružnice
19of39
Prvi parametar odluke je zadat sa:
Pa ako je pk < 0 onda je sledeći parametar
odluke:
A ako je pk > 0 onda je:
r
rr
rfp kr
45
)21(1
)21,1(
22
0
12 11 kkk xpp
1212 11 kkkk yxpp
Brasenhajmov algoritam srednje-tačke kružnice
20of39
1. Uzima se radijus r i centar kružnice (xc, yc), i podešavaju
koordinate za prvu tačku kružnice:
2. Računa inicijalnu vrednost parametra odluke:
3. Počevši od k = 0, za svako xk, ispituje se:
Ako je pk < 0, sledeća tačka koja se osvetljuje je
(xk+1, yk) i:
),0(),( 00 ryx
rp 45
0
12 11 kkk xpp
Brasenhajmov algoritam srednje-tačke kružnice
21of39
U suprotnom osvetljuje se tačka (xk+1, yk-1) i:
4. Određuju se tačke simetrije za ostatak kružnice
5. Pomeraju se izračunati pikseli (x, y) oko centra kružnice u tački (xc, yc) i osvetljuju se sledeći pikseli:
6. Ponavljaju se koraci od 3 do 5 sve dok je x >= y
111 212 kkkk yxpp
cxxx cyyy
Brasenhajmov algoritam srednje-tačke kružnice
22of39
Popunjavanje poligona bojom
Kako se boje poligoni?
Upotrebom rekurzivnog algoritma poznatog kao scan-line algoritam
23of39
2
4
6
8
10 Scan Line
02 4 6 8 10 12 14 16
Popunjavanje poligona bojom
24of39
Osnovni koraci scan-line algoritma su:– Pronalazak presečnih tačaka scan linije sa
svim ivicama poligona– Sortiranje presečnih tačaka po x koordinati– Osvetljavanje svih piksela između parova
presečnih tačaka koje leže unutar poligona
Popunjavanje poligona bojom
25of39
Popunjavanje poligona bojom
26of39
Aliasing
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
27of39
Aliasing
Gustina matrice piksela nije dovoljna za prikaz sitnih detalja
Teksture gube svoje vizuelne karakteristike
28of39
Anti-aliasing
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 taj kvadrat prekriva
29of39
Anti-aliasing
Prefiltering–prikaz slova–tehnika je nezavisna od izabranog fonta
30of39
Anti-aliasing
Postfiltering (supersampling)–slika se renderuje na n puta većoj rezoluciji nego što će biti prikazivana–boja konačnog piksela se računa kao prosek boja pod-piksela od kojih se on sastoji
Primjer•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
HVALA NA PAŽNJI
Ivan Milanović
32of39
Osmostrana simetrija
Osobina koja omogućuje efikasno crtanje kružnice
(x, y)
(y, x)
(y, -x)
(x, -y)(-x, -y)
(-y, -x)
(-y, x)
(-x, y)
2
R