Escolar Documentos
Profissional Documentos
Cultura Documentos
RASTERIZACIJU
Odabrana poglavlja kompjuterskih nauka
Maja Mihojevi
5113/M
UVOD
Rasterizacija - postupak u kome se podaci vezani za objekat u vektorskom sistemu
pretvaraju u oblik pogodan za prikaz na ekranu, proces prevoenja grafkih primitiva iz
kontinualnog u diskretni oblik.
Rasterska mrea
NAIVNI ALGORITAM
OSNOVNI ALGORITAM
Parametarski oblik jednaine
kroz dvije take M1(x1, y1) i
M2(x2, y2)
x = x1+k(x2-x1)
y = y1+k(y2-y1)
pri emu je 0 k 1.
Mijenjamo koeficijenat k sa
nekim malim korakom i
uvrtavamo u prethodne dvjie
jednaine
Nema najbolje performanse
NAGIBNI ALGORITAM
y = mx + b
dy
y y
m-koeficijent smjera m= = 2 1
dx
x2x1
Izrauna se y = mx + b za x = x1,
x = x1+1, ... , x = x2
BRESENHAMOV ALGORITAM
Inkrementalni algoritam koji
koristi iskljuivo cjelobrojnu
aritmetiku
M polovina rastrojanja izmeu
dva piksela
Q presjek originalne linije i linije
x = xp + 1
U Bresenhamovoj formulaciji
raunamo rastojanje izmeu
gornjeg i donjeg i take Q
U formulaciji srednje take
posmatramo s koje strane linije
lei taka M
ALGORITAM
void SredtocLinija(int x0, int y0, int x1, int y0, int v) //Pretpostavlja se 0 k < 1, x0 <
x1
{
int dx = x1- x0;
int dy = y1- y0;
int d = 2* dy-dx;
/* Inicijalna vrijednost od d */
int deltaD = 2 *dy;
/* Korak za pomicanje do D */
int deltaGD = 2*(dy- dx); /* Korak za pomicanje do GD */
int x = x0;
int y = y0;
NacrtajPixel(x,y,v);
/* Poetni pixel */
while(x < x1){
if(d <= 0){
/* Izaberi D */
d+ = deltaD;
x + +;
} else{
/* Izaberi GD*/
d+ = deltaGD;
x + +;
y + +;
}
NacrtajPixel(x,y,v);
/* Izabrani piksel najblii liniji */
}
}
PRIMJER
elimo aproksimirati liniju
zadanu krajnjim takama (5,8)
(9,11).
dx = 4, dy = 3,deltaD = 6,
deltaGD = -2
x =5, y = 8, d = 2 pa biramo GD
x = 6, y = 9, d = 0 biramo D
x = 7, y = 9, d = 6 biramo GD
x =8, y = 10, d = 4 biramo GD
x =8, y = 10, kraj
RASTERIZACIJA KRUNICE
Implicitna jednaina krunice sa sreditem u ishoditu data je sa:
x2 + y2 = R2
eksplicitne jednadbe krunice
y = 2 2
Moemo crtati po etvrtinu krunice za 0 x R i y >0 i onda koristiti
simetriju
Neefikasno
Moemo takoer koristiti parametarski oblik (R cos , R sin ) za 0
/2
Neefikasno radi trigonometrijskih funkcija.
Osmerostruka simetrija
void TackeKruznice(int x,int y,int v)
{
NacrtajPixel(x,y,v);
NacrtajPixel(y,x,v);
NacrtajPixel(y,-x,v);
NacrtajPixel(x,-y,v);
NacrtajPixel(-x,-y,v);
NacrtajPixel(-y,-x,v);
NacrtajPixel(-y,x,v);
NacrtajPixel(-x,y,v);
}
OBREZIVANJE (CLIPPING)
OBREZIVANJE LINIJA
Analitiki
Imamo vie sluajeva :
1. linija lei unutar pravougaonika -prikazuje se u potpunosti
2. linija sijee bar jedan rub pravougaonika-prikazuje se obrezana
linija
3. linija lei na samoj granici prikazuje se
4. linija lei izvan pravougaonika ne prikazuje se
Taka (x,y) lei unutar pravougaonika ako vrijedi:
xmin x xmax i ymin y ymax
COHEN-SUTHERLANDOV ALGORITAM
EFEKAT NAZUBLJIVANJA
Prikaz slike na raunaru zahtjeva diskretizaciju
Javlja se neeljeni efekat alias koji se ogleda u nazubljenim linijama
Koristei razliite nivoe osvijetljenja oko ivinih linija nekog oblika koji
se predstavlja, u oku se stvara iluzija glatkih linija
Prefiltering
Piksel se tretira kao 2D objekat
Moemo iskoristiti udaljenost d u Bresenhamovom algoritmu
Postfiltering (supersampling)
Slika se renderuje na n puta veoj rezoluciji nego to e biti prikazana
Boja konanog piksela se rauna kao prosjek boja pod-piksela od kojih
se on sastoji
Teinski koeficijenti
HVALA NA PANJI !