You are on page 1of 69

2.

Uvod u raunarsku grafiku


Definicija:
Raunarska grafika je skup tehnika i sredstava ijom primenom se olakava obrada grafikih
podataka.
Raunarska grafika je grana nauke koja se bavi sintezom raunarskih slika stvarnih ili zamiljenih
objekata.
Raunarska grafika se bavi svim aspektima kreiranja slike pomou raunara:
- Hardverom
- Softverom
- Aplikacijama
Prednosti:
Grafika nudi jedan od najprirodnijih naina komuniciranja sa raunarom.
Sposobnost oveka da prepozna 2D i 3D oblik omoguava efikasno prihvatanje slikovnih podataka.
Drevna kineska poslovica "jedna slika vredi koliko deset hiljada rei"
Raunarska grafika i srodne oblasti:

Oblasti primene:
- Korisniki interfejs
- Vizuelizacija podataka (naunih, medicinskih, geografskih...)
- Elektronsko izdavatvo
- Projektovanje i crtanje (CAD, CAM) (Computer Added Design)
- Zabava( Igre, Film)
Klasifikacija aplikacija:
Kriterijumi:
- dimenzionalnost (2D, 3D)
- tip interakcije
Offline crtanje (crta se iz baze podataka).
Interaktivno crtanje (korisnik utie na parametre).
Real-time animacija.
Interaktivno projektovanje.
- uloga slike u aplikaciji
Slika je krajnji cilj.
Slika je samo deo jedne faze projektovanja.
- veza izmeu objekta i njegovih slika
Formira se samo jedna slika.
Formira se vie povezanih slika.
Radi se sa hijerarhijskom strukturom objekata.
Modeliranje aplikacije i definicija slike:

Model je konceptualni pojam tj. ideja o nekom predmetu, a slika je samo jedan od naina da se taj
model otelotvori.
Alternativni nain bi bio da reima opiemo na model umesto da ga crtamo. Slika je bolji nain!!!
Konceptualni model interaktivne raunarske grafike

Model aplikacije:
Obuhvata sve podatke, objekte i njihove meusobne relacije relevantne za prikaz, interakciju i
negrafike postprocesirajue module.
- Ovo je najvii i najoptiji (najapstraktniji) nivo.
- Model podataka moe biti rudimentaran (niz taaka u datoteci) ili kompleksan (mrena linkovana
struktura, ili relaciona baza podataka).
Aplikacioni program:
- Obezbeuje implementaciju modela aplikacije. On formira i aurira aplikacionu bazu podataka i to na
osnovu podataka dobijenih od korisnika. Takoe, nakon kreiranja ovaj program uzima iz memorije
podatke, kada doe vreme za njihovo slanje u narednu komponentu modela.
- Aplikaciona baza podataka, obezbeuje vane informacije, kao to su geometrijski i vizuelni opis
objekta, znanje o objektu, njegovim elemenitima i njihovim meusobnim relacijama.
Grafiki sistem:
Predstavlja sponu izmeu grafike opreme i aplikativnog programa.
- Grafiki sistem je bilo koji skup hardverskih i softverskih entiteta, takvih da programerima
pojednostavljuju upotrebu grafikih ulaza i izlaza.
- Grafiki sistem je skup hardverskih i softverskih elemenata i njihovih veza, projektovan tako da
zadovolji potrebe odreene aplikacije za grafikom komunikacijom.
Funkcije grafikog sistema:
- Grafiki sistem mora obezbediti rad sa podacima, njihovo uvanje i prikazivanje u obliku teksta i slike.
- Takoe mora omoguiti korisniku da na prihvatljiv nain prepozna i interpretira grafiki prikazane
podatke i da ih po potrebi menja i utie na njihovo pojavljivanje.
- Grafiki sistem se obino sastoji od skupa procedura koje odgovaraju razliitim primitivama, atributima
i ostalim elementima. Najee su sve te procedure organizovane u grafike biblioteke, takozvane
grafike API-je.
3. Grafiki API
Definicija:
Grafiki API (Application Programming Interface) je skup grafikih funkcija organizovanih u jednu ili
vie grafikih biblioteka koje predstavljaju interfejs izmeu aplikacionog programa i grafikog sistema.
- Programer vidi samo GAPI dok su detalji o hardverskoj i softverskoj implementaciji sadrani u
grafikoj biblioteci

- Korienje GAPI-ja omoguava da se grafiki sistem posmatra kao crna kutija


2

Istorijski pregled:
- Prvi GAPI je nastao 1973 godine. IFIPS (International Federation of Information Processing System) je
formirao dve komisije koje su realizovale GKS (Graphical Kernel System).
- Ovaj sistem je standardizovan najpre kao ISO a zatim kao ANSI standard (1980).
- Kasniji pokuaj da se proiri na 3D je bio neuspean.
- PHIGS (Programmers Hierarchycal Graphics System) ovaj standardni GAPI je nastao pod uticajem
CAD programera i korisnika.
- X Windows - sistem razvijen od DEC-a / MIT-a (prvi je imao client-server arhitekturu u radu sa
grafikom).
- PEX - jedan od neuspelih pokuaja da se spoji PHIGS i X Windows (preteak je za korienje).
-1982 godine Silicon Graphics (SGI) po prvi put implementira protonu obradu podataka (pipeline) kod
hardvera, to je predstavljalo revoluciju u oblasti razvoja grafikih radnih stanica. Za pristup hardveru je
koriena GL biblioteka. Ona je omoguila relativno jednostavno programiranje 3D interaktivnih
aplikacija.
- 1992 godine nastaje OpenGL kao GAPI koji je nezavisan od platforme. Ovo je bila revolucija u svetu
raunarske grafike.
- Evoluciju OpenGL-a kontrolie ARB (Architectural Review Board) grupa. Ova grupa je sastavljena od
vodeih kompanija u oblasti raunarstva i raunarske grafike: Microsoft, Silicon Graphics, NVidia, HP,
IBM...
- Trenutna verzija OpenGL-a je 1.4
Funkcije GAPI-ja:
1. Funkcije za primitive - Grafike primitive su objekti najnieg nivoa. To su osnovni entiteti koje grafiki
sistem moe da prikae (taka, linija, poligon, piksel, tekst,...)
2. Funkcije za kontrolu atributa primitiva Primitive definiu ta e se nacrtati, a njihovi atributi kako e
se nacrtati (boja i debljina linije, tip linije,...).
3. Funkcije pogleda - omoguavaju formiranje 2D prikaza na osnovu 3D objekta (koji objekti iz realnog
3D sveta e biti ukljueni u 2D prikaz i na koji nain).
4. Funkcije za geometrijske transformacije - Omoguavaju 2D i 3D geometrijske transformacije nad
objektima (translacija, rotacija, skaliranje,...).
5. Funkcije za ulaz - Omoguavaju korisnicima da vre unos podataka u aplikaciju putem delova
grafikog sistema (tastatura, mi, tabla, skener,...).
6. Kontrolne funkcije - Omoguavaju komunikaciju sa operativnim sistemom pod kojim se grafika
aplikacija izvrava (inicijalizacija, kontrola prozora,...).
7. Ispitivake funkcije - Omoguavaju dobijanje informacija o karakteristikama pojedinih komponenata
grafikog sistema (broj boja koje monitor moe da prikae, rezolucija,...). Na ovaj nain programeri
dobijaju mogunost da piu takozvane device independent aplikacije koji ne zavise od grafikog
sistema na kome se izvravaju.
GAPI Standardi:
- GKS (ANSI X3.124)
- PHIGS
- Java 2D
- Java 3D
- GDI
- OpenGL
- DirectX
Windows GDI:
GDI (Graphics Device Interface) je 2D GAPI koji koristi Microsoft u svojim operativnim sistemima.
Princip rada:

Device Context:
-Device Context je apstraktni (virtuelni) ureaj. Kada se programira, pristupa se ovom virtuelnom
ureaju i na taj nain se ne vodi rauna direktno o hardveru (koji je tip, kakve su karakteristike,...). O
hardveru vode rauna drajveri (device drivers).
Enkapsulacija GDI funkcija u MFC klase:
- CDC Device Context
- CPen Olovka
- CBrush etka
- CBitmap Rasterska slika
- CPalette Paleta
- ...
OpenGL:
- OpenGL (Open Graphics Library) je organizovan u nekoliko biblioteka:
GL je jezgro OpenGL-a. Ona je osnovna biblioteka openGL-a. Ona sadri imena svih openGL
funkcija.
GLU (graphic utility library) je biblioteka koja obezbeuje potrebnu funkcionalnost OpenGL jezgra.
Ova biblioteka koristi samo GL funkcije i sadri kod za kreiranje objekata koji se esto koriste kao i
procedure koje se esto koriste.
GLUT (GL Utility Toolkit) je biblioteka koja obezbeuje minimum funkcionalnosti koja se oekuje od
modernih sistema zasnovanih na prozorima (otvaranje prozora, ulaz - mi, tastatura, meniji,...).
GLX (WGL, AGL). Slue za spregu sa operativnim sistemima. Korienjem ovih funkcija se gubi
potreba da OpenGL aplikacija poziva direktno funkcije operativnog sistema. GLX je sprega sa X
Windows-om, WGL sa Microsoft Windows-om, AGL sa Apple Mac O/S-om.
Organizacija OpenGL biblioteka:

Softverska organizacija OpenGL programa

OpenGL protona obrada:

4. Hardver raunarske grafike:


Grafiki hardver:

Ulazni ureaji:
- Analogni (Dojstik, Mi, Trackbal)
- Digitalni (Svetlosno pero, Ekrani osetljivi na dodir, Digitalne kamere, Skeneri)
- Svi ulazni ureaji se mogu svrstati u pet logikih tipova
(prema njihovoj ulozi u sistemu):
Lokator (pokazuje poziciju i orijentaciju) - Grafika tabla, mi, dojstik
Valuator (za unos jednog realnog broja) - Potenciometar
Tastatura (za unos znakovnog niza)
Pokaziva (za izbor elemenata slike) - Svetlosno pero
Dugme (za izbor neke akcije iz skupa moguih alternativa)
Izlazni ureaji:
- Vektorski ureaji
- Rasterski ureaji
Vektorski ureaji:
- Bafer slui da memorie listu komandi za iscrtavanje take ili linije sa zadatom poetnom i krajnjom
takom, karaktera ili znaka.
- Linije se mogu zadavati i u 2D i u 3D koordinatnom sistemu. Displej procesor interpretira te komande I
alje digitalne koordinate take generisanjem vektora koji se konvertuje u odgovarajui analogni signal.
Ovaj signal predstavlja napon koji je potreban da bi se osvetlile take na ekranu.
- Sutina je da zrak prati taku po taku specificiranim redosledom iz displej-programa, odnosno, mlaz
se kree u onom redosledu i smeru, kako mu to diktiraju komande iz bafera.
- Tehnika prikaza na vektorskim ureajima se naziva sluajnim skaniranjem (random-scan) jer je svaka
taka na ekranu adresibilna. Poto svetlosni izlaz fosfora opada u desetinama ili najvie stotinama
mikrosekundi, displej-kontroler mora kruiti kroz listu za prikaz da bi osveio fosfor barem 30 puta u
sekundi (30Hz).
- Bafer koji sadri listu za prikaz se esto naziva baferom za osveavanje (refresh buffer).
- Instrukcija JMP na kraju programa formira petlju da obezbedi ciklino osveavanje.
Rasterski ureaji:
- Rasterska grafika je bazirana na tehnologiji televizije (tehnika prikazivanja poznata kao raster-scan).
- Smatra se da je rasterska grafika doprinela razvoju raunarske grafike vie nego bilo koja druga
tehnologija.
- Rasterski prikazivai (raster display) smetaju primitive za prikaz u bafer za osveavanje. Primitive su
linije (prave i lukovi), karakteri i popunjene (ravnomerno ili teksturom) povrine. Primitive su razloene
na piksele - najmanje komponente od kojih su obrazovane.
- Kompletna slika na rasterskom prikazivau se formira iz rastera. Raster predstavlja niz horizontalnih
rasterskih linija od kojih je svaka red individualnih piksela. Raster se uva kao matrica piksela koja
reprezentuje celu povrinu ekrana.
- Cela slika se skenira sekvencijalno od strane video kontrolera i to linija po linija od vrha prema dnu i
zatim ponovo od vrha.
- Za svaki piksel, intenzitet mlaza se postavlja tako da reflektuje intenzitet piksela.
Rasterski displej CRT(Cathode Ray Tube):
- CRT je katodna cev poput one kod najobinijeg televizora
CRT princip rada:
- Elektronski top emituje mlaz elektrona.
- Tanak mlaz elektrona se postie sistemom za fokusiranje.
6

- Usmeravanje mlaza elektrona se postie pomou kalemova za skretanje prema odreenoj taki na
fosfornoj ploi. Poto su elektroni dosta ubrzani, oni udaraju u fosfor ogromnom brzinom, a fosfor svetli.
Poto intenzitet svetlosti fosfora opada sa vremenom taku je potrebno pogaati vie puta u sekundi,
da bi se izbegao efekat treperenja. Osveavanje cele slike je neophodno vriti vie puta u sekundi. Taj
broj odreuje period osveavanja slike (refresh rate). Uobiajeno je da ova frekvencija bude oko 60
ekrana (frejma) u sekundi.
- Kontrolni grid (mrea) u katodnoj cevi slui da odredi broj elektrona u mlazu. to je negativniji napon
kontrolnog grida, to je broj elektrona u mlazu manji. Na taj nain se kontrolie intenzitet osvetljenja.
- Ekran se sastoji od niza taaka koje predstavljaju najmanje fizike jedinice (dot-ovi) koje se mogu
kontrolisati. Njihova veliina ne mora biti jednaka veliini piksela. Jedan piksel je obino veliine
nekoliko dot-ova.
Kolor CRT:
Kako se formira slika?
- Linije imaju odreeni nagib (downhill) i formiraju cikcak popunu ekrana.
- Poto je mlaz
vrlo teko kontrolisati, na krajevima ekrana se
obino
ne
prikazuje slika tj. taj deo ostaje neiskorien. Taj
vremenski
period, koji bi inae bio potreban da se iscrtaju delovi ekrana na
ivicama
se
koristi za povratak mlaza na poetak nove linije, ili novog frejma. Ovaj
period se naziva
period zatamnjenja (blanking-time).
Oblasti na ekranu:

VFL Visina frejma


AL Broj aktivnih linija
TL Ukupan broj linija
HFL irina frejma
AP Broj aktivnih piksela
TP Ukupan broj piksela
- Ukupna oblast je celokupna oblast koja se moe kontrolisati.
- Aktivna oblast je oblast koja sadri validne video podatke (bez zamraenja i bez podataka za
sinhronizaciju).
- Frejm (okvir) je deo aktivne oblasti koja se iscrtava. esto se zove i region od interesa.
Signali:

TL Ukupna linija
BL Blanko linija
7

AL Aktivna linija
HB Horizontalni period zamraenja
HFP Prednja stepenica (front porch)
HBP Zadnja stepenica (back porch)
HS Sinhronizacioni impuls
Napomena: Isto vai i za vertikalne linije samo su oznake: VB,
VFP,VS, VBP
Naini iscrtavanja:
- Bez preplitanja (non-interlaced). Postoji samo jedan frejm i on se iscrtava u svakom frejm periodu.
- Sa preplitanjem (interlaced). Postoje dva frejma. U jednom su parne, a u drugom neparne linije. U
jednoj poluperiodi frejma se iscrtava jedan frejm, a u drugoj poluperiodi se iscrtava drugi frejm. Ovaj
metod daje dobre rezultate sa monitorima koji rade na niim frekvencijama.
Definicije:
- fh . horizontalna uestanost (broj iscrtanih horizontalnih linija u sekundi)
- fv - veritkalna uestanost ili refresh rate (broj iscrtanih ekrana u sekundi). Ona je gornji limit za periodu
osveavanja. Ova karakteristika se zove i frekvencija osveavanja.
- fp - uestanost taktnog signala za iscrtavanje piksela (dot clock). To je maksimalan broj taaka u
sekundi
koji moe biti iscrtan.
VB
.
Propusni opseg (video bandwith najvia frekvencija koju monitor
moe
da
izdri). Na primer, za rezoluciju 640*480 -> VB=25Mhz, za 800*600 ->
VB=36Mhz, za 1024*768 -> VB=65Mhz.
Bandwidth odslikava brzinu kojom elektronski top moe da se ukljui
ili iskljui.
- Ako je veliina scan linije n taaka (tj. Horizontalna rezolucija je n), onda za jednu liniju moda mora
da se elektronski top ukljui i iskljui po n/2 puta.
- Vei bandwidth obezbeuje da pikseli imaju otrije ivice i da ne budu (horizontalno) ,,razmazani.
- R . rezolucija. Jednaka je ukupnom broju piksela koji mogu biti prikazani na ekranu tj. aktivnoj oblasti.
R= AP * AL
- AR - Aspect ratio. To je odnos horizontale i vertikale, i
obino iznosi 4:3.
AR = AP/AL
Refresh rate:
- Poto je fp konstanta (odreuje je video adapter), iz formule se vidi da ukoliko elimo da poveamo
refresh rate (fv), onda moramo da smanjimo rezoluciju i obrnuto.
- Ukoliko je refresh rate previe mali dolazi do treperenja slike (treba ga drati iznad 60 Hz).
- VESA standart propisuje da refresh rate bude minimalno 72Hz.
- 120Hz je frekvencija fluorescentnih osvetljenja.
Druge tehnologije za prikaz:
- DVST (direct-view storage tube) ne zahteva veliku frekvenciju osveavanja (jer je slika reprezentovana
raspodelom naelektrisanja na unutranjoj povrini ekrana), ali je nepraktian jer prilikom izmene i
najmanjeg detalja na slici, kompletna slika (raspodela naelektrisanja) mora ponovo biti kreirana.
- LCD (liquid-crystal display). Oni su zasnovani na korienju dugakih molekula kristala, koji
zahvaljujui specifinom korienju elektriciteta i polarizacije svetlosti stvaraju osvetljene ili tamne
delove ekrana.
- TFT (Thin Film Transistor). Ovo je jedan od podtipova Active matrix panels ekrana. To su LCD ekrani
kod kojih je u svaki piksel udraen po jedan tranzistor (koji opisuje taj piksel), te kod njih nema
treperenja.

5. Osnovni rasterski grafiki algoritmi za crtanje 2D primitive


Grafika protona obrada (pipeline):

Rasterizacija (skaniranje scan conversion)


- Skaniranje je proces prevoenja kontinualnih opisa grafikih primitiva u diskretne opise (preko
piksela).
- Koordinate piksela moraju biti celi brojevi.
- GAPI imaju ugraene funkcije za skaniranje.
Skaniranje grafikih primitiva
- Linije
- Krunice
- Elipse
- Lukovi
Skaniranje linije - zahtevi
- Niz piksela treba da bude to blie idealnoj liniji
- Za linije koeficijenta izmeu -1 i 1, u svakoj koloni treba da bude oznaen tano jedan piksel. Za linije
van tog opsega, u svakoj vrsti treba da bude oznaen bar jedan piksel.
- Sve linije treba da budu iste osvetljenosti i sve take svake linije treba da budu iste osvetljenosti (ili da
tako izgledaju) bez obzira na njihov nagib i duinu.
- Crtanje treba da bude to je mogue bre.
Skaniranje linije algoritmi:
- Navni algoritam
- Nagibni algoritam
- Inkrementalni algoritam
- Bresenham-ov algoritam

Naivni algoritam:

Naivni algoritam - nedostaci


- Rezultat nije najbolji.
9

- Potrebno je dosta vremena za izraunavanje preseka piksela i matematike linije.


Nagibni algoritam:
- Svaka linija je matematiki definisana jednainom prave koja glasi:
y = m*x+b
- m koeficijent pravca (nagib)
Nagibni algoritam implementacija:

Nagibni algoritam nedostaci:


- Koristi se operacija mnoenja i izraunavanja sa realnim brojevima, to usporava algoritam.
- Razliita osvetljenost linije (zavisno od nagiba).

Inkrementalni algoritam DDA (digitalni diferencijalni analizator) :

10

Inkrementalni algoritam implementacija:


void LineDraw(int x0,int x1,int y0,int y1,COLORREF value)
{
int x;
double dy = y1 - y0;
double dx = x1 - x0;
double m = dy / dx;
double y = y0;
for (x = x0;x <= x1;x ++)
{
WritePixel(x,int(y+0.5),value);
y += m;
}
}
Bresenham-ov algoritam:
- 1965. godine J. Bresenham je analizirao problem generisanja prave linije na digitalnom ploteru. Tako
je razvio algoritam koji se koristi ak i danas. Njegova tehnika se zasniva na odluivanju da li, u sluaju
kada inkrementiramo vrednost koordinate X, treba inkrementirati vrednost koordinate Y ili ne.
- Pretpostavke za izvoenje su iste kao kod osnovnog
inkrementalnog algoritma:
- Nagib linije je u granicama 0<m<1;
- x0 < x1

Ukoliko transliramo liniju u koordinatni poetak (za T(-x0,-y0)), onda je:

11

Bresenham-ov algoritam - implementacija:


void BresenhamLine(int x0,int y0,int x1,int y1, COLORREF
value)
{
int dx,dy,x,y,incr1,incr2,xend,d;
dx = abs(x1 x0);
dy = abs(y1 y0);
d = 2*dy - dx;
incr1 = 2*dy;
incr2 = 2*(dy-dx);
if (x0 > x1){
x = x1;
y = y1;
xend = x0;
}
else {
x = x0;
y = y0;
xend = x1;
}
}
WritePixel(x,y,value);
while (x < xend) {
x = x + 1;
if (d < 0) d = d + incr1;
else{
y = y + 1;
d = d + incr2;
}
WritePixel(x,y,value);
}
}
12

Bresenhamov algoritam prednosti:


- Kompletna raunica se svodi na celobrojnu aritmetiku. Koriste se samo sabiranje, oduzimanje i
mnoenje sa 2, to ini ovaj algoritam najbrim do sada.
- Postoji i varijacija ovog algoritma Midpoint algoritam
Skaniranje kruga zahtevi:
- Slino kao za linije: Niz piksela treba da bude to blie idealnom krugu.
- Nacrtani krug treba da bude ,,neprekidan.
- Crtanje treba da bude to je mogue bre.
Skaniranje kruga algoritmi:
- Trigonometrijski algoritam
- Polinomni algoritam
- Bresenham-ov algoritam
Trigonometrijski (trivijalan) algoritam:

Pretpostavka je da se crta krunica sa centrom u koordinatnom poetku. Trivijalan algoritam radi na


osnovu parametarskih jednaina krunice, odnosno na osnovu trigonometrijskih funkcija.
x = R cos,
y = R sin,
za (0,2)
Trigonometrijski algoritam implementacija:
void TrigCircle(int r, COLORREF value)
{
float alfa;
for(alfa=0;alfa<6.28;alfa+=6.28/360)
{
x=int(r*cos(alfa)+0.5);
y=int(r*sin(alfa)+0.5);
WritePixel(x,y,value);
}
}
Trigonometrijski algoritam nedostaci:
- Sporost trigonometrijskih funkcija.
- Korak je direktno proporcionalan polupreniku krunice, tako da moemo doi do toga da se veliki
krugovi crtaju drastino
sporije i loije od malih.
Efikasniji trigonometrijski algoritam:
Treba uoiti da je krug visoko simetrina figura. Delimo ga na lukove koji pripadaju oktantima, pa za
sraunatu taku koja pripada luku u prvom oktantu jednostavno nalazimo simetrine take na lukovima
u ostalih sedam oktanata.

13

Efikasniji trigonometrijski algoritam implementacija:


void SimetricCircle(int r, COLORREF value)
{
float alfa;
for(alfa=0;alfa<((22.0/7.0)/4.0);alfa+=6.28/360)
{
x=int(r*cos(alfa)+0.5);
y=int(r*sin(alfa)+0.5);
WritePixel8(x, y, value);
}
}
void WritePixel8(int x, int y, COLORREF value)
{
WritePixel (x,y,value);
WritePixel (-x,y,value);
WritePixel (x,-y,value);
WritePixel (-x,-y,value);
WritePixel (y,x,value);
WritePixel (-y,x,value);
WritePixel (y,-x,value);
WritePixel (-y,-x,value);
}

Polinomni algoritam:

14

Polinomni algoritam implementacija:


void PolinCircle (int r, COLORREF value)
{
int x,y,xend;
xend = (int)(r/sqrt(2)+0.5);
for (x=0; x<=xend; x++)
{
y=(int)(sqrt(r*r-x*x)+ 0.5);
WritePixel8(x,y,value);
}
}
Polinomni algoritam nedostaci:
- Operacije sa realnim brojevima.
- Lo rezultat
Bresenham-ov algoritam:
- Posmatra se luk u prvom oktantu, koji poinje takom (R, 0) i napreduje u smeru nasuprot kretanja
kazaljke sata, do ugla 45.
- Bresenham-ov algoritam za crtanje krunice se svodi na odluivanje o izboru izmeu dve kandidattake (A i B) izmeu kojih prolazi kruna linija.

- Pretpostavimo da je krunica prola kroz taku P(x,y) i da treba odluiti da li e proi kroz A(x-1, y+1)
ili B(x, y+1).
- Uvodi se pojam kvadradtne greke (odstupanja u odnosu na geometrijski tanu krunicu) u taki K:

15

- Algebarski zbir greaka je: d=e(A) + e(B)


- A, B unutar kruga (teoretski): e(A)<0, e(B)<0 => d<0, bira se B
- A, B izvan kruga (teoretski): e(A)>0, e(B)>0 => d>0, bira se A
- A unutar, B izvan kruga: e(A)<0, e(B)>0
abs(e(A)) > abs(e(B)) => d<0, bira se B
abs(e(A)) < abs(e(B)) => d>0, bira se A
- Uoava se zakonitost:
d<0, bira se B
d>0, bira se A

Bresenhamov algoritam implementacija:


void BresenhamCircle(int r, COLORREF value)
{
int x,y,d;
x=r;y=0;
d= 3-2*r;
16

while(x > y){


WritePixel8(x, y, value);
if(d < 0)d+=4*y+6;
else{
d+=4*(y-x)+10;
x--;
}
y++;
}
if(x==y) WritePixel8(x, y, value);
}
Bresenhamov algoritam prednosti:
- Kompletna raunica se svodi na celobrojnu aritmetiku. Koriste se samo sabiranje, oduzimanje i
mnoenje.
- Postoji i varijacija ovog algoritma Midpoint algoritam
Skaniranje elipse zahtevi:
- Slino kao za krug: Niz piksela treba da bude to blie idealnoj elipsi.
- Nacrtana elipsa treba da bude ,,neprekidna .
- Crtanje treba da bude to je mogue bre.
Skaniranje elipse algoritmi:
- Trigonometrijski algoritam
- Polinomni algoritam
- Bresenham-ov algoritam
- Diferencijalni algoritmi
I reda
II reda
Simetrija kod elipsi:
Treba uoiti da je elipsa takoe simetrina figura. Delimo je na lukove koji pripadaju kvadrantima, pa za
sraunatu taku koja pripada luku u prvom kvadrantu jednostavno nalazimo simetrine take na
lukovima u ostala tri kvadranta

Trigonometrijski algoritam:
Pretpostavka je da se crta elipsa sa centrom u koordinatnom poetku, sa osama koje se poklapaju sa
koordinatnim osama. Trigonometrijski algoritam radi na osnovu parametarskih jednaina elipse,
odnosno na osnovu trigonometrijskih funkcija.

17

Trigonometrijski algoritam implementacija:


void TrigElipsa (int a, int b, COLORREF value)
{
float t, tend, tstep;
int x,y;
t=0.0;
tend=22.0/7/2.0 /* pi/2 */
tstep=6.28/360;
while (t<=tend){
x=int(a*cos(t)+0.5);
y=int(b*sin(t)+0.5);
WritePixel4(x,y,value);
t+=tstep;
}
}
void WritePixel4(int x, int y, COLORREF value)
{
WritePixel (x,y,value);
WritePixel (-x,y,value);
WritePixel (x,-y,value);
WritePixel (-x,-y,value);
}
Polinomni algoritam:

Polinomni algoritam implementacija:


void ElipsaPolinom(int a,int b, COLORREF value)
{
int x;
float y,a2;
a2=a*a;
for(x=0; x<a; x++){
y=(int)(b*sqrt(1-x*x/a2)+0.5);
WritePixel4(x,y,value);
}
18

}
Polinomni algoritam nedostaci:
- Operacije sa realnim brojevima.
- Lo rezultat
Bresenham-ov algoritam - implementacija:
void BresenhamEllipse(int a, int b, COLORREF value)
{
int x,y,a2,b2, s, t;
x = 0; y = b;
s = a2*(1-2*b) + 2*b2;
t = b2 - 2*a2*(2*b-1);
WritePixel4(x,y,value);
while (y>0){
if (s<0){
s += 2*b2*(2*x+3);
t += 4*b2*(x+1);
x++;
}
else if (t<0){
s += 2*b2*(2*x+3) - 4*a2*(y-1);
t += 4*b2*(x+1) - 2*a2*(2*y-3);
x++;
y--;
}
else {
s -= 4*a2*(y-1);
t -= 2*a2*(2*y-3);
y--;
}
WritePixel4(x,y);
}
}
Diferencijalni algoritam I reda:

19

Diferencijalni algoritam I reda- implementacija:


void DiffEllipse(float a, float b, COLORREF value)
{
float ba,ab,x0,x1,y0,y1,Dphi;
Dphi=3.1416/180.0;
ba=Dphi*b/a; ab=Dphi*a/b;
x0=a; y0=0;
for (int j=0; j<90;j++){
x1=x0-ab*y0;
y1=y0+ba*x0;
BresenhamLine(x0,y0,x1,y1,value);
BresenhamLine(-x0,y0,-x1,y1,value);
BresenhamLine(x0,-y0,x1,-y1,value);
BresenhamLine(-x0,-y0,-x1,-y1,value);
x0=x1;
y0=y1;
}
}
Diferencijalni algoritam I reda nedostaci:
- Osnovni nedostatak je taj to se algoritam ne zavrava tano u (0,b). To je zbog toga to je
diferencijalna razlika procenjivana samo na osnovu dve zadnje take xi i xi-1.
- Poboljanje ovog algoritma je diferencijalni algoritam II reda.

Diferencijalni algoritam II reda:

20

Diferencijalni algoritam II redaimplementacija :


void DiffEllipse2(float a, float b, COLORREF value)
{
float x0,x1,y0,y1,k;
k=3.1416/180.0;
x0=a; y0=0;
x1=a*cos(1);
y1=b*sin(1);
k=2-k*k;
for (int j=0; j<90;j++){
BresenhamLine(x0,y0,x1,y1,value);
BresenhamLine(-x0,y0,-x1,y1,value);
BresenhamLine(x0,-y0,x1,-y1,value);
BresenhamLine(-x0,-y0,-x1,-y1,value);
x0=x1;
y0=y1;
x1=k*x1-x0;
y1=k*y1-y0;
}
}
Diferencijalni algoritam II reda prednosti:
- Iterativna izraunavanja ne zavise od oblika elipse (ne zavise od parametara a i b)
Skaniranje luka:
- Slino kao za krug i elipsu, samo su poetni i krajnji ugao ogranieni.
6. Popuna (Filling) objekata
Popunjavanje oblasti (regiona):
- Oblast (region) je grupa susednih, povezanih piksela.
- Uobiajeno, oblast se definie na jedan od dva naina:
1) Svi pikseli koji pripadaju oblasti imaju istu (datu) vrednost;
2) Pikseli koji su na ivici oblasti imaju datu vrednost.
Tipovi oblasti:
- Prema nainu definisanja
- Prema povezanosti piksela
Tipovi oblasti prema nainu definisanja:
- Interior-defined (oblast definisana unutranou)
- Boundary-defined (oblast definisana granicom)
Interior-defined oblasti:
- Svi pikseli u oblasti imaju vrednost old_value, i nema piksela na granici oblasti sa tom vrednou.
- Algoritmi za popunu koji rade nad ovakvim oblastima treba da postave njihove piksele na vrednost
new_value.
- Ovakvi algoritmi se nazivaju algoritmima popunjavanja poplavljivanjem (flood-fill).
Boundary-defined oblasti:
- Pikseli na granici oblasti imaju vrednost boundary_value, dok pikseli u oblasti imaju proizvoljnu drugu
vrednost.
21

- Algoritmi koji rade nad ovakvim oblastima treba da postave sve njihove piksele na vrednost
new_value
- Ovi algoritmi se nazivaju algoritmima popunjavanja oiviene oblasti (boundary-fill)
Tipovi oblasti prema povezanosti piksela:
- 4-susedne oblasti (4-connected)
- 8-susedne oblasti (8-connected)
4-susedne oblasti:
- Od proizvoljnog piksela u oblasti do svih drugih u oblasti moe se stii sekvencom horizontalnih i
vertikalnih pomeraja za 1 piksel.
8-susedne oblasti:
- Od proizvoljnog piksela u oblasti do svih drugih u oblasti moe se stii sekvencom horizontalnih,
vertikalnih i dijagonalnih pomeraja za 1 piksel
Algoritmi za popunu:
- Flood-fill algoritmi.
- Algoritmi za popunu oivienih oblasti.
Rekurzivni Flood-fill algoritam za 4- susedne oblasti:
void Flood_Fill4(int x, int y, COLORREF
old_value, COLORREF new_value)
{
if (ReadPixel(x,y)==old_value){
WritePixel(x,y,new_value);
Flood_Fill4(x,y-1,old_value,new_value);
Flood_Fill4(x,y+1,old_value,new_value);
Flood_Fill4(x+1,y,old_value,new_value);
Flood_Fill4(x-1,y,old_value,new_value);
}
}
COLORREF ReadPixel(int x, int y)
{
CClientDC dc(this);
return dc.GetPixel(x,y);
}
Rekurzivni Flood-fill algoritam za 8 - susedne oblasti:
void Flood_Fill8(int x, int y, COLORREF old_value, COLORREF new_value)
{
if (ReadPixel(x,y)==old_value){
WritePixel(x,y,new_value);
Flood_Fill8(x,y-1,old_value,new_value);
Flood_Fill8(x,y+1,old_value,new_value);
Flood_Fill8(x+1,y,old_value,new_value);
Flood_Fill8(x-1,y,old_value,new_value);
Flood_Fill8(x-1,y-1, old_value,new_value);
Flood_fill8(x-1,y+1, old_value,new_value);
Flood_fill8(x+1,y-1, old_value,new_value);
Flood_fill8(x+1,y+1, old_value,new_value);
}
}
Rekurzivni algoritam za popunu oiviene 4-susedne oblasti:
void Boundary_Fill4(int x, int y, COLORREF
boundary_value, COLORREF new_value)
{
COLORREF temp_value=ReadPixel(x,y);
if (temp_value!=boundary_value)&&(temp_value !=
new_value)){
Writepixel(x,y,new_value);
22

Boundary_Fill4(x,y-1,boundary_value,new_value);
Boundary_Fill4(x,y+1,boundary_value,new_value);
Boundary_Fill4(x+1,y, boundary_value,new_value);
Boundary_Fill4(x-1,y, boundary_value,new_value);
}
}
Nedostaci rekurzivnih algoritama za popunu oblasti
- Brza popuna steka!!!
- Zbog toga se koriste iterativni algoritmi.
Iterativni algoritam:

23

Popuna grafikih primitiva:


- Popuna poligona
- Popuna kruga
- Popuna elipse
Popuna poligona zadatog listom temena:

Treba uzeti oba principa ali treba razlikovati ova dva sluaja:
Ako se dvostruki presek nalazi na lokalnom minimumu ili maksimumu, treba uzeti presek kao dve take.
U ostalim sluajevima treba uzimati presek kao jednu taku.

n nagib linije
Popuna poligona zadatog listom temena-algoritam Koriste se dve tabele:
- Tabela ivica ET (Edge Table) tabela pointera na sken linije
- Tabela aktivnih ivica AET (Active Edge Table)

24

Algoritam:

25

Popuna elipse i kruga:

- Obzirom da znamo da svaka sken linija moe 2 puta da presee krunicu ili elipsu, nema potrebe za
AET.
- Obzirom da je re o simetrinim figurama, moemo to da iskoristimo u algoritmu.
Popuna kruga i elipse-algoritam:

7.

Odsecanje (Clipping) objekata

Isecanje (odsecanje, clipping):


- Odsecanje (Clipping) - uklanjanje svih delova primitiva izvan prozora kroz koji se slika posmatra.
Pokrivanje (covering, shielding):
- Pokrivanje (Covering, Shielding) uklanjanje delova primitiva unutar prozora. Ova dva postupka su
meusobno suprotni.
Algoritmi za odsecanje:
- Algoritmi za odsecanje se dele prema sledeim kriterijumima:
prema primitivi koja se odseca (proizvoljna taka, linija, poligon, krug, elipsa)
prema prozoru za odsecanje (clipping window) (pravougaoni prozor, paralelan, konveksni
poligon, proizvoljan poligon).
Isecanje take:
- Jednostavan algoritam selektivnog postavljanja piksela
Algoritam reava problem odsecanja proizvoljne take izvan pravougaonog prozora. Prozor je
pravougaoni sa ivicama koje su paralelne osama i koje pripadaju prozoru.

26

Implementacija:
void SelSetPixel(CRect w, CPoint p, COLORREF v)
{
if ((w.left <= p.x) && (p.x <= w.right)
&& (w.top >= p.y) && (p.y >= w.bottom))
WritePixel(p.x,p.y,v)
}
Isecanje take nedostaci:
- Ovaj metod nije efikasan jer koristi dosta if naredbi.
- Bolje reenje je posmatrati cele objekte, a ne njegove sastavne take (piksele).
Odsecanje linija:

Algoritmi za odsecanje linija:


- Aloritam grube sile.
- Cohen-Sutherland algoritam.
- Cyrus-Back algoritam
Algoritam grube sile:
- Raunaju se preseci linija sa linijama regiona za odsecanje i onda se testira ta je unutar, a ta van...
- Nedostaci: neefikasnost, sporost
Cohen-Sutherland algoritam:
- Cohen-Sutherland-ov algoritam efikasno reava problem odsecanja linija izvan pravougaonog
prozora.
- Osnovna ideja algoritma je da se najpre pokua da se linija u celini prihvati ili odbaci. Ukoliko se ne
uspe i prvom koraku, odreuje se presek linije i produene ivice prozora pa se ponovo pokuava
prihvatanje ili odbacivanje preostalog dela linije.

Cohen-Sutherland algoritam:

27

28

29

Cyrus-Beck algoritam:
- Optimizuje se postupak nalaenja preseka

- Nai PE sa najveim t
30

- Nai PL sa najmanjim t
- Nacrtati liniju izmeu ove dve take

Poreenje:
- Cohen-Sutherland
Neefikasan je kada se radi o ponavljanju odsecanja.
Najbolje rezultate daje kada se najvei broj linija moe trivijalno prihvatiti ili odbaciti.
- Cyrus-Beck
Efikasno izraunavanje t-preseka.
Izraunavanje (x,y) taaka za kliping se vri samo jedanput.
Algoritam ne razmatra trivijalno prihvatanje i odbacivanje.
Najbolji je kada postoji dosta linija za kliping.
- Postoji i Liang-Barsky algoritam: on predstavlja optimizovani Cyrus - Beck algoritam...
Odsecanje poligona:
- Mnogo je sloenije od odsecanja linija
Ulaz: poligon
Izlaz: originalni poligon, novi poligon, ili nita...
Odsecanje trougla:

Odsecanje proizvoljnog poligona:

Algoritmi za odsecanje poligona:


- Sutherland-Hodgman algoritam
- Weiler-Atherton algoritam
Sutherland-Hodgeman algoritam:
- Osnovna ideja:
Vri se isecanje poligona u odnosu na neku od ivica koje se posmatraju kao granice poligona.
31

Postupak se nastavlja za sve ivice regiona za


kliping.

- Ulaz/izlaz za algoritam:
Ulazna lista: ureena lista temena poligona
Izlazna lista: lista temena novog poligona koja se sastoji od nekih starih i nekih novih temena
(najee)
- Oznake:
p - taka za koju se trenutno proverava da li treba da ide u izlaznu listu.
s - taka iz prethodne iteracije.

- etiri sluaja:
s i p su unutra
- Dodati p u izlaznu listu
- s je ve u listi
s je unutra a p spolja
- Nai taku preseka i
- Dodati i u izlaznu listu
s i p su spolja
- Nita se ne dodaje u izlaznu listu
s je spolja a p je unutra
- Nai taku preseka i
- Dodati i i p u izlaznu listu

32

33

34

35

Weiler-Atherton algoritam:
- Osnovna ideja:
Algoritam reava problem odsecanja proizvoljnog poligona
izvan prozora, koji je proizvoljan poligon. Praktino, odreuje se presek dva proizvoljna poligona. Oba
poligona mogu biti i konkavna, a takoe, mogu sadrati i rupe. Algoritam kree od proizvoljnog temena
zadatog poligona koji se odseca, u pravcu kazaljke asovnika (temena su ureena na ovaj nain). Prati
se ivica poligona koji se odseca sve do preseka sa ivicom poligona-prozora. Ako ivica "ulazi" u prozor,
nastavlja se praenje ivice poligona koji se odseca. Ako ivica "izlazi" iz prozora, skree se "udesno" i
nastavlja ivicom prozora, na nain kao da je on sada poligon za odsecanje, a originalni poligon za
odsecanje sada prozor. Take preseka se pamte da bi se obezbedilo da se svi putevi preu tano
jednom.

Odsecanje kruga i elipse:


- Algoritam:
1. Vri se trivijalno prihvatanje ili odbacivanje celog kruga (elipse)
36

2. Deli se krug (elipsa) na kvadrante i vri se trivijalno prihvatanje ili odbacivanje kvadranata.
3. Nalaze se presene take kruga (elipse) sa regionom za odsecanje i vri se iscrtavanje dela kruga
(elipse).

8. Geometrijske transformacije
- Geometrijske transformacije preslikavajuoriginalnu taku u njenu sliku.
Podela geometrijskih transformacija:
- Dvodimenzionalne transformacije (2D).
- Trodimenzionalne transformacije (3D).
2D desni pravougli koordinatni sistem je definisan na sledei nain:
koordinatna osa prve koordinate (X) se prevodi u osu drugu koordinate (Y) rotacijom oko
koordinatnog poetka za 90 u smeru suprotnom od kretanja kazaljke na asovniku.
Elementarne 2D transformacije:
- Translacija
- Skaliranje
- Rotacija
- Refleksija
- Smicanje
Translacija:

Skaliranje:

- Za Sx = Sy radi se o uniformnom skaliranju.


- Ako je S > 1 radi se o uveanju.
- Ako je S < 1 radi se o smanjenju.
Rotacija:
37

Refleksija:
- Refleksija je skaliranje sa negativnim faktorom skaliranja.
Refleksija prema proizvoljnoj osi:
- Translacijom se dovede koordinatni poetak na datu osu.
- Rotacijom se X-osa poklopi sa datom osom.
- Primeni se refleksija prema X-osi.
- Inverzna rotacija.
- Inverzna translacija.
Smicanje (Shear):

Homogene koordinate:
Kako bi se postigla uniformnost transformacija, uvode se homogene koordinate:
- Jedna taka moe da ima vie homogenih koordinata. Na primer, (2,3,6) i (4,6,12) predstavljaju jednu
istu taku.
- (0,0,0) nije dozvoljena. To je taka u beskonanosti.
- (x,y,w) i (x,y,w) predstavljaju jednu istu taku ukoliko su jedne koordinate umnoak druge.
- U raunarskoj grafici se koristi sledei oblik homogenih koordinata: (x,y,1)
Translacije homogene koordinate:

Skaliranje homogene koordinate:


38

Rotacija homogene koordinate:

Smicanje homogene koordinate:

Inverzne transformacije:

Komponovanje transformacija:

Vaee relacije:

Rotacija oko proizvoljne take:

39

3D transformacije:
- Postoji formalna slinost sa transformacijama u 2D grafici:
dodaje se jedan lan jednaina (za koordinatu z),
dodaje se jedna jednaina (za z' )
posledica je da matrica transformacije postaje 4x4
Translacije homogene koordinate:

Skaliranje homogene koordinate:

Rotacija homogene koordinate:


-Za razliku od 2D transformacija, gde je postojala jedna elementarna rotacija (oko koordinatnog
poetka) u 3D grafici postoje 3 elementarne rotacije (oko svake ose koordinatnog sistema).
- Pozitivan smer rotacije oko ose koordinatnog sistema odreen je pravilom desne zavojnice.

Smicanje homogene koordinate:

40

9. Geometrijske projekcije
-Projekcije preslikavaju taku iz n-dimenzionalnog koordinatnog sistema (prostora) u koordinatni sistem
(prostor) koji ima manje
od n dimenzija.
-U raunarskoj grafici se obino radi sa projekcijama koje
preslikavaju objekte iz 3D prostora u 2D prostor.
-Ukoliko se radi o projekciji na ravan onda se radi o planarnoj projekciji.
-U raunarskoj grafici se uglavnom radi sa planarnim projekcijama.
Osnovni parametri projekcije:
- Centar projekcije (COP).
- Projekcijski zraci.
- Projekciona ravan.

Paralelne projekcije:
- Svi projekcioni zraci polaze iz jedne take koja predstavlja centar projekcije (COP) i ta taka se nalazi
u beskonanosti.
- Posledica ovoga je da su svi projekcioni zraci paralelni.
- Karakterie se projekcionom ravni i pravcem projekcije (DOP)
Podela paralelnih projekcija:
- Normalna (ortogonalna): Projekcioni zraci su normalni na projekcionu ravan.
- Kosa (klinogalna): Projekcioni zraci su kosi u odnosu na projekcionu ravan.
Normalna projekcija:
- Ortografska: Projekciona ravan je normalna na neku od koordinatnih osa.
- Aksonometrijska: Projekciona ravan zaklapa proizvoljni ugao sa koordinatnim osama.
Ortografska projekcija:
Postoje tri ovakve projekcije:
Pogled odozgo
Pogled spreda
Pogled sa strane
Aksonometrijska projekcija:
Postoje tri ovakve projekcije:
Izometrijska (projekciona ravan zaklapa isti ugao sa svim koordinatnim osama)
Dijametrijska (projekciona ravan zaklapa isti ugao sa dve koordinatne ose)
41

Trijametrijska (projekciona ravan zaklapa razliite uglove sa koordinatnim osama)


Kosa projekcija:
- Kavaljerska: Projekcioni zraci zaklapaju ugao od 45 sa projekcionom ravni.
- Kabinetska: Projekcioni zraci zaklapaju ugao od arctg(2) sa projekcionom ravni.
- Ostale: Projekcioni zraci zaklapaju proizvoljni ugao sa projekcionom ravni.
Perspektivne (centralne) projekcije:
- Svi projekcioni zraci polaze iz jedne take koja predstavlja centar projekcije (COP) i ta taka se ne
nalazi u beskonanosti.
- Karakterie se projekcionom ravni, pravcem projekcije (DOP) i centrom projekcije (COP).
Karakteristike perspektivne projekcije:
- Perspektivno skraenje iluzija da su nam objekti i njihove dimenzije manji to je njihovo rastojanje od
COP vee.
- Iluzija da se skupovi paralelnih linija dodiruju u nekoj taki (taka prividnog preseka).
- Realistinije su od paralelnih projekcija.
Podela perspektivnih projekcija:
- Sa jednom takom.
- Sa dve take.
- Sa tri take.
Matrina reprezentacija:
Kao i sve druge geometrijske transformacije, i projekcija se moe svesti na mnoenje matrica.

Ortografska projekcija:

Perspektivna projekcija:

42

Kosa projekcija:

- Za = 45 i L1 = 1 Kavaljerska projekcija
- Za = arctg(2) i L1 Kabinetska projekcija
Transformacije koordinatnih sistema:
- Isti efekti koji se postiu translacijom, skaliranjem i rotacijom objekata, mogu se ostvariti i ako se
objekat ne pomera, ve se pomera i menja koordinatni sistem, odnosno mesto posmatranja objekta.
- U tom sluaju se menja znak parametrima dx, dy, dz, , odnosno, uzima se reciprona vrednost za Sx,
Sy, Sz.
Transformacija levog u desni koordinatni sistem:

10. 2D i 3D pogled
2D pogled:
- 2D pogled predstavlja proces raunarskog predstavljanja objekata iz 2D sveta na nekom od izlaznih
grafikih ureaja (tampa, ekran, ploter,...)
Lokalne koordinate:
- Lokalne koordinate su koordinate objekta
(modela).
Svetski koordinatni sistem:
- Lokalne koordinate treba transformisati u svetske (prirodne) koordinate. Svetski (prirodni) koordinatni
sistem opisuje relativnu poziciju i orijentaciju svih objekata na sceni.
43

- Za transformaciju iz lokalnog u svetski koordinatni sistem se koriste elementarne 2D transformacije.


Prozor u svetskom koordinatnom sistemu:
- Prozor (window) u svetskom koordinatnom sistemu odreuje pravougaonu oblast iz svetskog
koordinatnog sistema koja e se prikazati na izlaznom ureaju.
Koordinate pogleda:
- Koordinate pogleda opisuju poziciju i orijentaciju svakog objekta u odnosu na zadati prozor. Vri se
isecanje (clipping) objekata koji su van prozora.
Normalizovane koordinate ureaja:
- Normalizovane koordinate opisuju virtuelni ureaj.
- Ovo se radi zbog kompatibilnosti sa razliitim izlaznim ureajima.
Definisanje zaslona:
- Zaslon (viewport) predstavlja pravougaonu oblast u normalizovanim koordinatama u koju se preslikava
prozor iz svetskog koordinatnog sistema.
Koordinate ureaja:
- Koordinate ureaja (DC device coordinates) predstavljaju koordinate konkretnog izlaznog ureaja i
zavise od aspekta i rezolucije ureaja.

Svetske koordinate pogled:

Koordinate pogleda normalizovane koordinate:

44

Aspekt:
- Aspekt definie odnos irine i visine slike.

Transformacija prozora u zaslon:


- Obino GAPI obezbeuju funkciju za transformaciju prozora u zaslon (Window-to-Viewport
transformation).

Implementacija 2D pogleda:

45

3D pogled:
- 3D pogled predstavlja proces raunarskog predstavljanja objekata iz 3D sveta na nekom od izlaznih
grafikih ureaja (tampa, ekran, ploter,...)
3D pogled analogijasa fotografisanjem:
- Osnovni elementi i kod klasinog i kod kompjuterskog pristupa posmatranju objekata u principu su isti.
Tako postoje objekti, posmatra, projektori i ravan projekcije.
- Postoji analogija izmeu raunarskog posmatranja objekata i fotografisanja.
Implementacija 3D pogleda:

Svetske koordinate projektovane koordinate:


1. Definisanje 3-D prozora, ili volumena pogleda.
2. Transformisanje u koordinate pogleda.
3. Transformisanje volumena pogleda u kanoniki volumen.
3. Isecanje u odnosu na kanoniki volumen.
4. Primena projekcije i dobijanje projektovanih koordinata.

Svetske koordinate koordinate pogleda:

Odreivanje volumena pogleda:

46

Ugao pogleda (FOV - field of view):

Standardna soiva:
- 48.24 mm ekvivalent ljudskog vida
- irokougaona soiva (obuhvataju veu scenu umanjuju prikaz) <50mm
35 mm i 28 mm standardna irokougaona soiva
10-15 mm riblje oko (sferno soivo), velika distorzija
- telefoto soiva (uveavaju prikaz, pribliavaju udaljene objekte) >50mm
- Koristiti FOV u opsegu: 30-60, za realne scene, da ne bi dolo do distorzije.
Proirenje Cohen-Sutherland-ovog algoritma za isecanje u kanonikom volumenu:

- Linija se trivijalno prihvata ako obe krajnje take imaju kodove 0.


- Linija se trivijalno odbacuje ako obe krajnje take posle AND operacije imaju kod <> 0.
- U ostalim sluajevima se trai presek linije i volumena.
11. Algoritmi za ostvarivanje realnosti prikaza
Realnost prikaza:
- Uklanjanje sakrivenih ivica i povrina
- Boje
- Svetla
- Senke
Uklanjanje sakrivenih ivica i povri:
- Za oveka je uklanjanje sakrivenih linija i povrina jednostavan problem.
- Za raunar je to znatan problem.
- Uvek kada slika sadri neprozirne objekte i povri, tada objekti koji su blie oku prekrivaju objekte koji
lee iza njih na istoj liniji pogleda.
47

- Da bi slika na ekranu bila realna, potrebno je da se izbace svi sakriveni objekti i sve sakrivene povri.
- Da bi se reio ovaj problem potrebno je da se izrauna dubina (depth) i vidljivost (visibility) svih povri
slike.
Uporeivanje dubine:
- Problem vidljivosti se svodi na utvrivanje da li dve take zaklanjaju jedna drugu. To se moe utvrditi
sledeim postupkom:
1. Utvrditi da li take P1 i P2 lee na istom projekcionom zraku.
2. Ako take P1 i P2 ne lee na istom projekcionom zraku, onda se one ne zaklanjaju. Meutim, ako se
nalaze na istom projekcionom zraku, onda je potrebno utvrditi koja se nalazi blie posmatrau.
- Poreenje dubina se obino vri posle normalizacije. Tada su projekcioni zraci kod paralelne projekcije
paralelni sa Z osom, a kod perspektivne projekcije polaze iz koordinatnog poetka.
- Kod paralelne projekcije, take su na istom projekcionom zraku ako je x1=x2 i y1=y2, a kod
perspektivne projekcije, take su na istom projekcionom zraku ako je x1/z1 = x2/z2 i y1/z1 =
y2/z2.
Algoritmi za uklanjanje sakrivenih ivica i povri:
- Do sada je razvijen veliki broj algoritama za reavanje ovog problema. Ni za jedan od ovih algoritama
se ne moe rei da je najbolji. Svaki od njih ispunjava neke od zahteva za reavanje problema
sakrivenih povri. Shodno tome ih treba birati u konkretnoj aplikaciji.
- Postoje dva prilaza:
Algoritmi prostora slike
Algoritmi prostora objekata
Algoritmi prostora slike:
- Prvi pristup za svaki piksel slike dimenzija n x m odreuje koji od k objekata je vidljiv.
- Sloenost algoritma je O(nmk)
- Algoritam:
1. Za svaki piksel slike uraditi:
2. Odrediti objekat najblii posmatrau (du prave
odreene projekcijom).
3. Obojiti piksel odgovarajuom bojom.
- Ovaj pristup se obino zove image-precision.
- Najpre je korien u ranim sistemima sa rasterskom grafikom (koji mogu da adresiraju relativno mali
broj taaka, ali mogu da prikazuju veliki broj objekata).
-Algoritmi iz ove grupe su:
Z-buffer algoritam (Catmull 1974).
Warnock-ov algoritam (Warnock 1969).
Scan-line algoritam (Watkinson-ov algoritam).
Ray-tracing algoritam (algoritam praenja zraka - Appel
(1968), Goldstein i Nagel (1968, 1971)).
Z-buffer algoritam:
- Algoritam sa Z baferom koristi pored bafera ureaja za prikazivanje slike (frame buffer) i poseban
bafer gde se u poziciji (x,y) pamti najmanja Z koordinata (dubina) taaka koje se vide iz piksela (x,y).
- Ovaj bafer se zove Z-buffer. Dakle, najmanja dubina svih taaka koje se vide iz piksela (x,y) se pamti
u Zbaferu na poziciji (x,y).
- koristi se u OpenGL-u

48

Z-buffer prednosti:
- Jednostavno se implementira i softverski i hardverski.
- Nije potrebno sortiranje objekata pre primene algoritma.
- Poligoni se pojavljuju na slici redom kojim se obrauju.
- Mogue su optimizacije raunanja (izbegavanje mnoenja i sl. na bazi prirode scan-conversion
algoritma).
- Z-bafer algoritam ne zahteva nuno da primitivne povri budu poligoni.
- Z-bafer podaci mogu da budu uvani zajedno sa generisanom slikom i da se toj sceni naknadno doda
novi objekat.
Z-buffer nedostaci:
- Zahteva postojanje memorijskog prostora ne samo za vrednost boje za svaki piksel (frejm bafer F),
ve i memorijskog prostora za z-vrednosti (tj. z-koordinate) za svaki piksel (z-bafer).
Warnock-ov algoritam:
1. Analiziramo sadraj ispitnog prostora koji je u poetku jednak
zaslonu. Mogui sluajevi:
- prozor je prazan
- scena u prozoru je jednostavna i mogue ju je prikazati
- scena u prozoru je sloena, rekurzivno delimo dalje
2. Podela prostora (quad tree).
3. Podela poligona u tri grupe, u zavisnosti od
relacije sa prozorom:
- poligon je izvan prozora (uklonimo ga iz liste)
- poligon see prozor ili je u prozoru
- poligon prekriva prozor
Scan-line algoritam (Watkinson-ov algoritam):
1. U projekcionoj ravni se postavi ispitna linija.
2. Odreuju se rasponi uzorka. Raspon uzorka je deo linije na kome se ne moe dogoditi promena
vidljivosti. To je deo linije koji ispunjava sledee uslove:
- Broj segmenata u rasponu uzorka je konstantan i >= 1.
- Projekcije preseka za y=yi unutar raspona uzorka u ravni xz se ne seku unutar raspona uzorka (svaki
presek u projekciji oznaava novi raspon uzorka).
3. Odreivanje vidljivosti. Raspon uzorka se testira u odnosu na vidljivost:
- Ako je broj segmenata na tekuoj ispitnoj liniji razliit od broja segmenata na prethodnoj ispitnoj liniji ili
- Ako se krajnje take dva segmenata zamene, po veliini koordinate z (na primer: take A i C , B i D )
kad prelazimo iz tekue u susednu ispitnu liniju (tada se obe povrine seku u prostoru izmeu dve
ispitne ravni).
4. Ispitivanjem z-koordinate moemo odrediti koji segment u rasponu uzorka prekriva druge segmente.
Ray-tracing algoritam (algoritam praenja zraka):
- Ovaj algoritam se jo zove i Ray-casting algoritam, mada se ovo ime obino koristi samo za varijantu
za odreivanje vidljivosti (a ray tracing za puni rekurzivni algoritam).
49

- Ideja je sledea: Za svaki piksel na slici se emituje imaginarni zrak od oka posmatraa ka sceni, a da
pritom proe kroz zadati piksel. Nakon toga se detektuje prvi objekat koji je pogoen emitovanim
zrakom i piksel se boji u boji pogoenog objekta.
- Originalno razvijen za simuliranje putanja balistikih projektila, sada ima najznaajnije primene u
grafici. Koristi se za odreivanje vidljivosti, bulove operacije nad telima, odreivanje refleksije i refrakcije
(prelamanja) itd.

Algoritmi prostora objekata:


- Drugi pristup za svaki od n objekata u sceni odreuje koji je vidljiv.
- Sloenost algoritama je O(n2)
- Ovaj pristup se obino zove object-precision.
- Algoritmi iz ove grupe su:
Slikarev algoritam (Newell & Sancha, 1972).
Back face culling algoritam.
Algoritam koji koristi BSP stabla (Fuchs, Kedem, Naylor,
1980).
Algoritam koji koristi octree stabla.
Slikarev algoritam (depth-sort):
- Sutina: prvo se "slika" najudaljeniji poligon koji ne sakriva druge, a zatim se preko njega slikaju
poligoni koji ga (delimino) zaklanjaju.
Algoritam:
1. Sortiraju se poligoni po rastuoj z-koordinati najudaljenijeg temena (zmax) poligona.
2. Kree se od najudaljenijeg poligona i za svaki poligon se proverava da li on zaklanja neki od narednih
poligona u listi. Ako zaklanja zaklonjeni poligon se prevezuje ispred zaklanjajueg: sprovodi se 5
testova koji se reaju od jednostavnijih ka sloenijim proverama.
3. Reavaju se uzajamna preklapanja detektuje se potencijalna beskonana petlja.
4. Crtaju se popunjeni poligoni poevi od najudaljenijih od posmatraa.
Problem:
1. U sluaju uzajamnog preklapanja (npr. A,B i C na slici) dolazi do beskonane petlje.
Reenje:
Sluaj uzajamnog preklapanja se otkriva tako to se:
- Pri prebacivanju Q ispred P u listi, Q se obelei.
- Pri svakom prebacivanju vri se provera da li je poligon Q ve bio obeleen.
- Ako se otkrije da je Q ve bio obeleen - detektuje se uzajamno preklapanje.
- U sluaju detektovanog preklapanja poligon Q se deli na 2 (Q1 i Q2) pomou ravni poligona P.
Back face culling algoritam:
- Ideja: kod neprozirnih zatvorenih objekata eliminiu se zadnje
stranice koje ne mogu da se vide direktno.
- Test: stranica je vidljiva ako i samo ako je: 90 => => -90
- Ovaj uslov je ekvivalentan sa: cos > 0
- Na ovaj nain se obino uklanja oko 50% stranica.
- Koristi se u OpenGL-u:
glEnable(GL_CULL_FACE)
glCullFace( GL_FRONT / GL_BACK /GL_FRONT_AND_BACK )
Algoritam koji koristi BSP stabla:
- BSP Binary Space Partitioning trees.
- Prostor poligona se deli ravnima kojima poligoni pripadaju. Izabere se jedan poligon koji e biti koren
stabla, a zatim se formira stablo u zavisnosti da li su poligoni ispred ili iza ravni kojoj pripada startni
poligon.
Alternativno stablo izbegava se podela poligona, ali stablo nije balansirano!!!
50

- Obilazak stabla (rekurzija):


Prvo se crtaju poligoni iza ravni korena stabla.
Zatim se crta poligon koji je koren stabla.
Onda se crtaju poligoni ispred ravni korena stabla.
Algoritam koji koristi octree stabla:
- Prostor se deli u 8 oktanata.
- Pravi se stablo koje sadri poligone u svakom oktantu.
- Ako jedan oktant sadri vie od minimalnog broja poligona, on se rekurzivno deli na jo 8 oktanata.
- Prvo se iscrtavaju poligoni koji se nalaze u oktantu koji je najudaljeniji od posmatraa.
- Zatim se iscrtavanje rekurzivno ponavlja za oktante koji se granie sa iscrtanim oktantom.
12. Boje u raunarskoj grafici
Boje:
- Danas je formiranje prikaza u boji ili u skali sive boje integralni deo raunarske grafike. Boja je vrlo
sloen koncept koji objedinjuje koncepte iz fizike, psihologije, umetnosti i grafikog dizajna.
- Boja jednog objekta ne zavisi samo od tog objekta ve i od izvora svetlosti kojom se obasipa dati
objekat, takoe i od boje okruenja, i konano od ovekovog vidnog aparata. Takoe, neki objekti
reflektuju svetlost, dok ga drugi proputaju (staklo). Sve ovo utie na to kakomi doivljavamo boju.
Boja definicija:
- Boja je oseaj koji se stvara kada se svetlost detektovana pomou retine u oku interpretira u mozgu.
- Oseaj boje je bioloki oseaj.
Oko:
- Slika se formira na mrenjai (retini) gde se nalaze dve vrste fotoreceptora osetljivih na svetlost:
tapii -10 miliona
epii - 6.5 miliona
- Postoje tri vrste epia koje su osetljive na razliite talasne duine svetlosti:
Duge
Srednje i
Kratke.
- Ovo odgovara osnovnim bojama: crvenoj (RRed), zelenoj (G-Green) i plavoj (B-Blue).
- Oko ne reaguje isto na sve talasne duine !!!
- Nesavrenost oka
- Nedostatak jedne vrste epia - daltonizam.
- Nesavrenost oka:
Svetlost:
-Svetlost je elektromagnetno zraenje.
-Vidljivi spektar je od 400 700 nm
- Bezbojna (monohromatska).
- Obojena (hromatska)
Obojena svetlost:
- Vizuelne senzacije uzrokovane obojenom svetlou su mnogo bogatije nego one uzrokovane
monohromatskom.
- Diskusija o percepciji boje obino ukljuuje sledee veliine:
1. Nijansa - hue
2. Zasienost - saturation
3. Svetlost - lightness
4. Sjajnost - brightness
- Nijansa - pravi razliku izmeu boja (crvena, zelena, ljubiasta, itd...).
- Zasienost - meri koliko je boja daleko od sive istog intenziteta.
-Crvena je visoko zasiena boja, a roze je relativno nezasiena.
Sve pastelne boje su realativno nezasiene.
- Svetlina - ukljuuje monohromatsku notaciju za oseaj intenziteta reflektujueg objekta.
51

- Sjajnost - se koristi umesto svetline da bi se oznaio oseaj


intenziteta predmeta koji emituje svetlost (sunce, sijalica, itd...)
Merenje boja:
- U raunarskoj grafici je neophodno specificirati i meriti boje, ako se eli precizno korienje boja. Za
reflektovanu svetlost to se moe obaviti vizuelnim poreenjem uzorka nepoznate boje sa setom
standardnih uzoraka. Nepoznata boja i uzorak se porede na dnevnoj svetlosti budui da ambijent i izvor
svetlosti utiu na na oseaj za boju.
- iroko jer prihvaen model koji obuhvata publikovanje standarnih boja u 3D prostoru: nijansa-svetlinazasienost. U tamparstvu i grafikoj industriji boja se obino specificira poklapanjem sa ve
odtampanim uzorcima boje. Umetnici boju specificiraju preko tinti, senki, tonova i jako ili slabo
zasienih pigmenata.
- Da bi se boje specificirale objektivno, koristi se grana fizike koja se zove kolorimetrija. Ova disciplina
se zasniva na sledeim kljunim pojmovma:
1. Dominantna talasna duina
2. istoa eksitacije
3. Svetlenje
- Dominantna talasna duina je talasna duina boje koju vidimo
kada gledamo u svetlo i odgovara percepciji nijanse.
- istoa eksitacije odgovara zasienju boje. istoa eksitacije obojene svetlosti je proporcionalna
istoi svetla dominantne talasne duine i belom svetlu potrebnom za definisanje konkretne boje.
- Svetlenje je koliina ili intenzitet svetlosti. Potpuno ista boja je 100% zasiena i stoga ne sadri belu
svetlost. Sve ostale boje koje imaju zasienje izmeu 0 i 100% imaju i belu komponentu svetlosti. Bela
boja i sve nijanse sive su 100% nezasiene. Sive boje ne sadre boju bilo koje dominantne talasne
duine.
- Korespondencija izmeu perceptivnih i kolorimetrijskih
termina data je sa:
Nijansa - Dominantna talasna duina
Zasienje - istoa eksitacije
Svetlina (reflektujui objekti) - Svetlenje
Sjajnost (objekti koji svetle) - Svetlenje
Model boja:
- Model boja je specifikacija 3D koordinatnog sistema boja. Cilj modela je da omogui pogodnu
specifikaciju boja unutar neke skale boja.
- Nas interesuje skala za kolor CRT monitor.
- CIE Model
- RGB Model
- CMY Model
- CMYK Model
- YIQ Model
- HSV (HSB) Model
- HLS Model
CIE Model:
- CIE (Commission Internationale de lEclairage) je komisija koja je 1931. godine definisala tri
standardne komponente boje i nazvala ih X, Y, Z. Ovo su hipotetike boje koje u stvarnosti ne postoje.
- Meanjem odgovarajuih koliina ovih boja moe se dobiti bilo
koja druga boja.
- Koliine X,Y i Z komponenti, potrebne da se meanjem dobije neka boja ija je distribucija spektralne
energije data sa P(talasna duina) su:

52

- Za objekte koji svetle, kao to je sijalica ili CRT, k = 680 lumena/W.


- Za reflektujue objekte k se obino bira tako da bela ima Y=100, a da su Y vrednosti za ostale boje
izmeu 0 i 100. Otuda je:

- U ovom obrascu je Pw distribucija spektralne energije za bilo koji izabrani izvor svetla kao standard za
belo.
- Vrednosti hromatinosti se dobijaju kao:

- Hromatinost zavisi samo od dominantne talasne duine, a ne i od koliine energije svetla.


RGB Model:
- Ovaj model se koristi kod CRT monitora u boji i raster grafici u boji. Baziran je na Dekartovom
koordinatnom sistemu: (x,y,z) = (r,g,b). Iz ovoga sledi da je plava boja data sa (0,0,1).Na slian nain se
odreuju sve boje. R-Red G-Green B-Blue
- Boja koju korisnik vidi zavisi i od fosfora konkretnog CRT-a. Dakle, plava na jednom nije ista kao i
plava na drugom CRT-u.
- Za prevoenje jedne plave u drugu (korigovanje) koristi se sledea jednaina:

- Ovaj model boja pripada grupi aditivnih modela. Kod ovih modela se boje dobijaju tako to se dodaju
crnoj boji:
Red + Green = Yellow Red + Green = Yellow
Red + Blue = Magenta Red + Blue = Magenta
Green + Blue = Cyan Green + Blue = Cyan
Red + Green + Blue = White Red + Green + Blue = White
CMY Model:
- CMY (Cian-Magenta-Yelow). Ove boje su komplementi od crvene, zelene i plave. One se nazivaju i
subtraktivne osnovne boje. Model pripada grupi subtraktivnih modela. U prethodnom modelu su se boje
dobijale tako to su se dodavale crnoj boji, a sada se boje dobijaju tako to se oduzimaju od bele boje.
Ovaj model se koristi za ureaje koji tampaju po beloj podlozi.
- Na primer, cian oduzima crvenu boju od bele svetlosti. Dakle, ako znamo da je bela svetlost jednaka R
+ G + B, onda moemo definisati cian boju kao: R + G + B - R = G + B.
- Magenta oduzima zelenu, uta oduzima plavu!
- Konverzija izmeu ova dva modela se obavlja na sledei nain:

53

RGB CMY relacija boja:

CMYK Model:
- CMYK je model izveden iz CMY modela. K je oznaka za crnu.
Transformacije kojima se prelazi sa CMY na CMYK su sledee:
K = min (C,M,Y)
C=C-K
M=M-K
Y=YK
YIQ Model:
- Ovaj model se koristi u komercijalnoj televiziji i stoga je usko vezan za rastersku grafiku. YIQ je
prekodiran RGB radi efikasnije transmisije i zbog kompatibilnosti sa crno-belim televizorima. Y je
oznaka za osvetljenje, a ne za utu boju. Ovo je kao Y koordinata kod CIE modela. CIE definie tri
standardne boje: X - crvena, Y - zelena, Z - plava. Na crno-belim monitorima se prikljuuje samo Y
komponenta. Kod monitora u boji koristi se i I i Q.
RGB YIQ konverzija:
- Specificiranje boja YIQ modelom reava potencijalni problem sa materijalom koji je pripremljen za
televiziju. Dve razliite boje prikazane strana po strana na kolor monitoru pojavie se kao razliite, ali
kada se konvertuju u YIQ i gledaju na monohromatskom monitoru, mogu se pojaviti kao iste. Ovaj
problem se moe izbei specificiranjem ove dve boje sa razliitim Y vrednostima u prostoru YIQ. Ovo je
mogue jer YIQ model koristi dva svojstva naeg ula vida. Prvo je to da je nae ulo mnogo osetljivije
na promenu svetla nego na promenu zasienosti i nijanse. Upravo zbog ovoga se vie bitova koristi za
kodiranje Y koordinate a manje za ostale dve. Drugo, objekti koji prekrivaju relativno malu povrinu
mogu biti prikazani sa jednom umesto sa dve koordinate boje. Ove tromosti naeg ula iskoriene su u
standardizaciji ovog sistema, te se Y koordinati daje 4Mhz, I koordinati 1.5Mhz, a Q koordinati samo
0.6Mhz.
HSV (HSB) Model:
- HSV (Hue-Saturation-Value) ili HSB (Hue-Saturation-Brightness).
- RGB, CMY, CMYK i YIQ modeli su hardverski orjentisani. Nasuprot njima, HSV (HSB) je korisniki
orijentisan. Zasnovan je na intuitivnom oseaju umetnika za tintu, senku i ton. Koordinatni sistem je
cilindrian tj. model je definisan u heksakonusu.
54

- Vrh heksakonusa odgovara V=1, koji sadri relativno svetle boje. Boje u ravni V-1 se ne oseaju sa
istom sjajnou. Nijansa (Hue) se meri uglom u odnosu na vertikalnu osu pri emu je crvena na 0,
zelena na 120 itd...Komplementarne boje su pomerene za 180 stepeni. Vrednost S je imeu 0 na
centralnoj liniji (V osi) i 1 na stranama heksakonusa. Zasienje se meri kao relativno u odnosu na gamu
boje predstavljene ovim modelom, koji je ustvari podskup celog dijagrama CIE hromatinosti. Stoga
zasienje 100% u ovom modelu je manje od 100% eksitacione istoe.
- Heksagon je visine 1 po V osi sa vrhom u koordinatnom poetku. Vrh je crne boje i ima V komponentu
jednaku nuli. U ovoj taki vrednosti S i H su irelevantne. Taka sa S=0, V=1 je bela. Vrednost za V
izmeu 0 i 1 kada je S=0 su sive. Kada je S=0, vrednost H je irelevantna. Kada je S razliito od nule, H
je RELEVANTNO. Na primer: slabo crvena je na H=0, S=1, V=1. Zaista, bilo koja boja sa V=1, S=1
odgovara situaciji kada umetnik koristi malo pigmenata kada poinje da mea boje. Dodavanje belog
pigmenta odgovara menjanju S (bez promene V). Senke se kreiraju smanjivanjem V (pri S=1). Tonovi
se kreiraju smanjivanjem i S i V. Naravno promena H odgovara izboru siromanog pigmenta sa kojim se
startuje.
HLS Model:
- HLS (Hue-Lightness-Saturation).
- HLS model boja je definisan u cilindrinom prostoru duple estougaone piramide (dupog heksagona).
U stvari, mi HLS predstavljamo kao deformaciju HSV, gde je bela boja podignuta da bi se formirao
gornji heksagon od ravni V=1.
- Svetlina je 0 za crno (na vrhu donje piramide) do 1 za belo (na vrhu gornje piramide).
13. Svetlo, senenje i bojenje
Realnost prikaza:
1. Uklanjanje sakrivenih ivica i povrina
2. Boje
3. Svetla
4. Senke
Svetlo, senenje i bojenje:
Verna realnost prikaza donosi potrebu za modeliranjem refleksija, proputanja i prelamanja svetla,
senki, odreivanja boja taaka objekata, tipova izvora svetla itd. Problem osvetljenja i senenja je
znatno komplikovaniji od problema vidljivosti.
Modeli osvetljenja i senenja:
Postoji vie modela osvetljenja (illumination) i modela senenja (shading). Model senenja je iri okvir i
on koristi model osvetljenja (neki modeli senenja pozivaju/koriste model osvetljenja za svaki piksel
slike, dok drugi pozivaju model osvetljenja samo za neke piksele, dok se za preostale koristi
interpolacija). Neka od reenja za problem osvetljenja zasnovana su na iskustvu i eksperimentima i nisu
utemeljena u fizici, ali daju dobre rezultate.
Modeli osvetljenja:
1.Samo-osvetljenost
2. Ambijentalno svetlo
3. Takasti izvori svetla
4. Direkciono svetlo
5. Spot svetlo
6. Proireni izvori svetla
1.)Samo-osvetljenost:
Ovo je najjednostavniji model osvetljenja. Za svaki objekat, svakoj taki je pridruen isti intenzitet
svetlosti. U ovom nerealistinom modelu, svako telo kao da je samo-osvetljavajue. Jednaina
osvetljenja (illumination) za ovaj model je:
I = ki
gde je I rezultujui intenzitet svetla,
ki je intenzitet svetla pridruen objektu.
2.)Ambijentalno svetlo:

55

Ambijentalno svetlo je difuzno, bez usmerenog izvora, koje je proizvod viestrukog odbijanja svetlosti
od svih povrina prisutnih u okruenju. Ako pretpostavimo da se svetlost rasprostire jednako u svim
smerovima po svim objektima, jednaina osvetljenja je za svaki objekat: I = Iaka
gde je Ia (konstantni) intenzitet ambijentalnog svetla,
ka je koeficijent ambijentalne refleksije objekta i on moe da ima vrednostiizmeu 0 i 1
3.)Takasto svetlo:
Takasti izvor svetla ravnomerno iri zrake u svim smerovima iz jedne take. Difuzna ili lambertovska
refleksija (refleksija odbijanje svetlosti od matiranih, hrapavih povrina). Ovakve povrine izgledaju
jednako
osvetljene iz svih uglova posmatranja i za jednu povrinu
osvetljenost
zavisi samo od ugla izmeu pravca svetla L i pravca normale N.
Jednaina
osvetljenosti u ovom modelu je:
I = Ipkpcos
gde je Ip
jaina izvora svetlosti, kp koeficijent difuzne refleksije (izmeu 0 i 1)
za materijal od
kojeg je nainjen objekat i je ugao izmeu pravca svetla i pravca
normale.
Ako su vektori
L i N normalizovani, onda je
I = Ipkp ( L N )
4.)Direkciono svetlo:
Ukoliko je izvor svetla dovoljno udaljen od svih objekata, moemo da smatramo da je vektor konstantan
za sve objekte i takav izvor svetla zovemo direkcioni izvor svetla. Ukoliko se osvetljenost rauna po
fromuli:
I = Ipkp ( L N )
u dobijenom prikazu objekti izgledaju kao da su osvetljeni samo sa jedne
strane i da se nalaze u mranoj prostoriji (tj. zanemaruje se difuzna
komponenta svetla). Da bi se taj efekat ublaio, esto se koristi sledea
jednaina (koja ukljuuje ambijentalnu osvetljenost):
I = Iaka + Ipkp ( L N )
5.)Spot svetlo:
Spot svetlo predstavlja svetlo koje se emituje od izvora u vrlo uskom ugaonom opsegu.
6.) Proireni izvori svetla:
Za razliku od takastih izvora svetla, proireni ili distribuirani izvori svetla imaju povrinu i, kao
posledicu, daju meke senke.
Obojena svetlost:
Prethodni modeli i jednaine razmatrali su samo monohromatsku svetlost. Obojena svetlost se obino
obrauje tako to se posebno obrauju jednaine za njene tri komponente.
Na primer,
(OdR,OdG,OdB ) definie za objekat difuzno crvenu, zelenu i plavu komponentu u RGB kolor sistemu.
Na primer, u kolor modelu jednaina
I = Iaka + fattIpkd ( L N )
daje (za crvenu komponentu):
IR = IaRkaOdR+ fattIpRkdOdR ( L N )

Rendering:
Rendering je postupak odreivanja odgovarajue boje piksela koji je pridruen nekom objektu u sceni.
Ovaj postupak nije jednostavan i zavisi od geometrije objekta u toj taki (vektor normale), geometrije,
tipa, pozicije i boje svetlosnog izvora, pozicije posmatraa, materjala od koga je objekat napravljen
(refleksija svetlosti), uticaja drugih faktora (magla, dim,...). Osnovni modeli kod renderinga su modeli
osvetljavanja i senenja (illumination and shading).
Modeli osvetljavanja i senenja:
Lokalni pristup - Razmatra samo osvetljenje od lokalnih izvora svetlosti i ne uzima se u obzir
refleksija od ostalih objekata u sceni.
Globalni pristup Uzima se u obzir i refleksija od ostalih objekata u sceni.
56

1.)Lokalni pristup:
Konstantno senenje (Flat shading).
Gouraud-ovo senenje.
Phong-ovo senenje.
Konstantno senenje: - Sve take povrine unutar jednog poligona imaju isti intenzitet. To znai da je
za neki poligon:
I n = const
r v = const

na = ( n1 + n2 + n3 + n4 ) / 4
Dobra strana ove metode je velika brzina, ali je veliki nedostatak prevelika istaknutost ivica.
Gouraud senenje: - Ova metoda eliminie vidljivost ivica interpolacijom boja i intenziteta osvetljenosti
du svakog poligona u 3D povri.

Boja i intenzitet se raunaju za svako teme poligona a zatim se vri interpolacija du ivica poligona.
Interpolacija se vri jo jednom du sken-linija prilikom skeniranja svakog od poligona

Interpolacija du ivica

Interpolacija duz sken linije:

Rezultat ovakvog postupka su vrlo glatki prelazi. Postupak je sporiji od prethodnog, ali jo uvek dovoljno
brz za praktinu upotrebu.

57

Phong senenje: - Kod ovog naina se radi interpolacija normala, tako da se izraunavanje boje i
intenziteta obavlja za svaki piksel ponaosob, to za rezultat ima veliki broj izraunavanja i malu
mogunost primene za senenje u realnom vremenu .

Interpolacija duz ivica

Interpolacija duz sken linije

2.)Globalni pristup:
Metod praenja zraka (Ray-tracing).
Metod isejavanja (Radiosity method).
Path-tracing metod.
Ray-tracing: - Uzima u obzir senke, refleksiju (odbijanje zraka), i refrakciju (prelamanje zraka kroz
transparentne objekte). Podrazumeva takaste izvore svetlosti. Zavisi od poloaja posmatraa.
Radiosity metod: - Uzima u obzir senke, refleksiju (odbijanje zraka), i refrakciju (prelamanje zraka kroz
transparentne objekte). Svetlosni izvori mogu da budu proizvoljnih dimenzija i geometrije. Ne zavisi od
poloaja posmatraa.
Path-tracing metod: - Najbolji metod, ali i najzahtevniji. Koristi Monte-Carlo metodu za upravljanje
geometrijom, refleksijom i osvetljajem.
Teksture:
Korienje tekstura in iscene realistinijim
Senke:
Doprinose realistinosti scene.Omoguavaju dobijanje dopunskih informacija:
Poloaj objekta u sceni
Dubinska udaljenost objekta
Oblik objekta
Poloaj izvora svetlosti
Vrste senki:
Umbra
Penumbra (Uticaj vie izvora svetlosti ili izvora svetlosti koji nisu takasti)
Algoritmi odreivanja senki:
1.)Lane senke - Koriste se jednostavni objekti kao senke...
58

2.)Projektovane senke - Koriste se projekcije objekata iz pozicije izvora svetla kao senke...
3.)Mape senki
4.)Zapremina senki - Za svaki objekat se odreuje poluotvorena zapremina senke.

Dubina senke:
Prolazak zraka kroz svaki prednji poligon poveava dubinu senke, dok izlazak iz zapremine senke
smanjuje dubinu senke.
14. Modeliranje gometrijskih formi (krivih i povri)
Geometrijske forme:
Jedan od naina modeliranja geometrijskih formi je korienje skupa primitiva koje su dovoljno proste
za implementaciju na raunaru, ali i dovoljno fleksibilne da se sa njima mogu modelirati objekti iz
realnog sveta. Proste geometrijske forme su:
Taka,
Linijski segmenti
Polilinije,
Poligoni,
Poliedri, itd...
Ove forme se koriste kod konstruisanja tzv. ianog modela sloene geometrijske figure, kao to su
segmenti krivih ili segmentnih povrina.
Taka se specificira sa tri koordinate u prostoru, a linijski segment svojim krajnjim takama.
Polilinija je lanac povezanih linija zadat nizom vorova v0, v1, v2, itd... koji definiu segmente.
Poligon je zatvorena polilinija i takoe se specificira skupom taaka.
iani model se sastoji od ivica i temena. Temena su povezana ivicama a poligon je modeliran
sekvencom temena i ivica. Ovakav iani model se zove poligonalna mrea.
Predstavljanje modela poligonalne mree:
Postoji vie naina za predstavljanje modela. Oni se razlikuju po sledeim parametrima:
Potreban memorijski prostor za smetanje modela.
Lakoa identifikovanja ivica koje su susedne nekom temenu.
Lakoa identifikacije poligona sa zajednikom ivicom.
Lakoa prikaza modela.
Lakoa identifikacije greaka u modelu.
Modeli poligonalne mree:
1)Eksplicitna lista temena.
2)Lista poligona.
3)Eksplicitna lista ivica.
1)Eksplicitna lista temena:
Ovo je najjednostavniji model predstavljanja poligonalne mree. Take se memoriu prema redosledu
obilaska. Ovakav model nije struktuiran i nije efikasan jer dolazi do ponavljanja temena.
Izmena jednog temena dovodi do ogromnog posla...

59

Eksplicitna lista temena:


V = (V1, V2, V3, V4) = ((x1, y1, z1)...(x4, y4, z4))
2)Lista poligona:
Kod ovog modela se svako teme memorie samo jednom a svaki poligon se predstavlja listom
pokazivaa na temena. U memoriji je skup taaka dat sa V=(v0, v1, v2, ...) a poligon se definie listom
pokazivaa na temena: P(pv1, pv6, pv7). Orijentaciju poligona odreuje redosled temena (koristi se
pravilo desne ruke). Na ovaj nain se postie razdvajanje geometrije od topologije. Geometrija
odreuje lokaciju temena, dok topologija odreuje organizaciju temena i ivica u poligone. Kod ovog
modela, topologija ostaje ista ukoliko se geometrija menja.

3)Eksplicitna lista ivica:


Zajedniko za oba prethodna modela viestruko iscrtavanje zajednikih ivica, kao i oteano
pronalaenje zajednikih ivica. Zbog toga se uvodi model eksplicitne liste ivica. Pored liste temena
uvodi se i lista ivica gde se svaka ivica memorie samo jednom i sadri pokazivae na poligone kojima
pripada ili pak na take koje je sainjavaju. Poligon se zadaje listom pokazivaa na listu ivica. Kod ovog
naina ivice se iscrtavaju samo jednom. Meutim, i ovde je teko pronai zajednika temena i ivice koje
su susedne nekom temenu. Zbog toga se koriste sloeniji modeli koji koriste relaciju susednosti.

60

Modeliranje krivih i povri:


Za vii nivo modeliranja se koriste:
Krive
Povri
One obezbeuju vii nivo realistinosti modela.
Modeliranje krivih:
Analitiki izraz za izvornu krivu je obino nepoznat. Ono to moe biti poznato je:
koordinate u nekim takama (ali ne svim)
nagibi, zakrivljenost ili izvijanje u nekim takama
Ukoliko imamo n+1 taku, koje su obeleene sa P0, P1, ... Pn kroz koje treba povui krivu, moemo
koristiti:
interpolaciju - Koristi kada elimo rekonstruisati originalnu krivu koja mora proi kroz zadate take.
aproksimaciju - Koristi se kada se eli postii estetski efekat tako to se neka kriva aproksimira nekom
pravilnijom krivom (sa blaim promenama). U tom sluaju kriva treba da proe u blizini zadatih taaka.

Osnovni tipovi krivih:

Onovni principi prikaza krivih:


Zajedniko za sve naine predstavljanja krivih su sledee karakteristike:
Kontrolne take (Control points) su uobiajeni nain za interaktivnu kontrolu delova krive. Naime,
definiu se sve take kroz koje mora da proe kriva, ili se definiu neke take koje po odreenoj
zavisnosti utiu na oblik krive.

Vieznane vrednosti - u opem sluaju oblik krive ne predstavlja grafik jednoznano odreene
funkcije jedne promenljive, ve moe imati vieznane vrednosti.

61

Nezavisnost od koordinatnog sistema - oblik krive ne bi smeo da se promeni kada se kriva prebaci iz
jednog u drugi koordinatni sistem.
Globalna i lokalna kontrola - kada se promeni poloaj jedne od kontrolnih taaka, kriva sa lokalnom
kontrolom menja oblik samo u blizini te kontrolne take, dok kriva sa globalnim kontrolnim takama
menja oblik u celini.

Varijacije izmeu kontrolnih taaka Algoritam za crtanje krive mora obezbediti da izraunata kriva
nema vie prevojnih taaka od izvorne krive.
Treba smanjiti titranje krive...

Mogunost dodavanja i brisanja kontrolnih taaka - Omoguava preciziranje krive kao i interaktivnost
algoritma za crtanje krive.
Granini uslovi (kontrola reda neprekidnosti) - esto se kod crtanja krivih koristi spajanje veeg broja
segmenata krivih. Od algoritma za crtanje se moe da zahteva da zadovolji granine uslove u takama
spoja segmenata krive. Postoji nekoliko tipova neprekidnosti:
1) C0 - Neprekidnost nultog reda. Poetna taka narednog segmenta je krajnja taka prethodnog
segmenta.

2) C1 - Neprekidnost prvog reda. Rezultujua kriva ima jedinstvenu tangentu u taki spajanja (isti prvi
izvod).

3) C2 - Neprekidnost drugog reda. Rezultujua kriva ima jedinstvenu krivinu u taki spajanja (isti prvi i
drugi izvod).

4) C3 - Neprekidnost treeg reda. Dobija se kontinuitet u izvijanju (ista vrednost treeg izvoda).

62

Pored C neprekidnosti (kontinuiteta) postoje i takozvani G kontinuiteti koji zahtevaju proporcionalnost.

Vano je napomenuti da C1 direkno implicira G1, osim kada jevektor tangente [0 0 0]. Kod C1 je
mogua promena smera krive, dok kod G1 nije.
Analitiko predstavljanje krivih:
Eksplicitni oblik
Implicitni oblik
Parametarski oblik
1)Eksplicitni oblik:
Primer eksplicitnog zadavanja je:

2)Implicitni oblik
Primer implicitnog zadavanja je:

3)Parametarski oblik:
Primer parametarskog zadavanja je:

Taka se moe izraziti u vektorskom obliku:


63

Prednosti parametarskog predstavljanja krivih:


1. Mogunost predstavljanja krivih koje nemaju poznatu matematiku definiciju.
2. Sve koordinate se tretiraju na isti nain.
3. Mogunost izraunavanja vieznanih vrednosti krivih.
4. Razlika pri generisanju krive u 3D u odnosu na 2D se svodi samo na dodatno izraunavanje z(t).
Parametarsko predstavljanje:
Oblik bazinih funkcija x(t), y(t), z(t) treba da bude to jednostavniji i ba ovaj uslov ispunjavaju
polinomi. Najjednostavniji polinom koji omoguava predstavljanje vieznanih vrednosti krive kao i
njenih prevojnih taaka je kubni polinom.
Kubni polinom:
Kubni polinom koji opisuje deo krive:

Matrini izgled ovih parametarskih funkcija je sledeeg oblika:

T je matrica vrednosti parametara, a C je matrica krive. Odavde se lako moe izraunati matrica C kao:
C=T-1P(t)
Napomena: matrica je dimenzija 4x4 jer se radi o homogenim koordinatama.
Krive koje se najee koriste:
Bezierove krive
B-splajnovi
NURBS krive
Bezierove krive:
Postupak pod nazivom krive Beziera nezavisno su razvili Bezier 1962. godine u Renault-u i De
Casteljau
1959. godine u Citroen-u. Ta tehnika je bila polazna taka u njihovim istraivanja za CAD sisteme. De
Casteljau je direktno koristio Bernstein-ove polinome do 1970. Tada je Forest otkrio vezu izmeu
Berntajnovih polinoma i Bezierovog rada. Bezier objavljuje svoj rad i krive dobijaju ime po njemu. Ove
64

krive se generiu za skup kontrolnih taaka PiR3 za i [0,n], koje se nazivaju kontrolne take, na
sledeinain (t [0,1]):

Svaki od polinoma je stepena n. Q(t) je takoe stepena n


Bezierove krive (primeri)

Bezierova kriva prolazi kroz poetnu i krajnu taku dok pored ostalih krajnjih taaka samo prolazi.
Primer Bezierovog polinoma za n=3:

Karakteristike Bezierovih krivih:


1. Postoji takozvana konveksna ljuska (hull) - obrazuju je kontrolne take.
2. Kriva nema vie krivina od kontrolnog poligona. Broj preseka ravni sa krivom je uvek vei ili jednak
od broja preseka ravni i kontrolnog poligona.
3. Nije ispunjena lokalna kontrola.
4. Broj kontrolnih taaka je direktno u vezi sa stepenom krive.
5. Nezavisnost od transformacija (translacija, rotacija, skaliranje).
6. Simetrinost - simetrinim zamenjivanjem redosleda kontrolnih taaka, ne menja se oblik krive.
B-splajnovi (B-spline):
B-elastina kriva ima osobine elastine letve. Odatle joj i naziv spline. B-spline stepena j se
konstruie na osnovu kontrolnih taaka Pi R3 i monotonog skupa parametara ti ( ti ti+1) koji se zovu
knotovi

(knots) za i u intervalu od 0 do n kao:


U ovoj formuli promenljiva t je u opsegu od t0 do tn. Skup ovih vrednosti u vektorskom obliku [t0 tn]
se naziva knot-vektor. to se promenljive j tie, ona je u opsegu od 1 do n.
Realni polinom Bi,j(t) stepena j je definisan Cox de Boor-ovom rekurzivnom formulom:

65

Ukoliko su knot intervali ravnomerno rasporeeni (ti+1- ti=const) onda se radi o uniformnim B-Splineovima. U suprotnom sluaju su u pitanju neuniformni B-splajnovi.
Karakteristike B-splajnova:
1. Kriva lei unutar konveksne ljuske (hull)
2. i-ti segment se nalazi unutar konveksne ljuske pripadajuih kontrolnih taaka.
3. Postoji lokalna kontrola. Pomeranje jedne take utie najvie na dva segmenta.
NURBS krive:
Ime dolazi od skraenice: Non Uniform Rational B Spline. Ove krive se dobijaju iz neuniformnih B
splajnova.
Kontrolne take su (Pi,1) koje su iz prostora R4 za i u intervalu od 0 do n. Uvode se i teine wi koje su
uvek pozitivni brojevi. Kriva se definie kao:

Bi,j je ranije definisani polinom kod B-splajnova.


(Y(t),w(t)) se tretira kao homogeni vektor.
Deljenjem sa w(t), dobija se projekcija u tri dimenzije:

Modeliranje povri:
Povri se definiu kao skup geometrijskih mesta taaka koji nastaje kretanjem i deformacijom neke
krive u prostoru. Modeliranje i aproksimacija krivih povri je vrlo sloena. Za predstavljanje krivih povri
se koristi:
Vodea ili kontrolna mrea (guiding nets)
Segmenti povri (patch-evi)
1) Vodea mrea je 3D poligonalna mrea sa temenima Pij(xij, yij, zij),
i=0,,m; j=0,,n.
2) Segment povri (patch) je deo povrine koji je omeen sa 4 krive.
Analitiko predstavljanje povri:
Eksplicitni oblik
Implicitni oblik
Parametarski oblik
1) Eksplicitni oblik
Primer eksplicitnog zadavanja je:

2)Implicitni oblik
Primer implicitnog zadavanja je:
66

3)Parametarski oblik
Primer parametarskog zadavanja je:
x = f(s, t)
y = g(s, t)
z = h(s, t)
0 s < 1, 0 t < 1
Patch:
Patch se obino zadaje preko vektorske funkcije:

Taka na povrini se dobija kao:

Svaki patch karakteriu:


4 ugla,
8 tangentnih vektora u uglovima i
4 vektora izvijanja

Primer Patch-a:
Pravougaonik u ravni x-y:

Povri koje se najee koriste


Bezierove povri
B-splajn povri
NURBS povri
1)Bezierove povri
Bezier-ove povri se formiraju od Bezier-ovih patch-eva definisanih na sledei nain:
Za pravougaonu reetku kontrolnih taaka za i0 [0,n0] i i1 [0,n1], Bezierov patch je definisan sa:

67

U definiciji se podrazumeva da je s,t [0,1]. Takoe, koeficijenti B u sumi predstavljaju Bernstein-ove


polinome koji se izraunavaju na osnovu sledee formule:

2)B-spline povri
B-spline povri se formiraju od B-spline patcheva definisanih na sledei nain:
Za pravougaonu reetku kontrolnih taaka za i 0 [0,n0] i i1 [0,n1], i monotone skupove {si} i {tj}, i
[0,n0] i j [0,n1] i si si+1, i ti ti+1, B-spline patch je definisan sa:

U definiciji se podrazumeva da je s [s0,sn0], t [t0,tn1], j0 [1,n0], j1 [1,n1]. Takoe, polinomi


zadovoljavaju takozvane Cox de Boor-ove formule:

U zavisnosti od toga da li parametri s i t imaju uniformnu raspodelu (ravnomerno su rasporeeni) ili ne,
B spline povri mogu biti uniformne ili neuniformne. Prednost B-spline povri u odnosu na Bezier-ove
je postojanje lokalne kontrole. Naime pomeranje jedne kontrolne take utie samo na one patch-eve
koji su u okolini te take.
3)NURBS povri
NURBS povri se dobijaju iz neuniformnih Bspline povri u etvorodimenzionalnom prostoru.
Za skup kontrolnih taaka (Pi0, i1, 1) R4 za i0 [0,n0] i i1 [0,n1], sa teinama wi0,i1>0, NURBS patch je
definisan sa:

NURBS patch
U prethodnoj definiciji, koeficijenti B su definisani isto kao i kod B-spline povri. NURBS patch u
trodimenzionalnom prostoru se dobija na taj nain, to se (Y(s,t),w(s,t)) tretira kao homogeni vektor i
deljenjem sa w(s,t) se dobija projekcija u tri dimenzije. Dobija se:

68

Koeficijenti R se raunaju na sledei nain:

Prednost NURBS povri u odnosu na prethodne je postojanje teina za svaku kontrolnu taku, ime se
definie njen uticaj na oblik povri. Inae, sve prethodno pomenute povri se karakteriu mogunou
da se njima predstavljaju vrlo glatke povrine u realnom vremenu.

69

You might also like