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 1
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 2
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 3
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 4
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 5 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 6 Vektorska grafika
Računarska grafika i animacija 7
Vektorska grafika
Računarska grafika i animacija 8
Vektorska grafika
Računarska grafika i animacija 9
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 10
Vektorska grafika - Vektor
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 Skalarni i vektorskiproizvoddvasutemeljnaoperatoralinearnealgebre , i kaotakvičinenezaobilazanalatračunarskegrafike. Skalarni proizvod je operacijakojakaorezultatmnoženjadvajuvektoradajeskalar (broj). Npr. zavektore i može se skalarniproizvoddefinisatijednostavnimizrazom:
Gdje je θ ugao između vektora, a a i b njegovi iznosi.
Računarska grafika i animacija 14
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 vektorpiše se kao , a izos mu je:
Računarska grafika i animacija 15
Vektorska grafika - Vektor
Računarska grafika i animacija 16
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.
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 19
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).