You are on page 1of 53

Računarska grafika i animacija

Mr. Sc. Merima Malkočević, dipl.ing.el.


Vektorska grafika
 Slika kod vektorske grafike se formira pomoću
geometrijskih objekata, kao što su tačke, linije, krive,
poligoni, ili krive koje se temelje na matematičkim
funkcijama.
 Ti se geometrijski objekti nazivaju primitivi.

Računarska grafika i animacija 2


Vektorska grafika
 Na primjer, za modeliranje kruga poluprečnika "r",
potrebne su sljedeće informacije:
 Informacija o tome da se namjerava nacrtati krug (a ne neki
drugi primitiv)
 Poluprečnik "r"
 Koordinate tačke za centar kruga
 Stil, debljina i boja linije
 Stil i boja unutrašnjosti kruga.

Računarska grafika i animacija 3


Vektorska grafika
 Prednosti ovakve definicije u odnosu na rastersku grafiku
su:
 Minimalna količina informacija zahtijeva znatno manju veličinu
datoteke u odnosu raster sliku (veličina ne zavisi od dimenzija
slike)
 Može se neograničeno zumirati na dio kruga, a da rub kruga
ostaje gladak. Kod rasterske slike sa zumiranjem dolazi do
pojave "nazubljenosti" ruba, odnosno pikseli postaju vidljivi
kao kvadrati.
 Parametri objekata ostaju pohranjeni i mogu se naknadno
mijenjati. To znači da translacija, skaliranje, rotacija, promjena
boje unutrašnjosti i sl. ne degradiraju kvalitet crteža.

Računarska grafika i animacija 4


Vektorska grafika
 Tipični objekti koji se koriste kao 2D primitivi obuhvataju:
 Duži (linije),
 Višestruke segmente povezanih linija (polyline),
 Poligone (pravougaonik, trougao, trapez i sl.),
 Krugove i elipse,
 Bézierove krive i tekst (različiti fontovi, gdje se svako slovo
formira od Bézierovih krivih).
 Nekad se i rasterske slike koriste kao primitivi, a u relaciji s
drugim objektima ponašaju se kao pravougaoni poligoni.

Računarska grafika i animacija 5


Vektorska grafika
 Vektorska grafika omogućava transformacije objekata kao što
su:
 Translacija,
 Rotacija,
 Simetrično preslikavanje (mirror),
 Skaliranje,
 Kombinovanje primitiva u složenije objekte.
 Često se koriste tehnike kao što je odsijecanje linija do neke
granice (trim), koso obaranje ivica (chamfer), obaranje ivica
radijusom (fillet), te matematičke operacije nad likovima kao
što su presjek, unija i razlika.
 Jednom kreirani objekti se mogu kopirati, od njih se mogu
praviti višestruke pravilno raspoređene kopije (pattern), te
koncentrične
Računarska kopije (offset).
grafika i animacija 6
Vektorska grafika - Tačka
 Tačka je svojstvo prostora (element prostora; osnovna gradivna
nedjeljiva cjelina).
 Označavanje tačke zavisi o prostoru u kojem se ta tačka nalazi. Ono
osnovno što određuje način označavanja tačke jest
dimenzionalnost prostora.
 Svaka tačka označena je svojim koordinatama, i to s toliko
koordinata kolika je dimenzija prostora.
 Tako će tačka u 2D prostoru biti označena pomoću dvije
koordinate: x i y.
 U 3D prostoru tačka će biti označena pomoću tri koordinate: x, y i
z.
 U nastavku ćemo tačke označavati kao uređene n-torke
koordinata, npr. (x, y, z)
Računarska grafika i animacija 7
Vektorska grafika

Računarska grafika i animacija 8


Vektorska grafika

Računarska grafika i animacija 9


Vektorska grafika

Računarska grafika i animacija 10


Vektorska grafika - Vektor
  
Vektor ćemo promatrati kao usmjerenu dužinu.
 Vektor će nam obično služiti kao gradijent, tj. pokazatelj
koji govori za koliko se nešto mijenja.
 Zapis vektora, isto kao i tačke zavisi o prostoru u kojem se
taj vektor opisuje, te će imati onoliko komponenti kolika
je dimenzionalnost prostora.
 Zbog toga ćemo vektore također zapisivati kao uređene n-
torke, npr. = (x,y,z).

Računarska grafika i animacija 11


Vektorska grafika - Vektor

Računarska grafika i animacija 12


Vektorska grafika - Vektor

Računarska grafika i animacija 13


Vektorska grafika - Vektor

Računarska grafika i animacija 14


Vektorska grafika - Vektor
  
Skalarni i vektorski proizvod dva su temeljna operatora
linearne algebre, i kao takvi čine nezaobilazan alat
računarske grafike.
 Skalarni proizvod je operacija koja kao rezultat množenja
dvaju vektora daje skalar (broj). Npr. za vektore  i  može se
skalarni proizvod definisati jednostavnim izrazom:

 Gdje je θ ugao između vektora, a a i b njegovi iznosi.

Računarska grafika i animacija 15


Vektorska grafika - Vektor
  
Vektorski proizvod je operacija koja kao rezultat množenja
dvaju vektora (npr. vektora  i ) daje treći vektor, smjera
koji je okomit na smjerove vektora koje množimo, a
orijentaciju mu određuje pravilo desne ruke.
 Rezultantni vektor piše se kao , a izos mu je:

Računarska grafika i animacija 16


Vektorska grafika - Vektor

Računarska grafika i animacija 17


Vektorska grafika - Interpolacija
 U računarskoj grafici često se koriste interpolacije.
Primjerice, pri animaciji nekog objekta želimo brzinu
kojom se objekt kreće smanjiti od početne do konačne u
nekoliko koraka, ili pak želimo objekt pomaknuti od jedne
pozicije do druge pozicije ali tako da se dobije dojam
kontinuiranog kretanja i slično. U svim tim situacijama
imamo zadanu početnu i konačnu vrijednost, i naš je
zadatak pronaći niz međuvrijednosti.
 Ovisno o potrebama, interpolaciju možemo raditi na
različite načine.

Računarska grafika i animacija 18


Vektorska grafika - Interpolacija
 Linearna interpolacija
 Interpolacija kubnim polinomima
 Bilinearna interpolacija
 Interpolacija vektora

Računarska grafika i animacija 19


Vektorska grafika - Interpolacija
 Linearna interpolacija koristi se za interpolaciju između dvije vrijednosti koje
smo označavali s x0 i x1.
 U praksi se, međutim, često javlja problem interpolacije između četiri
vrijednosti, odnosno preciznije bi bilo reći između dva para vrijednosti.
 Primjer: Pravimo program za renderiranje 3D modela s potporom za ljepljenje
tekstura na objekte. Kao teksturu smo uzeli sliku pepsi.png - to je slika
dimenzija 100 × 400 koja prikazuje limenku pepsi-cole u 256 nijansi sive boje.
 Naša scena se sastoji od jednog valjka na koji je potrebno zalijepiti ovu
teksturu kako konačni rezultat ne bi bio jednobojni valjak već valjak koji
izgleda kao limenka pepsi-cole.
 Potom smo pokrenuli generiranje visokorezolucijskog prikaza naše scene.
Prilikom renderiranja, program je utvrdio da slikovnom elementu ekrana na
poziciji (352, 692) odgovara element teksture s koordinatama (29.75, 140.25).
Postavlja se pitanje – koju ćemo vrijednost slikovnog elementa iz slike
teksture uzeti za popunjavanje odabranog slikovnog elementa zaslona?

Računarska grafika i animacija 20


Vektorska grafika - Interpolacija
 Da su kojim slučajem koordinate u teksturi ispale cjelobrojne, primjerice (29,
140), mogli bismo bez razmišljanja uzeti vrijednost tog slikovnog elemenata.
Međutim, to se nije dogodilo. Jedno moguće rješenje problema je postupiti
na sljedeći način: zaokružimo dobivene koordinate (29.75, 140.25) → (30,
140) i očitajmo boju slikovnog elementa na tim koordinatama u teksturi.
 Nažalost, kako zaokruživanje tipično vodi do nazubljenog prikaza i niza drugih
problema, bolje je rješenje boju konstruirati interpolacijom. Kako je x
koordinata s kojom ulazimo u teksturu 29.75, nalazimo se između slikovnog
elementa koji ima x = 29 i slikovnog elementa koji ima x = 30; isto tako, kako
je y koordinata s kojom ulazimo u teksturu 140.25, nalazimo se između
slikovnog elementa koji ima y = 140 i slikovnog elementa koji ima y = 141.
 Oko pogođene lokacije imamo dakle 4 slikovna elementa: (29, 140), (30, 140),
(29, 141) i (30, 141). Za svaki od tih slikovnih elemenata u teksturi možemo
pročitati boju (odnosno u našem slučaju gdje radimo s 256 nijansi sive,
možemo pročitati pridruženi intenzitet sive).

Računarska grafika i animacija 21


Vektorska grafika - Interpolacija
 Ideja bilinearne interpolacije je sljedeća:
 Pogledajmo intenzitete lijevog i desnog slikovnog elementa za y =
140 i izračunajmo linearnu interpolaciju tog intenziteta. Označimo
parametar kojim radimo interpolaciju po horizontali s u. Pri tome
u = 0 odgovara intenzitetu lijevog slikovnog elementa, a u = 1
odgovara intenzitetu desnog slikovnog elementa. Konkretna
vrijednost parametra u u primjeru je 0.75 (na tri smo četvrtine
puta od 29. do 30. slikovnog elementa).
 Osim lijevog i desnog para slikovnih elemenata na y = 140, u
teksturi imamo i lijevi i desni slikovni element na y = 141.
 Napravimo stoga linearnu interpolaciju intenziteta lijevog i desnog
slikovnog elementa koje imamo za y = 141. Time smo dobili dvije
interpolirane vrijednosti: jednu za y = 140 a drugu za y = 141.

Računarska grafika i animacija 22


Vektorska grafika - Interpolacija
 Da bismo dobili konačnu vrijednosti, sada trebamo
napraviti linearnu interpolaciju između tih dviju vrijednosti
promatrajući naš položaj na y-osi.
 Označimo s v parametar koji predstavlja interpolaciju po
vertikali. Neka v = 0 odgovara interpoliranoj vrijednosti
koju smo dobili za y = 140 te neka v = 1 odgovara
interpoliranoj vrijednosti koju smo dobili za y = 141.
 U prosmatranom primjeru, v = 0.25 jer se nalazimo na
jednoj četvrtini puta od y = 140 do y = 141. Konačna
vrijednost je dakle linearna interpolacija između rezultata
dviju linearnih interpolacija – stoga i naziv: bilinearna
interpolacija
Računarska grafika i animacija 23
Vektorska grafika - Interpolacija

Računarska grafika i animacija 24


Vektorska grafika - Transformacije
 Afine transformacije su transformacije koje čuvaju
kolinearnost i omjere udaljenosti, i čine općenitiju
kategoriju od linearnih transformacija.
 Čuvanje kolinearnosti ima za posljedicu da će tri različite
tačke A, B i C koje su u originalnom prostoru kolinearne i
nakon transformacije u tačke A′ , B′ i C′ ostati kolinearne
(ležat će na istom pravcu).
 Drugo svojstvo nam govori i da će omjeri udaljenosti tih
tačaka ostati nepromijenjeni, tj: d(A, B)/d(A, C) = d(A′ , B
′ )/d(A′ , C′ ), gdje je d(X, Y ) funkcija koja vraća udaljenost
tačaka X i Y .

Računarska grafika i animacija 25


Vektorska grafika - Transformacije
 Afine transformacije čuvaju i paralelnost.
 Linije koje su u originalnom prostoru paralelne ostat će
paralelne i nakon transformacije.
 Međutim, afine transformacije ne čuvaju uglove niti
stvarne dužine. Naime, afinom transformacijom bilo koji
trokut moguće je preslikati u bilo koji drugi trokut –
posljedica je da se uglovi u trokutu kao niti dužine
stranica ne moraju očuvati.
 Afine transformacije obuhvaćaju sve linearne
transformacije kao i neke druge, npr. pomak.

Računarska grafika i animacija 26


Vektorska grafika - Transformacije
 Euklidske transformacije su posebna vrsta afinih
transformacija.
 Euklidska transformacija je afina transformacija oblika
E(v) = L(v)+p, gdje je L ortogonalna linearna transformacija.
 Euklidska transformacija kao posebna vrsta afine
transformacije ima sve osobine afine transformacije.
 Dodatno, kako je E(u−v) = L(u−v) i kako je L ortogonalna
linearna transformacija, E čuva dužine segmenata i uglove
između dva linijska segmenta.
 Drugim riječima, pravougaoni trokut dužina stranica 9, 12 i 15
i nakon Euklidske transformacije ostat će pravougaoni, s
upravo tim dužinama stranice.

Računarska grafika i animacija 27


Vektorska grafika - Transformacije
 Kako bi ove osobine bile zadovoljene, na opći oblik afine
transformacije već smo postavili jedno ograničenje – L
mora biti ortogonalna linearna transformacija.
 Postavljanjem daljnjih ograničenja na L i p dolazi se do tri
moguće vrste Euklidske transformacije:
 Translacija
 Rotacija
 Refleksija

Računarska grafika i animacija 28


Vektorska grafika - Translacija
 Translacija je transformacija koja svakoj komponenti tačke
u radnom prostoru dodaje određeni pomak.
 Tačka T translatira se u tačku T ′ . Postupak translacije
može se opisati sljedećim jednačinama u radnom
prostoru:

 gdje su Tx i Ty komponente tačke T a T ′ 1 i T ′ 2


komponente tačke T ′.

Računarska grafika i animacija 29


Vektorska grafika - Transformacije

Računarska grafika i animacija 30


Vektorska grafika - Rotacija
 Rotacija je transformacija koja tačku rotira oko ishodišta
za zadani ugao φ.

Računarska grafika i animacija 31


Vektorska grafika - Rotacija

Računarska grafika i animacija 32


Vektorska grafika - Skaliranje
 Skaliranje je transformacija koja "skalira" (rasteže ili steže)
svaku komponentu tačke. Pri tome je skaliranje svake
komponente određeno faktorom skaliranja, pri čemu
faktori ne moraju biti isti za sve komponente. Ako je to
slučaj, tada govorimo o neproporcionalnom skaliranju.
Ako su faktori skaliranja jednaki za sve komponente, tada
govorimo o proporcionalnom skaliranju.

Računarska grafika i animacija 33


Vektorska grafika - Skaliranje

Računarska grafika i animacija 34


Vektorska grafika - Skaliranje

Računarska grafika i animacija 35


Vektorska grafika - Smicanje
 Smicanje je "uzdužna" deformacija čije je djelovanje
prikazano na slici na primjeru smicanja na kvadrat.
 Djelovanje smicanja sastoji se od deformacije uzduž osi x i
deformacije uzduž osi y te se opisuje uglovima α i β.

Računarska grafika i animacija 36


Vektorska grafika - Smicanje

Računarska grafika i animacija 37


Vektorska grafika - Smicanje

Računarska grafika i animacija 38


Vektorska grafika
 Skaliranje, rotacija, refleksija, smicanje i translacija

Računarska grafika i animacija 39


Vektorska grafika - Bézier krive
 Nazvane su po Pierreu Bézieru koji ih je koristio u dizajnu
automobila u Renaultu.
 Koriste se u računarskoj grafici za modelovanje glatkih
krivih, animaciji za definisanje putanja po kojima se
objekat kreće, tipografiji za specifikaciju oblika znakova.
 Bézier krive su glatke krive koje mogu biti određene
uređenim skupom kontrolnih tačaka, prva i zadnja
kontrolna tačka su krajnje tačke krive.

Računarska grafika i animacija 40


Vektorska grafika - Linearne Bézierove krive
 Bezierova kriva 1 stepena:
 Ako su nam date dvije kontrolne tačke P0 i P1, linearna
Bezierova kriva je jednostavna ravna crta između te dvije
tačke.
 Kriva je jednaka linearnoj interpolaciji i data pomoću:

Računarska grafika i animacija 41


Vektorska grafika - Kvadratne Bézierove krive
 Bézierova kriva 2 stepena:
 Kvadratna Bézierova kriva je putanja praćena
funkcijom B(t), kontrolne tačke su P0, P1, i P2,

 Kvadratna Bézierova kriva je i dio parabole

Računarska grafika i animacija 42


Vektorska grafika - Kubne Bézierove krive
 Bézierova kriva 3 stepena:
 Četiri kontrolne tačke P0, P1, P2 i P3 u ravni ili
trodimenzionalnom prostoru definišu kubnu Bézierovu
krivu.

 Četiri kontrolne tačke: dvije krajnje tačke i dvije tačke


pravca.
 Zakrivljenost Bézier krive određuje se pomoću dužine,
pravca i smjera duži pravca koje spajaju krajnje tačke i
tačke pravca.

Računarska grafika i animacija 43


Vektorska grafika - Kubne Bézierove krive

Računarska grafika i animacija 44


Vektorska grafika
 Kombinovanjem segmenata Bézier krivih kreiraju se
putanje (zatvorene i otvorene)

Računarska grafika i animacija 45


Vektorska grafika
 Otvorena (lijevo) i zatvorena (desno) putanja

Računarska grafika i animacija 46


Vektorska grafika
 Ako se dvije krive nadovezuju u nekoj tački i duži pravca u
toj tački formiraju jednu duž, nadovezivanje će biti glatko.
Ako to nije slučaj formiraće se ugaona tačka.
 Tačke u kojima se segmenti krive nadovezuju su čvorne
tačke putanje.

Računarska grafika i animacija 47


Vektorska grafika
 Putanja mora imati boju i debljinu linije (stroke) da bi bila
vidljiva.
 Za unutrašnjost zatvorene putanje se može definisati
boja, gradijent i uzorak (pattern).
 Postoji “pravilo popunjavanja” za određivanje šta pripada
unutrašnjosti putanje
 Pravilo popunjavanja (fill rule) je algoritam koji se koristi da se
odredi koja strana putanje je unutrašnja za dati oblik

Računarska grafika i animacija 48


Vektorska grafika
 Linearno (gore) i radijalno (dole) gradijentno opunjavanje.

Računarska grafika i animacija 49


Vektorska grafika
 Popunjavanje kompleksnih oblika

Računarska grafika i animacija 50


Vektorska grafika
 Krive se obično konstruišu povezivanjem krajeva više manjih
segmenata.
 Kontinuitet je pojam kojim se opisuju pravila o povezivanju
pojedinih segmenata.
 C0 je kontinuitet linije (segmenti imaju samo zajedničku tačku),
 C1 je tangentni kontinuitet (segmenti imaju i zajednički smjer
tangente; prvi izvod polinoma daje jednačinu tangente),
 C2 je kontinuitet drugog izvoda (i drugi izvod u tački spajanja je
isti za oba segmenta, tako da tangente imaju isti intenzitet i
smjer).
 Da bi se osigurao C2 kontinuitet, krive moraju biti najmanje
trećeg reda i zbog toga se za modeliranje koriste kubni
polinomi.
Računarska grafika i animacija 51
Vektorska grafika

Računarska grafika i animacija 52


Vektorska grafika
 Primjeri standardnih vektorskih formata su:
 CGM (Computer Graphics Metafile),
 SVG (Scalable Vector Graphics),
 EPS (Encapsulated PostScript),
 SWF (Shockwave Flash),
 PDF (Portable Document Format),
 WMF/EMF (Windows Metafile/Enhanced Metafile),
 kao i brojni formati koji su nisu univerzalni, nego su vezani za komercijalni
softver, kao što su:
 CDR (CorelDraw),
 DWG (AutoCAD),
 AI (Adobe Illustrator).
 Za pohranjivanje vektorske 3D grafike koriste se standardni univerzalni
formati kao što su:
 IGES (Initial Graphics Exchange Specification),
 STEP (STandardized Exchange of Product),
 STL (StereoLiTography).
Računarska grafika i animacija 53

You might also like