320 likes | 608 Views
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 grafika :
E N D
Računarska geometrijairačunarska grafika profesor: drMiloradBanjanin 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čunarskagrafika: –granična oblast računarstvai geometrijekoja se bavi vjernimprikazivanjem geometrijskihobjekatanaekranu Računarskageometrija: –deomatematikekoji se bavi algoritamskimrešavanjem geometrijskihproblema 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
Ideja U svakom koraku povećavamoxza jedani biramo između dve različiteykoordinate. Na 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 5 (xk+1, yk+1) 4 (xk, yk) 3 (xk+1, yk) 2 2 3 4 5
Brasenhajmov algoritam za crtanje duži yk+1 dgore y ddole yk xk+1 Zaxk+1obeležimo vertikalna rastojanja od matematičke prave do susednih piksela sadgoreiddole Koordinatayna matematičkoj pravoju tačkixk+1je:
Brasenhajmov algoritam za crtanje duži Sledi da je: i da je: Ove veličine možemo upotrebitipri odlučivanju koji je piksel bližimatematičkoj pravoj.
Brasenhajmov algoritam za crtanje duži Odluka će zavisiti od razlikeizmeđu pozicije dva susedna piksela: Zamenimo li msa∆y/∆xgdjesu ∆xi∆yrastojanja između krajnjih tačaka, dobija se:
Brasenhajmov algoritam za crtanje duži Parametar odlukepkzak-tikorak iscrtavanja duži dat je sa: Znak parametra odluke pkjednak je znaku od ddole – dgore Pa ako jepk negativan broj, osvetliće se piksel ispod matematičke prave, a ako je pozitivan osvetliće se piksel iznad prave
Brasenhajmov algoritam za crtanje duži Uk+1 koraku parametar odluke jedat sa: Oduzimanjempkod ovoga dobijamo: Sva izračunavanja su celobrojna, što znatno ubrzava ovaj algoritam
Brasenhajmov algoritam za crtanje duži Pošto je, xk+1isto kao ixk+1 sledi da je: ayk+1 – ykje 0 ili 1 što zavisi od znaka uzpk Prvi parametar odluke p0izračunava se u tački (x0, y0) i dat je sa:
Brasenhajmov algoritam za crtanje duži • (za |m| < 1.0) • Ulaz zahteva krajnje tačke linije, a potom učitava levu krajnju tačku na poziciju(x0, y0) • Osvetljava tačku(x0, y0) • Računa konstanteΔx, Δy, 2Δy, i (2Δy - 2Δx) i početnu vrednostza parametar odluke: • Za svakoxkduž linije, počevši odk = 0, se ispituje: • Ako jepk < 0, osvjetljuje se tačka(xk+1, yk)i:
Brasenhajmov algoritam za crtanje duži Upozorenje! Ovajalgoritamje 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: • Ponavljanje koraka 4, (Δx – 1) puta
Brasenhajmov algoritam srednje-tačke kružnice Slično kao za linije, postoji i rekurzivni algoritam za crtanje kružnice – algoritam srednje-tačkekružnice U ovom algoritmuse upotrebljavaosmostrana 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 ialgoritma za crtanje duži
Brasenhajmov algoritam srednje-tačke kružnice (xk+1, yk) (xk, yk) (xk+1, yk-1) Osvetljena je tačka (xk, yk) Sledeća se osvetljuje jedna od tačaka (xk+1, yk) ;(xk+1, yk-1). Želimo da izaberemotačku koja je bližastvarnojkružnici. Koja je ta tačka ?
Brasenhajmov algoritam srednje-tačke kružnice Predstavimo jednačinu kružnice na sledeći način: Dobija se da je: Izračunavši funkcijuza “srednju tačku”, koja se nalazi između piksela koji su kandidati za osvijetljavanje, omogućuje nam da donesemo odluku
Brasenhajmov algoritam srednje-tačke kružnice 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žnicepa je piksel saykbliži kružnici U suprotnom je bliža tačka sayk-1
Brasenhajmov algoritam srednje-tačke kružnice Izvedimo rekurzivnu formulu Imamo da je: ili: gdjeyk+1menjamo saykili sayk-1u zavisnosti od znaka pk
Brasenhajmov algoritam srednje-tačke kružnice Prvi parametar odluke je zadat sa: Pa ako jepk < 0 onda je sledeći parametar odluke: A ako je pk > 0 onda je:
Brasenhajmov algoritam srednje-tačke kružnice • Uzima se radijusri 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 odk = 0,za svakoxk, ispituje se: Ako jepk < 0, sledeća tačka koja se osvetljuje je (xk+1, yk) i:
Brasenhajmov algoritam srednje-tačke kružnice U suprotnom osvetljuje se tačka(xk+1, yk-1)i: • Određuju se tačke simetrije za ostatak kružnice • Pomeraju se izračunati pikseli(x, y)oko centrakružnice u tački(xc, yc)i osvetljuju se sledeći pikseli: • Ponavljaju se koraci od 3 do 5 sve dok jex >= y
Popunjavanje poligona bojom Kako se boje poligoni? Upotrebom rekurzivnog algoritmapoznatog kaoscan-line algoritam
Popunjavanje poligona bojom 10 Scan Line 8 6 4 2 0 2 4 6 8 10 12 14 16
Popunjavanje poligona bojom Osnovni koraci scan-line algoritmasu: • Pronalazakpresečnih tačaka scan linije sasvimivicama poligona • Sortiranjepresečnih tačaka po x koordinati • Osvetljavanje svih pikselaizmeđu parovapresečnih tačaka koje leže unutar poligona
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
Aliasing Gustina matrice piksela nije dovoljna za prikaz sitnih detalja Teksture gube svoje vizuelne karakteristike
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
Anti-aliasing Prefiltering –prikaz slova –tehnika je nezavisna od izabranog fonta
Anti-aliasing Postfiltering (supersampling) –slika se renderujenanputavećojrezolucijinegoštoćebitiprikazivana –boja konačnog piksela se računa kao prosek boja pod-piksela od kojih se on sastoji Primjer •zasliku 512x512 iscrtava se slikasa 3 putagušćommatricom 1536x1536 •bojapiksela se računakaoprosekbojadevet pod-pikselaodkojih se sastoji •nijesvaki pod-pikseljednakoznačajan –u račun se uvodetežinskikoeficijenti
HVALA NA PAŽNJI Ivan Milanović
Osmostrana simetrija (-x, y) (x, y) (-y, x) (y, x) (-y, -x) (y, -x) (-x, -y) (x, -y) Osobina koja omogućuje efikasno crtanje kružnice