1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA...

58
ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala slike za vreme trajanja jedne horizontalne linije (t H ) t HFP : horizontal front porch time t HBP : horizontal back porch time t HB : horizontal blanking time t HA : horizontal active time t H : horizontal time

Transcript of 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA...

Page 1: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 1 od 58

1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala slike za vreme trajanja jedne horizontalne linije (tH)

tHFP : horizontal front porch time tHBP : horizontal back porch time tHB : horizontal blanking time tHA : horizontal active time tH : horizontal time

Page 2: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 2 od 58

1. Zadatak

Date su sledeće karakteristike monohromatskog monitora: - horizontalna frekvencija: fH = 22.7kHz - vertikalna frekvencija: fV = (43-50.7)Hz - minimalno vreme zamračenja (blanking):

- horizontalnog: tHB(min) = 9μs - vertikalnog: tVB(min) = 1000μs

- tipično vreme zamračenja (blanking): - horizontalnog: tHB(typ) = 12μs - vertikalnog: tVB(typ) = 2112μs

- tipično trajanje prednje stepenice (front porch) zamračenja: - horizontalnog: tHFP(typ) = 4μs - vertikalnog: tVFP(typ) = 528μs

- tipično trajanje sinhronizacije: - horizontalnog: tHS(typ) = 2μs - vertikalnog: tVS(typ) = 528μs

- tipično trajanje zadnje stepenice (back porch) zamračenja: - horizontalnog: tHBP(typ) = 6μs - vertikalnog: tVBP(typ) = 1056μs

- tipitčno aktivno vreme horizontalne linije: tHA(typ) = 32μs

i releventni podaci za kontroler grafičkog displeja (GDC): - širina reči W = 16 bita, - GDC generiše paran broj aktivnih reči po liniji, - ako je tWD vreme prikazivanja jedne reči, ograničenja kod horizontalnog zamračenja su sledeća:

tHFP ≥ 2 tWD; tHS ≥ 3 tWD; tHBP ≥ 3 tWD; Za odnos širina/visina ekrana (aspect ratio) A.R = 4/3, radnu vertikalnu učestanost fV = 50Hz i sliku (Frame) koja se generiše bez protkivanja (non-interlaced), odrediti: a) broj aktivnih linija AL i aktivnih piksela AP b) učestanost taktnog signala za prikazivanje piksela (pixel ili dot clock) fpix c) stvarne vrednosti za tHFP, tHS, tHBP, i tVFP, tVS, tVBP

Literatura: “82720/GDC Application Manual”, Intel Corp.

REŠENJE:

a) Broj aktivnih linija (AL) slike jednak je razlici ukupnog broja linija (TL) i broja linija u vertikalnom zamračenju (BL):

AL = TL-BL Pošto se slika (frame) generiše bez protkivanja, ona se sastoji iz samo jednog video-polja (field) pa je ukupni broj linija:

4541

1

===

H

V

LINE

FIELD

f

fttTL

Page 3: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 3 od 58

Broj linija u vertikalnom zamračenju je: BL = VFP + VS + VBP

Pošto je perioda linije (sweep time):

sf

tH

LINE μ053.441==

broj linija u prednjoj stepenici vertikalnog zamračenja je:

⎡ ⎤ 1298.11)( ==⎥⎥

⎤⎢⎢

⎡=

LINE

typVFP

tt

VFP

(Uzima se veća celobrojna vrednost da bi tajming bio “robusniji”, tj. da vreme potrebno za vertikalni zamračeni povratak elektronskog malza ne bi bilo prekratko) Po analogiji: VS = 12, VBP = 24, pa je broj linija u zamračenju:

BL = 12 + 12 + 24 = 48, a broj aktivnih linija:

AL = 454-48 = 406 Da bi širina i visina pikela bili približne veličine, uzima se da je približan broj piksela po liniji:

AP(approx) = A.R. ⋅ AL = 541.33 Broj aktivnih reči po liniji je:

AW(approx) = AP(approx) / W = 33.83 Prema uslovu zadatka, AW mora biti paran broj, pa se uzima najbliža parna vrednost: AW=34. Tačan broj piksela po liniji je:

AP = AW ⋅ W = 34 ⋅ 16 = 544

b) Učestanost taktnog signala za prikazivanje piksela je:

WDpixpix t

Wt

f ==1

Vreme prikazivanja reči izračunava se kao:

TWt

t LINEWD =

gde je TW ukupan broj reči u liniji: TW = AW + BW

Aktivan broj reči AW je određen u tački (a) i iznosi AW = 34, a broj reči u horizontalnom zamračenju BW se može proceniti na sledeći način:

⎥⎥⎥

⎢⎢⎢

⎡=

)(

)(

approxWD

typHB

tt

BW

gde se približna vrednost vremena prikazivanja reči izračunava kao:

nsAW

tt typHA

approxWD 176.941)()( ==

Sledi:

⎡ ⎤ 1375.12 ==BW , (BW > 2 + 3 + 3 = 8) TW = 34 + 13 = 47

tWD = 937.298ns fpix = 17.070347MHz

Page 4: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 4 od 58

Naravoučenije: 1. Broj aktivnih linija (AL) koji određuje vertikalnu (Y) rezoluciju ekrana direktno je proporcionalan

horizontalnoj učestanosti (fH) za datu vertikalnu učestanost (fV) prikazivača. 2. Broj aktivnih piksela (AP) koji određuje horizontalnu (X) rezoluciju ekrana direktno je proporcionalan

učestanosti taktnog signala za prikazivanje piksela (fpix) za datu horizontalnu učestanost (fH) prikazivača c) Izračunavanje stvarnih vremenskih intervala u zamračenju: Horizontalno zamračenje

Broj reči prednje stepenice:

267.4)()( ==

WD

typHFPapprox t

tHFP

Pošto je tHFP ≥ 2 tWD => HFP = 4 => tHFP = 4 tWD = 3.75μs Broj reči sinhro-impulsa:

13.2)()( ==

WD

typHSapprox t

tHS

Pošto je tHS ≥ 3 tWD => HS = 3 => tHS = 3 tWD = 2.81μs Broj reči zadnje stepenice:

4.6)()( ==

WD

typHBPapprox t

tHBP

Pošto je tHBP ≥ 3 tWD => HBP = 6 => tHBP = 6 tWD = 5.62μs

Vertikalno zamračenje tVFP = VFP ⋅ tLINE = 528.636μs tVS = VS ⋅ tLINE = 528.636μs tVBP = VBP ⋅ tLINE = 1057.272μs

2. Zadatak Dužina reči video memorije iznosi 32 bita. Horizontalna učestanost slike na monitoru iznosi fH=15.504kHz, a vreme horizontalnog zamračenja mlaza tHB=16.5μs. Odrediti učestanost taktnog signala za pomerački registar video memorije (pixel ili dot clock) tako da rezolucija slike bude 1024x512.

REŠENJE:

Perioda linije iznosi:

sf

tH

LINE μ5.641==

Aktivno vreme horizontalne linije je: sttt HBLINEHA μ48=−=

Pošto je horizontalna rezolucija (broj aktivnih piksela po liniji) AP = 1024, vreme za ispisivanje jednog piksela na ekranu je:

nsAPtt HA

pix 875.46==

pa je tražena učestanost: fpix = 21.3MHZ

PROVERA: broj piksela u zamračenju mora biti celobrojni umnožak dužine reči video memorije.

16.5 35248.875

352 1132

HB

pix

t sBPt ns

PBw

μ= = =

= =

Page 5: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 5 od 58

3. Zadatak Rezoluciuja ekrana je 720x348, a učestanost slike fV = 50Hz. Slika se generiše bez protkivanja (non-interlaced). Ako je broj linija u zamreačenju za izmenu slike BL=20, a broj piksela u zamračenju za povratak mlaza sa jedne na drugu liniju BP=16 odrediti učestanost taktnog signala pomeračkog registra video memorije fpix.

REŠENJE:

AL = 348 => TL = AL + BL = 368 AP = 720 => TP = AP + BP = 736

vFIELD f

t 1=

TLtt FIELD

LINE = TPTLfTP

tt

v

LINEpix ⋅⋅

==1

fpix = 13.5424MHZ 4. Zadatak

Na jednom binarno-monohromatskom rasterskom prikazivaču slika se prikazuje bez protkivanja. Vertikalna učestanost slike je fV, horizontalna učestanost fH, a učestanost taktnog signala pomeračkog registra video memorije je fP. Horizontalno zamračenje elektronskog mlaza traje tHB, a vertikalno zamračenje tVB. Odrediti minimalan broj adresnih linija video memorije NAddr ako je adresibilna jedinica video memorije jedan bajt.

REŠENJE:

NAddr = log2 ( AL ⋅ AP / 8) = log2(AL ⋅ AP) – 3 AL = TL – BL AP = TP – BP TL = tV / tH = fH / fV TP = tH / tP = fP / fH

BL = tVB / tH = tVB ⋅ fH BP = tHB / tP = tHB ⋅ fP NAddr = log2 [fH ⋅ (1/ fV - tVB) ⋅ fP ⋅ (1/ fH - tHB)] – 3 5. Zadatak

Vertikalna učestanost slike je fV = 50Hz, horizontalna fH=36.8KHz, a učestanost taktnog signala pomeračkog registra video memorije fpix = 27.0848MHz. Slika se generiše bez protkivanja. Ako je broj linija u vertikalnom zamračenju BL = 11, a broj piksela u horizontalnom zamračenju BP = 16 odrediti horizontalnu i vertikalnu rezoluciju datog ekrana.

REŠENJE:

Horizontalna rezolucija je: AP = TP – BP = tLINE / tpix – BP = fpix/fH – BP = 736 -16 = 720 Vertikalna rezolucija je:

AL = TL – BL = tFRAME / tLINE - BL = fH / fV – BL = 736-16 = 720

Page 6: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 6 od 58

2 Mapiranje tačke iz koordinatnog sistema ekrana u video memoriju

Pretpostavke: • Levi koordinatni sistem sa početkom u levom gornjem uglu ekrana • Koordinatni početak se mapira u MSB bajta sa najnižom adresom u video memoriji • Binarno – monohromatski prikaz (bit po pikselu) • Vrednost 1 u bitskoj lokaciji video memorije odgovara osvetljenom stanju pridruženog piksela Sekvencijalno mapiranje Ako je a adresa poslednjeg bajta video memorije koji pripada liniji i, onda ja a+1 adrresa prvog bajta koji pripada liniji i+1.

Nesekvencijalno mapiranje Ako je a adresa poslednjeg bajta video memorije koji pripada liniji i, prvi bajt koji pripada liniji i+1 nije na adresi a+1. Unutar jedne linije, uobičajeno je da su bajtovi kojima pripadaju susednii pikseli na susednim adresama.

PRIMER:

Hercules grafika (720 x 348) 1. Koordinatni početak (0,0) se mapira u MSB bajta na adresi B000:0h (segmentna adresa je B000h, adresa ofseta

je 0). 2. VM je organizovana u 4 ‘banke” kapaciteta po 8K. 3. Prvoj banci pripadaju linije 0,4,8,…, drugoj 1,5,9,…, trećoj 2,6,10,…, a četvrtoj 3,7,1,… . 4. Ako je poslednji bajt linije i na adresi a, tada je prvi bajt linije i+4 (koja pripada istoj banci) na adresi a+1 y offset adrese bajtova 0 0h 1h … (720/8)-1=59h 4 5Ah 5Bh … 1 2000h 2001h 5 205Ah 205Bh … 2 4000h 4001h 6 405Ah 405Bh … 3 6000h 6001h 7 605Ah 605Bh … ByteAddr = LineAddr + ByteInLine = = VMStartAddr + BankStartAddr + LineInBank + ByteInLine = 0 + 2000h*(y mod 4) + (720 div 8)*(y div 4) + (x div 8) BitPosition = 7 – (x mod 8)

• Da bi se smanjila kompleksnost izračunavanja adrese bajta kod nesekvencijalnog mapiranja – koristi se tablica preslikavanja broja linije (y) u adresu početka te linije: tablica je niz čiji je indeks broj linije, a odgovarajući element adresa početka linije u VM

Page 7: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 7 od 58

3 Primeri modernih grafičkih adaptera

INTEL i740 GRAFIČKI AKCELERATOR Terminologija • AGP – Accelerated Graphics Port: koncept koji omogućava visok nivo performansi i realizma u prikazu nove

generacije 3D grafičkih akceleratora. Principijelni benefit potiče od brzog R/W (read/write) pristupa opisima (teksturama) površina u glavnoj memoriji sistema.

• VGA – Video Graphics Array • SDRAM – Synchronous DRAM • SGRAM – Synchronous Graphics RAM • PPI – Precise Pixel Interpolation: tehnika • DME – Direct Memory Execution: tehnika smeštanja i izvršenja tekstura iz sistemske memorije • PDP – Parallel Data Processing: tehnika izvršavanja naredbi paralelno u protočnoj obradi • RAMDAC – RAM-based Digital-to-Analog Converter • BLT – (BitBlT) Bit Block Transfer: hardverska implementacija za brzo kopiranje bitmapa • STRBLT – Stretch BLT: podrška za hardversko zumiranje bitmapa • texel – texture map pixel: piksel teksture • sideband adresiranje: mogućnost da se izda više zahteva, a da se između ne čeka da stignu podaci Karakteristike • Visoko integrisan grafički akcelerator projektovan za AGP • Arhitektura: mašine koje rade paralelno da postignu performanse 2D i 3D grafike, i videa

o 3D i 2D mašinama upravlja 3D/2D protočni pretprocesor o pretprocesor omogućava značajan protok grafičkih podataka

• 3D mašina ima duboku protočnost i omogućava: o podršku za mapiranje teksture sa korektnom perspektivom o 4 vrste MIP-mapiranja o ravno i gouraud senčenje o alfa-mešanje (alpha-blending) za postizanje efekta transparentnosti o stippling o smanjivanje efekta nazupčenosti (antialiasing) o zamagljivanje (fogging) za postizanje efekta gustine atmosfere o Z-bafer (Z-buffering) za uklanjanje nevidljivih površina o bogat set 3D instrukcija koje dopuštaju da se pojedine funkcije omoguće ili onemoguće

• Teksture se lociraju u AGP memoriju (oslobađa se lokalna memorija za Z-bafer i bitmape) • 2D mogućnosti obuhvataju:

o BLT i STRBLT mašine o hardverski kursor o širok skup 2D registara i instrukcija

• 64-bitna BitBLT mašina obezbeđuje hardversku akceleraciju mnogih opštih prozorskih operacija • Namenske video mašine za podršku video konferencija i drugih aplikacija

o VMI (Video Module Interface) sa Host Port i Video Port koji čine interfejs prema DVD čipu o bidirekcionalni VMI Host Port se koristi za jeftino hardversko MPEGII DVD dekodovanje o Video Port interfejs obezbeđuje prihvat slike sa video ulaznih uređaja o Video Port uključuje podršku za full motion video, MPEGII/DVD, Intercast, VBI, NTSC, PAL TV izlaz

Page 8: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 8 od 58

Pregled arhitekture

3D mašina • Postiže visoke performanse 3D grafike uz bogat skup 3D funkcija • Konstantan visok nivo performansi se postiže hiper-protočnom 3D arhitekturom • Korišćenjem DME tehnike postuže se potpuno iskorišćenje propusnog opsega AGP i memorije

o DME tehnikom se postižu visoke performanse ali i neograničena veličina tekstura o sideband adresiranje daje mogućnost da se izda više zahteva bez čekanja na podatke o podrška za Type1, Type2 i Type3 sideband cikluse => 533MB/s vršni transferi podataka o Type3 omogućava da teksture budu locirane bilo gde u 32-bitnom adresnom prostoru

• Grafička protočna obrada (pipeline) omogućava izvršenje više komandi u paraleli (PDP tehnika) • Memorijska lokalnost trouglova koji se dohvataju ne zavisi od njihove veličine ni orijentacije • Memorijska lokalnost smanjuje stranične promašaje i povećava efikasnost keširanja • Tehnika PPI doprinosi kvalitetu mašine tekstura preciznim interpolacijama vrednosti piksela

o detaljno procesiranje piksela održava visok nivo kvaliteta slike

Page 9: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 9 od 58

• Optimizacija za paketni režim obrade trouglova o paketna obrada oslobađa CPU inteligentnih i kompleksnih 3D geometrijskih obrada o CPU može pripremiti jedan paket trouglova i smestiti ih u memoriju,

pa započeti rad na drugom paketu, bez komunikacije sa i740 grafičkim akceleratorom

• Direktnim izvršavanjem iz AGP memorije izbegava se trešing lokalne memorije

(koji bi postojao u arhitekturi koja mora da puni lokalnu memoriju iz AGP memorije) • Arbitrirani paralelni rendering iz lokalne memorije sa izvršavanjem teksture iz AGP memorije • Arbitraža dopušta da vršni propusni opseg bude 1.3GB/s • Mogućnost dve otvorene stranice lokalne memorije i jednog memorijskog kanala u AGP memoriji

podržava 3D rendering model: boja, z i tekstura • i740 podržava i 2D rendering kroz korišćenje tri rasterska operanda (izvor, odredište, uzorak)

• U arhitekturu su ugrađena i namenska poboljšanja 3D protočne obrade • 3D protočna jedinica obrađuje 3D podatke sa visokim paralelizmom • 3D rasterizer izračunava u 1 ciklusu 4 senčena, zamagljena i Z-baferisana piksela sa teksturom

Page 10: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 10 od 58

2D mašina • 64-bitna BitBLT mašina obezbeđuje hardversku akceleraciju za mnoge opšte prozorske operacije • Dve primarne BitBLT funkcije: fiksni BitBLT (BLT) i rastegljivi (Stretch) BitBLT (STRBLT) • BitBLT – blokovski transfer podataka piksela između dve memorisjke lokacije • BLT mašina ubrzava grafički korisnički interfejs (GUI) operativnog sistema Microsoft Windows • Hardverski su podržani svih 256 rasterskih operatora (ROP), uključujući transparentan BitBLT • BLT mašina se koristi za različite namene koje uključuju:

o prenos pravougaonih blokova podataka između memorisjkih lokacija o konverziju formata piksela o poravnavanje podataka o obavljanje logičkih operacija

• Displej funkcija sadrži RAM-based Digital-to-Analog Converter (RAMDAC) o transformiše digitalne podatke iz grafičkog i video podsistema u analogne podatke za monitor o tri 8-bitna D/A konvertora generišu R, G i B signale za monitor o integrisani 220MHz RAMDAC podržava rezoluciju do 1600x1200 o sinhronizacioni signali se pomeraju tako da odgovaraju kašnjenju D/A konverzije o svakom D/A konvertoru je pridružena paleta od 256 nijansi boje o RAMDAC može raditi u direktnom ili indeksiranom režimu o podržan je režim slike bez protkivanja (non-interlaced)

3D primitive • 3D primitive su linije, trouglovi i promenljive stanja • Sve primitive prikazane posle promene stanja u njihovoj promenljivoj stanja reflektuju novo stanje • Slika prikazuje strukturu podataka trougla koju vide drajveri za i740

o slika prikazuje i kako se tekstura mapira iz koordinatnog sistema teksture (U,V) u normalizovani koordinatni sistem objekta (S,T) gde se na teksturu primenjuje korekcija perspektive kao i simulirana krivina pre nego što se mapira u koordinatni sistem ekrana (X,Y)

o struktura trougla se prosleđuje i740 drajverima kroz DirectX ili OpenGL API

Page 11: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 11 od 58

MIP mapiranje • Podrška za 11 nivoa detaljnosti (Levels-of-Details, LODs) • Detaljnost mape teksture varira u rasponu od 1024x1024 do 1x1 teksela. • Nije neophodno da teksture budu kvadratne. • Mali keš ugrađen u procesor teksture obezbeđuje efikasno mip-mapiranje. • Podrška za 4 tipa mip-mapiranja

o Najbliže – teksel sa koordinatama najbližim željenom pikselu se koristi (samo 1 LOD) o Linearno – težinski prosek površine 2x2 teksela koji okružuju željeni piksel se koristi (samo 1 LOD) o Mip najbliže – odgovarajući LOD se izabere i teksel sa koordinatama najbližim željenom pikselu se koristi o Mip linearno – odgovarajući LOD se izabere i težinski prosek površine 2x2 teksela koji okružuju piksel se

koristi (naziva se i bi-linearnim mip-mapiranjem)

Blok dijagram sistema u kojem se koristi Intel740™ grafički akcelerator

Page 12: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 12 od 58

ATI RADEON 9700 (kodno ime grafičkog procesora R300)

Materijal preuzet sa Internet adrese www.digit-life.com Terminologija • DX9 – Direct X 9, grafički sistem, proizvod kompanije Microsoft • DDR – Double Data Rate • Shader – Program (realizacija može biti softverska ili hardverska) koji se primenjuje u toku obrade temena

poligona ili crtanja pojedinačnih piksela o Vertex Shader – program za obradu temena o Pixel Shader – program za obradu piksela

Termin "Shader" se takođe koristi i da se naznači hardverska jedinica koja vrši odgovarajuću obradu. Pregled arhitekture

Karakteristike

• 0.15 μ technology • 107 million transistors • Core clock speed: 300 MHz (possibly 315/325) • Memory bus: 256bit DDR (later DDR II) • Local memory: up to 256 MB • Memory clock speed: 300 DDR (600) MHz or more, 20 GB/s bandwidth; • Interface bus: AGP 8x, 2 GB/s throughput;

Page 13: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 13 od 58

• Full support of basic DX9 capabilities: o Floating, 64 and 128bit data formats for textures and frame buffer (vectors of 4 components of F16

or F32); o Pixel shaders with floating arithmetic (4*F32 computation format); o Pixel Shaders 2.0; o independent vertex pipelines; o Vertex Shaders 2.0;

• Hardware tessellation of N-Patches with Displacement Mapping, and, optionally, adapting detail level; • 8 independent pixel pipelines • 8 texture units (one per pixel pipeline) able to fulfill trilinear filtering without speed losses and (at last)

combine anisotropic and trilinear filtering. • 4-channel (4 64bits channels) memory controller connected with the accelerator's core and AGP with a full

crossbar; • HyperZ III memory optimization technology (quick cleanup and compression of the Z buffer using 8x8

units, hierarchical Z buffer for quick visibility determination); • Early Z test (pixel shader is used only for visible pixels); • Hardware acceleration of MPEG 1/2 decompression and compression, possibility to process a video stream

arbitrarily with pixel shaders (VIDEOSHADER technology); • 2 independent CRTC; • 2 integrated 10bit 400MHz RAMDACs with hardware gamma correction; • Integrated TV-Out; • Integrated DVI (TDMS transmitter) interface, up to 2043*1536. • Integrated general-purpose digital interface for connection of an external RAMDAC or a DVI transmitter or

coupling with a TV tuner. • FC packaging (FlipChip).

Memorijski kontroler 4-Kanalni memorijski kontroler i interni switch na čipu

Page 14: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 14 od 58

Tehnologija za optimizaciju memorije: HyperZ III

Tehnologija omogućava brzu kompresiju i brisanje Z-bafera koristeći blokove 8x8 i 3 nivoa hijerarhijske prezentacije Z-bafera za rano određivanje vidljivosti većih blokova poligona.

Na slici (1) je prikazan osenčen poligon, smešten blizu posmatrača. Dodaje se poligon 2, pozicioniran iza postojećeg poligona (slika (2)), tako da je delimično vidljiv. Najpre se pretražuje najviši nivo hijerarhijskog Z–bafera u kome su dubine smeštene po blokovima 4x4 i obeležava se ono polje koje ne treba senčiti (slika (3)) – time se eliminiše 16 piksela iz dalje obrade. Zatim se ista procedura primenjuje nad blokovima 2x2 (slika (4)), a potom nad blokovima 1x1 (slika (5)) odnosno pojedinačnim pikselima.

Kao i kod svih modernih akceleratora, podržan je Early Z Test. Ideja ovog testa je jednostavna: stvarne boje piksela (tekstura, osvetljenje, itd.) se računaju samo za vidljive piksele, čime se značajno štedi na propusnom opsegu memorije. Na tipičnim test–scenama, odbacuje se od 25 do 33% piksela, a u najboljem slučaju (sortirani objekti scene) i do 50%.

Page 15: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 15 od 58

Pajplajnovi za piksele i jedinice za teksture Postoji 8 pajplajnova za piksele, a svaki pajplajn ima svoj procesor za senčenje piksela (eng. pixel shader). Iz tog razloga – što je duži program za senčenje, bolje je iskorišćenje procesora. Računske operacije se vrše u pokretnom zarezu (formati F32 i F16), a postoji i kompatibilnost sa starijim procesorima preko celobrojnih računskih radnji (format I12). Konfiguracija na kojoj se bazira R300 je 8x1 – svaki pajplajn za piksele spojen je sa samo jednom jedinicom za teksture. Na slici je prikazan izgled jednog od 8 pajplajnova.

Pajplajnovi za temena i jezici visokog nivoa Jedinice za obradu temena (eng. vertex shaders) mogu da kontrolišu tok instrukcija i podržavaju potprograme, petlje, uslovne i bezuslovne skokove. Sledeća tabela prikazuje unapređenja u odnosu na prethodnu verziju (1.0)

Verzija 1.0 2.0

Max. instrukcija 128 256

Upravljanje tokom instrukcija No Yes

Format podataka F32[4] F32[4]

Broj registara za konstante 96 256

Broj registara opšte namene 8 16

Između ostalog, povećao se maksimalan broj instrukcija kojima može da se programira jedinica. Očekuje se da će kompleksnost programa za obradu temena/piksela uskoro postati približna kompleksnosti programa koji se izvršavaju na konvencionalnim procesorima.

Page 16: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 16 od 58

Video obrada R300 uvodi VideoShader tehnologiju: koristi računske mogućnosti pajplajnova za piksele za obavljanje operacija kodovanja/dekodovanja MPEG1/2 video tokova, konverziju prostora boja, rasplitanje (eng. deinterlacing) i drugih operacija za obradu video tokova.

Iako ova tehnologija u svom nazivu ima ime "Shader", radi se o neprogramabilnoj jedinici koja se nalazi unutar jedinice za obradu piksela.

Page 17: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 17 od 58

NVIDIA GEFORCE 6800 Materijal preuzet sa Internet adrese www.digit-life.com

Terminologija • PCI Express (PCIe) – moderan koncept interkonekcijske tehnologije koji omogućava visoku propusnu moć

preko serijske veze sa niskim brojem pinova. Namenjen je da zameni AGP8X. • GPU – Graphics Processing Unit – zaseban procesor na grafičkom adapteru čija je primarna funkcija obrada

grafike i priprema za prikazivanje • TMU – Texture Management Unit – jedinica za manipulisanje teksturama u okviru GPU • GDI – Graphics Device Interface – softverska komponenta za komunikaciju između aplikacije i drajvera

grafičkog adaptera Pregled arhitekture 6 nezavisnih procesora za temena 4 nezavisna procesora za piksele od kojih svaki radi nad fragmentima od 2x2 piksela 2 stepena keša za teksture

Page 18: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 18 od 58

Karakteristike • Chip codenamed NV40 • 130nm FSG (IBM) technology • 222 million transistors • FC case (flip chip with no metallic cover) • 256-bit memory interface • Up to 1 GB of DDR / GDDR -2/ GDDR -3 memory • Bus interface AGP 3.0 8x • A special APG 16x mode (both ways), for PCI Express of HSI bridge • 16 pixel processors, each having a texture unit with an optional filtering of integer and float-point textures (anisotropy up to 16x). • 6 vertex processors, each having one texture unit with no value filtration (discrete selection) • Calculates, blends, and writes up to 16 full pixels (colour, depth, stencil buffer) per clock • Calculates and writes up to 32 values of depth and stencil buffer per clock (if no operation with colour is executed) • Supports a two-way stencil buffer • Supports special optimisations of geometry rendering for acceleration of shadow algorithms based on the stencil buffer (the so-called Ultra Shadow II technology) • Supports pixel and vertex shaders 3.0, including dynamic branchings in pixel and vertex processors, texture value selection from vertex processors, etc. • Texture filtering in the floating-point format • Supports framebuffer in the floating-point format (including blending operations) • MRT (Multiple Render Targets - rendering into several buffers) • 2x RAMDAC 400 MHz • 2x DVI interfaces (require external chips) • TV-Out and TV-In interface (requires separate chips) • Programmable streaming GPU (for video compression, decompression and post-processing) • 2D accelerator supporting all GDI+ functions Karakteristike referentne kartice • 400 MHz core frequency • 1.1 GHz (2*550 MHz) effective memory frequency • GDDR-3 memory type • 256-MB memory size • 35.2 GBps memory bandwidth • Theoretical filling speed: 6.4 Gpps • Theoretical texture selection speed: 6.4 Gtps • 2 DVI-I connectors • TV-Out • Up to 120 W energy consumption (the card has two additional power connectors, the power sources are recommended to be no less than 480 W)

Page 19: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 19 od 58

Pregled arhitekture procesora za temena

Postoji 6 nezavisnih procesora za temena. U jednom ciklusu takta, jedan NV40 procesor za temena može da izvrši:

• jednu vektorsku operaciju (do četiri FP32 komponenti) • jednu skalarnu FP32 operacuju • pristup jednoj teksturi

Procesor podržava formate tekstura u pokretnom zarezu i celobrojne kao i mip–mapiranje. Do četiri različite teksture se mogu upotrebiti u jednom programu za obradu temena, bez filtriranja

Page 20: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 20 od 58

Procesori za piksele i popunjavanje Postoji četiri nezavisna procesora za piksele koji obrađuju blokove od četiri (2x2) piksela. Svaki procesor ima svoj red za obradu piksela a za svaki od 2x2 piksela koje obrađuje ima posebnu jedinicu za teksture (TMU) – što ukupno daje 16 TMU. Svaki TMU podržava anizotropsko filtriranje sa maksimalnim odnosom 16:1. Filtriranje tekstura zadatih formatom u pokretnom zarezu može da se vrši ako komponente imaju 16–bitnu (FP16) preciznost (ne može da radi sa FP32).

Svaki procesor ima svoj L1 keš čime je redukovano sudaranje sa zahtevima od procesora temena. Takođe, svaki procesor sadrži dve ALU jedinice, svaka sposobna da izvrši dve različite FP32 operacije na različitom broju (do četiri) odabranih vektorskih komponenti u jednom koraku. ALU jedinice su sposobne da u jednoj operaciji izvrše normalizaciju vektora što ima značajan uticaj na performanse nekih algoritama.

Page 21: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 21 od 58

4 Parametarske krive

BEZJEOVE KRIVE Pjer Bezјe (Pierre Bézier), inženjer pri kompaniji Reno (Renault) i Pol d Kastelžo (Paul de Casteljau), inženjer pri kompaniji Sitroen (Citroën) su nezavisno jedan od drugog početkom 1960. godina došli do otkrića o metodi predstavljanja krivih koje su danas izuzetno zastupljene u računarskoj grafici. Iako su neznatno prethodili Bezjeovim, Kastelžoovi istraživački izveštaji iz ove oblasti su ostali neobjavljeni do 1975. godine, zbog čega su ove krive nazvane po Bezjeu. Bezjeove krive se formiraju nad nizom od n tačaka (n>2) u oznaci P0 .. Pn-1, kod kojih prva tačka u nizu predstavlja početnu, a poslednja tačka u nizu krajnju tačku krive. Izgled krive određuje međusobni položaj tačaka, pa se one nazivaju kontrolne tačke. Kriva prolazi jedino kroz prvu (P0) i poslednju (Pn-1) tačku u pomenutom nizu. Kriva ne prolazi kroz ostale tačke. Parametar t ( [0,1]∈t ), na osnovu kojeg se određuje pozicija svake tačke koja pripada krivoj, ima vrednost 0 za tačku P0 i vrednost 1 za tačku Pn-1. Bezjeove krive se mogu predstavljati u polinomijalnom ili matričnom zapisu. Broj tačaka nad kojim se Bezjeove krive mogu definisati nije ograničen. U praksi se najčešće koriste kvadratna (n=3) i kubna (n=4), a svoja imena su dobila po stepenu polinoma kojim su predstavljene. Razvoj kvadratne Bezjeove krive Kvadratna Bezjeova kriva se formira nad nizom od tri tačke (P0, P1 i P2). Na dužima 0 1P P i 1 2PP treba uočiti tačke

P01 i P11, kao što je prikazano na slici 4.1. Slično tome, na duži 01 11P P treba uočiti tačku P02 kao što je prikazano na slici 4.2. Tačka P02 pripada krivoj: promenom parametra t od 0 do 1, dobija se niz tačaka koje pripadaju krivoj. Za t=0, P02=P0, a za t=1, P02=P2. Ovo je ilustrovano na slici 4.3 za nekoliko vrednosti parametra t.

= + −

= + −01 1 0

11 2 1

(1 )(1 )

P tP t PP tP t P

Slika 4.1

= + −02 11 01(1 )P tP t P

Slika 4.2

Page 22: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 22 od 58

Razvoj kvadratne Bezjeove krive se može jednostavno izvesti u analitičkom obliku na osnovu slika 4.1 i 4.2. Sa slike 4.1. je poznato:

01 1 0

11 2 1

(1 )(1 )

= + −= + −

P tP t PP tP t P

(1)

Sa slike 4.2. je poznato: 02 11 01(1 )= + −P tP t P (2)

Zamenom (1) u (2) se dobija: 02 2 1 1 0

2 2 2 202 2 1 1 1 1 0

2 202 0 1 2

( (1 ) ) (1 )( (1 ) )

(1 )

(1 ) 2 (1 )

= + − + − + −

= + − + − + −

= − + − +

P t tP t P t tP t P

P t P tP t P tP t P t P

P t P t t P t P

(3)

Odnosno: 2 2

0 1 2( ) (1 ) 2 (1 ) , [0,1]P t t P t t P t P t= − + − + ∈

gde je P(t) tačka koja pripada krivoj, za datu vrednost parametra t. Razvoj kubne Bezjeove krive Kubna Bezjeova kriva se formira nad skupom od četiri tačke (P0, P1, P2 i P3). Slično kao i kod razvoja kvadratne krive, na dužima 0 1P P , 1 2PP i 2 3P P treba uočiti tačke P01, P11 i P21, kao što je prikazano na slici 4.4. Uočene tačke se sada koriste da bi se nad njima formirala kvadratna Bezjeova kriva, na ranije opisan način. Na slici 4.5 je ilustrovano određivanje pozicije tačaka koje pripadaju krivoj, za nekoliko vrednosti parametra t.

Slika 4.3

Page 23: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 23 od 58

Slično razvoju kvadratne Bezjeove krive, razvoj kubne krive se može jednostavno izvesti u analitičkom obliku na osnovu slike 4.4.

01 1 0

11 2 1

21 3 2

(1 )(1 )(1 )

P tP t PP tP t PP tP t P

= + −= + −= + −

(4) 02 11 01

12 21 11

(1 )(1 )

P tP t PP tP t P

= + −= + −

(5) 03 12 02(1 )P tP t P= + − (6)

Zamenom (4) i (5) u (6) se dobija:

3 2 2 3

03 0 1 2 3(1 ) 3 (1 ) 3 (1 )P t P t t P t t P t P= − + − + − + (7) Odnosno:

3 2 2 3

0 1 2 3( ) (1 ) 3 (1 ) 3 (1 ) , [0,1]P t t P t t P t t P t P t= − + − + − + ∈ (8)

gde je P(t) tačka koja pripada krivoj, za datu vrednost parametra t.

= + −

= + −

= + −

01 0 1

11 1 2

21 2 3

(1 )(1 )(1 )

P tP t PP tP t PP tP t P

= + −

= + −

= + −

02 01 11

12 11 21

03 02 12

(1 )(1 )

(1 )

P tP t PP tP t P

P tP t P

Slika 4.4

Slika 4.5

Page 24: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 24 od 58

Matrični zapis kubne Bezjeove krive Matrični zapis je značajan kada je na raspolaganju hardver koji je u stanju da brzo množi matrice. Polazeći od (8), može se dobiti odgovarajući matrični izraz:

0

13 2 2 3

2

3

( ) [(1 ) 3 (1 ) 3 (1 ) ]

PP

P t t t t t t tPP

⎡ ⎤⎢ ⎥⎢ ⎥= − − −⎢ ⎥⎢ ⎥⎣ ⎦

Daljim razvojem prve matrice (vektora), dobija se:

0

12 3

2

3

1 0 0 03 3 0 0

( ) [(1 ]3 6 3 01 3 3 1

PP

P t t t tPP

⎡ ⎤⎡ ⎤⎢ ⎥⎢ ⎥− ⎢ ⎥⎢ ⎥=⎢ ⎥⎢ ⎥−⎢ ⎥⎢ ⎥− −⎣ ⎦ ⎣ ⎦

Razvoj Bezjeove krive proizvoljnog stepena Metoda koja je upotrebljena za razvoj kvadratne i kubne Bezjeove krive je slična metodi "podeli i osvoj" (eng. divide and conquer): počevši od ulaznog niza (kontrolnih) tačaka, u svakom koraku deljenja se dobijaju nove kontrolne tačke čiji je broj za jedan manji u odnosu na broj kontrolnih tačaka u prethodnom koraku. Procedura se zaustavlja kada ostane samo jedna kontrolna tačka – ona pripada krivoj. Primenom opisane metode se može razviti Bezjeova kriva proizvoljnog reda. Analitički oblik krive proizvoljnog reda se može odrediti bez primene prethodno opisane metode, na sledeći način: neka je ( ), [0,1]P t t ∈ tačka koja se nalazi na krivoj. Za niz tačaka (P0, P1, ..., Pn) nad kojim se formira kriva, vrednost P(t) se može izraziti sledećom formulom:

,0

( ) ( ), [0,1]n

i i ni

P t P B t t=

= ⋅ ∈∑

gde je , ( )i nB t Bernštajnov (Bernstein) polinom:

, ( ) (1 )i n ii n

nB t t t

i−⎛ ⎞

= −⎜ ⎟⎝ ⎠

Može se uočiti zanimljiva osobina Bernštajnovog polinoma:

,0

( ) 1, [0,1]n

i ni

B t t=

= ∈∑

Osobine Bezjeovih krivih Bezjeove krive imaju nekoliko interesantnih osobina:

• početna i krajnja tačka (P0 i Pn) leže na krivoj; u opštem slučaju ostale tačke ne leže na krivoj • kriva je neprekidna, diferencijabilna u svakoj tački proizvoljan broj puta • u tački P0, tangenta krive je duž 0 1P P , u tački Pn, tangenta krive je duž 1n nP P− • kriva se nalazi unutar konveksnog omotača koji formiraju kontrolne tačke • na izgled krive utiču sve tačke iz zadatog niza nad kojim se kriva formira: pomeranjem makar jedne tačke

kriva menja svoj oblik

Page 25: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 25 od 58

KATMUL-ROMOVA KRIVA

Katmul-Romova (E.Catmull, R.Rom, 1974) kriva je objavljena desetak godina nakon Bezjeove [E. Catmull je jedan od osnivača studija Pixar; njemu se u velikoj meri pripisuje otkrivanje Z-bafer algoritma, mapiranja teksturom i bi-kubnih zakrpa]. Za razliku od Bezjeove, radi se o lokalnoj interpolativnoj krivoj: kriva prolazi kroz sve kontrolne tačke, a izgled krive lokalno zavisi samo od nekoliko susednih kontrolnih tačaka. Fergusonova parametarska kriva Razvoj Katmul-Romove krive se oslanja na Fergusonove (H. Ferguson) parametarske kubne krive. Fergusonova parametarska kubna kriva se zasniva na dve tačke P0 i P1, za koje je data pozicija i nagibi tangenta krive u tim tačkama (P0' i P1' respektivno). U zavisnosti od parametra t, pozicija neke tačke na krivoj se može opisati polinomom trećeg stepena:

2 30 1 2 3( )P t a a t a t a t= + + + (14)

Parametar t uzima vrednost u opsegu [0,1]. Potrebno je odrediti koeficijente a0 do a3 uz pretpostavku da P(0)=P0 i P(1)=P1, što daje sledeće jednačine:

0

0 1 2 3

(0)(1)

P aP a a a a

== + + +

1

1 2 3

'(0)'(1) 2 3

P aP a a a

== + +

(15)

Rešavanjem ovih jednačina, dobijaju se sledeće vrednosti:

0

1

(0)'(0)

a Pa P

==

2

3

3[ (1) (0)] 2 '(0) '(1)2[ (0) (1)] '(0) '(1)

a P P P Pa P P P P

= − − −= − + +

(16)

Smenom (16) u (14) dobija se sledeći izraz :

2 3 2 3 2 3 2 3( ) (1 3 2 ) (0) (3 2 ) (1) ( 2 ) '(0) ( ) '(1)P t t t P t t P t t t P t t P= − + + − + − + + − + (17)

Svaki od polinoma po promenljivoj t, koji u izrazu (17) figuriraju kao koeficijenti uz tačke ili njihove izvode, su u tzv. Ermitovom obliku (C. Hermite), pa se ova kriva još naziva kubna Ermitova kriva. Matrični zapis Fergusonove krive Kao i kod kubne Bezjeove krive, (17) se može predstaviti u matričnom zapisu:

2 3

1 0 0 0 (0)0 0 1 0 (1)

( ) 13 3 2 1 '(0)

2 2 1 1 '(1)

PP

P t t t tPP

⎡ ⎤ ⎡ ⎤⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥⎡ ⎤= ⎣ ⎦ ⎢ ⎥ ⎢ ⎥− − −⎢ ⎥ ⎢ ⎥−⎣ ⎦ ⎣ ⎦

(18)

Razvoj Katmul-Romove krive Katmul-Romova kriva se razvija nad nizom od n+1 tačaka (u oznaci P0 do Pn). Kriva se lokalno definiše, deo po deo, nad lukom i i 1P P + . Nagib tangente u tačkama Pi i Pi+1 se određuje na sledeći način:

i 1 i 1 i 2 ii i 1

P P P PP ' , P '2 2

+ − ++

− −= = (19)

Treba napomenuti da je Katmul-Romova kriva specifičan slučaj opštije kardinalne krive (eng. cardinal spline), jer je za određivanje tangente krive u početnoj odnosno krajnjoj tački nekog luka uzet koeficijent 0.5.

Page 26: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 26 od 58

Na slici 4.6 je ilustrovana konstrukcija jednog dela krive, nad lukom i i 1P P + . Zamenom (19) u (18) dobija se konačan izraz za posmatrani deo krive (u matričnom obliku):

1

2 3

1

2

0 1 0 01 10 02 2

( ) 1 5 11 22 2

1 3 3 12 2 2 2

i

i

i

i

PP

P t t t tPP

+

+

⎡ ⎤⎢ ⎥

⎡ ⎤⎢ ⎥−⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎡ ⎤= ⎣ ⎦ ⎢ ⎥− −⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦⎢ ⎥

− −⎢ ⎥⎣ ⎦

(20)

Izrazom (20) se definiše kubna kriva koja predstavlja deo željene krive između dve uzastopne tačke (Pi i Pi+1). Izraz se može primeniti na sve delove krive sem za početni i krajnji luk gde se nagibi tangente (P'0 i P'n respektivno) moraju drugačije definisati. Osobine Katmul-Romove krive

• Kriva je interpolativna: kriva prolazi kroz sve kontrolne tačke. • Kriva je lokalna: promenom pozicije jedne kontrolne tačke se lokalno menja oblik krive • Kriva je neprekidna, diferencijabilna u svakoj tački proizvoljan broj puta

Slika 4.6

Page 27: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 27 od 58

5 Java2D™ API za rad sa grafikom

UVOD: ISTORIJA, ZAŠTO, KAKO Operativni sistemi su u poslednjoj deceniji pored upravljanja osnovnim resursima dobili zadatak da kontrolišu i ekran, odnosno grafički korisnički interfejs. S obzirom na činjenicu da su operativni sistemi 90-ih uglavnom multiprocesni, funkcionalni zahtev za kontrolu ekrana bio je: svaki proces, koji to želi – i ako to korisnik želi, mora imati svoje mesto na ekranu, odnosno, interfejs ka korisniku. Prvi pokušaji zasnivali su se na switchovanju celog “ekrana”. Prednosti ovakvog pristupa su što u trenutku kada je proces prikazan – ima ceo ekran samo za sebe, što je ranije i bio slučaj = kompatibilnost. Velika mana je nezgrapnost i teška iskoristljivost sistema. Današnje rešenje grafičkog dela operativnog sistema zasniva se na modelu prozora. Prozor je, naravno, pravougaono parče ekrana na kojoj jedna aplikacija može iscrtavati željene oblike, i preko koga aplikacija prima želje korisnika. Na taj način prozor postaje i jedinica interakcije aplikacije sa korisnikom. Aplikacija, naravno, može imati više prozora. Prozori su smešteni u 3D prostoru – postoji preklapanje (zaklanjanje) prozora koji su “dalji” od korisnika prozorima koji su bliži. Operativni sistem kontroliše sve akcije sa prozorima: otvaranje, zatvaranje, pomeranje, aktiviranje, deaktiviranje, ikonifikaciju, zoom–iranje, pozicija na Z osi, sakrivanje, prikazivanje, itd. Kao što OS održava liste FCBova ili PCBova, može se zamisliti i lista W(indow)CB-ova. Operativni sistem je takođe dužan da zaštiti aplikaciju od drugih aplikacija. Poznati su primeri zaštite memorije, disk prostora. Grafički gledano – objekat zaštite za operativni sistem je opet prozor. Ni jedan proces ne može da crta u tuđ prozor. Prozor zbog toga, bar što se tiče operativnih sistema, postaje jedinica za dodelu ekranskog prostora. Ulaz i prozori – miš kao pokazivački ulaz – lak: na koji prozor miš pokazuje – na taj prozor se akcija miša i odnosi. Šta sa tastaturom? Uveden pojam fokusiranog prozora – prozora u koji se “šalje” ulaz sa tastature. Event driven programiranje dobija svoju punu afirmaciju upravo kroz sisteme prozora. Ceo event driven sistem zasniva se na porukama, svaki event u sistemu praćen je porukom. Postoje, naravno, event-i koje iniciraju korisnici pomoću ulaznih uređaja, i event-i koje inicira OS u nekim važnim trenucima. Tipična arhitektura:

Proces 1 Proces 2

Prozor 1

Prozor 2

Prozor 3

MessageQueue event

handlerevent

handler

eventhandler

MessageLoop

Prozor u sebi nema memoriju! Iscrtavanje se vrši kada je to potrebno. Kada se prozor prvi put prikaže, ili kada se neki njegov deo “otkrije” ili kada mu se promeni veličina, dakle u bilo kojoj situaciji u kojoj je neki njegov deo vidljiv a neiscrtan. O potrebi za iscrtavanje prozora račun vodi isključivo operativni sistem. U trenutku kada je prozor potrebno iscrtati – OS štalje tzv. paint poruku kojom traži od programa da popuni sadržajem određeni deo prozora ili ceo prozor. Operativni sistemi, naravno, imaju zadatak da grafički sistem iznesu na što je moguće većem broju platformi (grafičkih karti, monitora, itd.) Aplikaciju sa druge strane ne bi trebalo da zanima da li sadržaj iscrtava na ekran

Page 28: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 28 od 58

jedne rezolucije ili druge sa x ili y boja ili možda sadržaj štampa ili sl. Naravno, aplikacija ne bi trebalo da bude i skroz nesvesna situacije u kojoj se štampa, ali samo u pojedinim detaljima i vrlo pažljivo. Rešenje je uvođenje DeviceContext-a. Device Context je apstraktni, virtuelni, univerzalni uređaj. Može se reći da se crtanje obavlja u device kontekstu! DeviceContext se može dalje proširiti kako bi se obezbedilo “bogatije” crtanje: doda se boja crtanja, boja ispunjavanja, oblici linija, itd, i tako zapravo nastaje PaintContext. Priča o grafici ima dva raspleta: - “slobodna” grafika podrazumeva odgovor na paint poruku, ulazne event-e.

Pogodno za grafički orjentisane aplikacije - kontrole – paint poruku i ulazne event-e obrađuje OS na bazi standardnih oblika

izgleda i ponašanja – kontrola. Pogodno za UI baza podataka, i drugih opštih aplikacija.

Simple.java Java ne može mnogo pobeći od OS, ali zato to može korektno objektno izmodelirati. U početku nam je dovoljno da koristimo jednostavan prozor u kome se može crtati. import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Simple extends JPanel { static JFrame frame; public Simple() { } public void paint (Graphics g) { Graphics2D g2 = (Graphics2D) g; // . . . ovde se crta } public static void main(String s[]) { Simple panel = new Simple(); frame = new JFrame("Simple"); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }); frame.getContentPane().add("Center", panel); frame.setSize(new Dimension(200,200)); frame.setVisible(true); } }

HARDWARE

OS

HAL

Device drivers

Aplikacija

Device Context

apstraktni GAPI

Page 29: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 29 od 58

Graphics2D Rendering Context Skup atributa stanja pridružen Graphics2D objektu naziva se Graphics2D rendering context. Da bi se iscrtale primitive, tekst, ili slike potrebno je prethodno postaviti Graphics2D rendering context i onda pozvati neku od Graphics2D metoda kao što su draw i fill. Graphics2D rendering context sadrži nekoliko atributa:

Stil olovke (pen style) se primenjuje na objekte koji se crtaju linijama. Stroke atribut This stroke omogućava da se linije crtaju proizvoljno debelom olovkom, sa određenim patternom i da se završeci linija mogu crtati sa proizvoljnom dekoracijom.

Stil popunjavanja (fill style) se primenjuje na unutrašnjost objekata. Paint atribut omogućava da se oblici iscrtavaju u boji, gradijentu ili patternu.

Stil kompozicije (compositing style) se koristi pri preklapanju objekata koji se iscrtavaju

Transformacije se primenjuju tokom crtanja radi konverzije objekata iz korisničkog u device koordinatni sistem. Transformacije koje postoje su translacija, rotacija, skaliranje i iskošivanje.

Odsecanje onemogućava iscrtavanje u površinu izvan dozvoljenog clip path-a. Svaki Shape objekat ‘ odnosno oblik koji se iscrtava može da posluži i za definiciju odsecajućeg regiona.

Font se koristi za iscrtavanje teksta.

“Rendering hints” omogućavaju zadavanje atributa koji obezbeđuju kompromis između brzine i kvaliteta slike. Na primer, moguće je uključiti ili isključiti korišćenje antialiasing-a

Da bi se postavio neki atribut Graphics2D rendering contexta mogu se koristiti metode: - void setStroke( Stroke s ) - void setPaint ( Paint p ) - setComposite ( Composite c ) - setTransform ( AffineTransform tx ) - clip ( Shape s ) - setFont ( Font f ) - setRenderingHints (RenderingHints.Key hintKey, Object hintValue) Napr.

gp = new GradientPaint(0f,0f,blue,0f,30f,green); g2.setPaint(gp);

Ovo znači da je zadavanje atributa praktično prebačeno u odgovarajuće objekte i njihove hijerarhije. Graphics2D sadrži direktne reference na objekte-atribute i ne kopira ih. Međutim, posle izmene bilo koje osobine atributa za vreme za vreme iscrtavanja mora se pozvati set metod. Takođe, sama izmena atributa van konteksta u toku iscrtavanja može dovesti do nepredvidljivih crteža.

Page 30: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 30 od 58

Graphics2D Rendering Methods Graphics2D obezbeđuje sledeće opšte metode za iscrtavanje geometrijskih primitiva, teksta i slika. - void draw (Shape s ) - void fill (Shape s) - void drawString(String s, float x, float y) - drawImage Koordinatni sistemi Java 2D sistem održava dva koordinatna prostora: - Korisnički prostor – za specificiranje grafičkih primitiva - Device prostor za konkretni izlaz uređaj – ekran, prozor, štampač. Korisnički prostor je nezavisan od device prostora i koristi se za tumačenje koordinata svih primitiva koje do sistema dođu putem Java 2D API-ja Ako se ne primenjuju transformacije, koordinatni početak nalazi se u gornjem desnom uglu ekrana, a jedinica odgovara jednom pikselu. Shapes

Arc2D Ellipse2D QuadCurve2D Area GeneralPath Rectangle2D CubicCurve2D Line2D RectangularShape Dimension2D * Point2D * RoundRectangle2D

Page 31: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 31 od 58

Demonstracioni program: X-OX import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import javax.swing.*; public class XoX extends JPanel implements KeyListener, MouseListener { static JFrame frame; private static final int IKS = 1; private static final int OKS = 2; private static final int NISTA = 0; private int a[][]; private int n; public XoX() { a=new int[3][3]; n=3; clear(); addMouseListener(this); } protected void clear() { for(int i=0;i<3;i++) for(int j=0;j<3;j++) a[i][j]=NISTA; } public void paint (Graphics g) { super.paint(g); Graphics2D g2 = (Graphics2D) g; Dimension d = getSize(); // draw grid g2.setStroke(new BasicStroke( 2, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL)); g2.setPaint(Color.gray); for(int i=1;i<n;i++) { Line2D grid_horizontal = new Line2D.Float(0,i*d.height/n, d.width,i*d.height/n); Line2D grid_vertical = new Line2D.Float(i*d.width/n,0 ,i*d.width/n, d.height); g2.draw(grid_horizontal); g2.draw(grid_vertical); } //draw elements Rectangle r=g2.getClipBounds(); for(int i=0;i<n;i++) for(int j=0;j<n;j++) { AffineTransform tx=new AffineTransform(); tx.translate(i*d.width/n-r.x, j*d.height/n-r.y); tx.scale(d.width/n/10, d.height/n/10); g2.setTransform(tx); switch(a[i][j]) { case IKS: int xc[]={2,5,8,9,6,9,8,5,2,1,4,1}; int yc[]={1,4,1,2,5,8,9,6,9,8,5,2}; Polygon ox = new Polygon(xc,yc,12); g2.setStroke(new BasicStroke(1)); g2.setPaint( new GradientPaint(1,9,Color.white, 9,1,Color.green)); g2.fill(ox); break; case OKS: g2.setStroke(new BasicStroke(0)); g2.setPaint( new GradientPaint(0,5, Color.white, 10,5,Color.red)); g2.fill(new Ellipse2D.Float(2,2,6,6)); break; case NISTA: break; } } }

Page 32: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 32 od 58

//KeyListener implementation public void keyPressed(KeyEvent e) {} public void keyReleased(KeyEvent e) {} public void keyTyped(KeyEvent e) { switch(e.getKeyChar()) { case '7':a[0][0]=OKS; break; case '8':a[1][0]=OKS; break; case '9':a[2][0]=OKS; break; case '4':a[0][1]=OKS; break; case '5':a[1][1]=OKS; break; case '6':a[2][1]=OKS; break; case '1':a[0][2]=OKS; break; case '2':a[1][2]=OKS; break; case '3':a[2][2]=OKS; break; case '0': clear(); break; } invalidate(); repaint(); } //MouseListener implementation public void mouseClicked(MouseEvent e) { Dimension d=getSize(); int x=(int)((float)e.getX()/d.width*n); int y=(int)((float)e.getY()/d.height*n); a[x][y]=IKS; repaint(); } public void mouseReleased(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mousePressed(MouseEvent e){} public void mouseEntered(MouseEvent e){} public static void main(String s[]) { XoX panel = new XoX(); panel.setOpaque(true); frame = new JFrame("XoX"); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }); frame.getContentPane().add(panel); frame.setSize(new Dimension(200,200)); frame.setVisible(true); frame.addKeyListener(panel); frame.addMouseListener(panel); } }

Page 33: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 33 od 58

Pregled klasa paketa AWT.GEOM

Class Summary: Package java.awt.geom

AffineTransform The AffineTransform class represents a 2D affine transform that performs a linear mapping from 2D coordinates to other 2D coordinates that preserves the "straightness" and "parallelness" of lines.

Arc2D Arc2D is the abstract superclass for all objects that store a 2D arc defined by a bounding rectangle, start angle, angular extent (length of the arc), and a closure type (OPEN, CHORD, or PIE).

Arc2D.Double An arc specified in double precision,

Arc2D.Float An arc specified in float precision,

Area The Area class is a device-independent specification of an arbitrarily-shaped area.

CubicCurve2D The CubicCurve2D class defines a cubic parametric curve segment in (x, y) coordinate space.

CubicCurve2D.Double A cubic parametric curve segment specified with double coordinates.

CubicCurve2D.Float A cubic parametric curve segment specified with float coordinates.

Dimension2D The Dimension2D class is to encapsulate a width and a height dimension.

Ellipse2D The Ellipse2D class describes an ellipse that is defined by a bounding rectangle.

Ellipse2D.Double The Double class defines an ellipse specified in double precision.

Ellipse2D.Float The Float class defines an ellipse specified in float precision.

FlatteningPathIterator The FlatteningPathIterator class returns a flattened view of another PathIterator object.

GeneralPath The GeneralPath class represents a geometric path constructed from straight lines, and quadratic and cubic (Bézier) curves.

Line2D This Line2D represents a line segment in (x, y) coordinate space.

Line2D.Double A line segment specified with double coordinates.

Line2D.Float A line segment specified with float coordinates.

Point2D The Point2D class defines a point representing a location in (x, y) coordinate space.

Point2D.Double The Double class defines a point specified in double precision.

Point2D.Float The Float class defines a point specified in float precision.

QuadCurve2D The QuadCurve2D class defines a quadratic parametric curve segment in (x, y) coordinate space.

QuadCurve2D.Double A quadratic parametric curve segment specified with double coordinates.

QuadCurve2D.Float A quadratic parametric curve segment specified with float coordinates.

Rectangle2D The Rectangle2D class describes a rectangle defined by a location (x, y) and dimension (w x h).

Rectangle2D.Double The Double class defines a rectangle specified in double coordinates.

Page 34: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 34 od 58

Rectangle2D.Float The Float class defines a rectangle specified in float coordinates.

RectangularShape RectangularShape is the base class for a number of Shape objects whose geometry is defined by a rectangular frame.

RoundRectangle2D The RoundRectangle2D class defines a rectangle with rounded corners defined by a location (x, y), a dimension (w x h), and the width and height of an arc with which to round the corners.

RoundRectangle2D.Double The Double class defines a rectangle with rounded corners all specified in double coordinates.

RoundRectangle2D.Float The Float class defines a rectangle with rounded corners all specified in float coordinates.

Page 35: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 35 od 58

6 Rasterizacija primitiva: kružnica

Pretpostavka: crta se kružnica sa centrom u koordinatnom početku.

TRIVIJALAN ALGORITAM Na osnovu parametarskih jednačina kružnice: x = R cosα, y = R sinα, za α∈[0,2π] Menjajući α sa malim korakom, dobije se skup tačaka koje aproksimiraju kružnicu. Loše osobine: • spore trigonometrijske funkcije Oprez: • korak α je direktno proporcionalan poluprečniku kružnice

Potprogram za crtanje kružnice sa centrom u tački (cx, cy):

void circle(int cx, int cy, int r) { float alfa; for(alfa=0;alfa<6.28;alfa+=(atan(1.0f/r))) { plot(cx+r*cos(alfa),cy+r*sin(alfa)); } }

EFIKASNIJI ALGORITAM Treba uočiti da je krug visoko simetrična figura. Delimo ga u lukove koji pripadaju oktantima, pa za sračunatu tačku koja pripada luku u prvom oktantu jednostavno nalazimo simetrične tačke na lukovima u ostalih sedam oktanata.

M2

M1

M3

M4

M5

M6 M7

M8

Važi:

M1 = (x,y) M5 = (-x,-y) M2 = (y,x) M6 = (-y,-x) M3 = (-y,x) M7 = (y,-x) M4 = (-x,y) M8 = (x,-y)

Page 36: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 36 od 58

Potprogram za crtanje kružnice sa centrom u tački (cx, cy):

void plot8(float cx, float cy, float dx, float dy) { plot(cx+dx,cy+dy); plot(cx-dx,cy+dy); plot(cx+dx,cy-dy); plot(cx-dx,cy-dy); plot(cx+dy,cy+dx); plot(cx-dy,cy+dx); plot(cx+dy,cy-dx); plot(cx-dy,cy-dx); } void circle(int cx, int cy, int r) { float alfa; for(alfa=0;alfa<1.57;alfa+=(atan(1.0f/r))) { plot8(cx,cy, r*cos(alfa), r*sin(alfa)); } }

BRESENHAM-OV ALGORITAM Posmatrajmo luk u prvom oktantu, koji počinje tačkom (R, 0) i napreduje u smeru nasuprot kretanja kazaljke sta, do ugla 45°. Bresenham-ov algoritam za crtanje kružnice se svodi na odlučivanje o izboru između dve kandidat-tačke (A i B) između kojih prolazi kružna linija.

C

AB

P

Pretpostavimo da je kružnica prošla kroz tačku P(x,y) i da treba odlučiti da li će “proći” kroz A(x-1, y+1) ili B(x, y+1). Da li je moguće da “prođe” kroz C? Ne, jer posmatrani luk pripada prvom oktantu. Uvodimo pojam kvadradtne greške (odstupanja u odnosu na geometrijski tačnu kružnicu) u tački K: e(K) = xk

2 + yk

2 – R2, i to

e(K) > 0, za K izvan kruga, e(K) = 0, za K na kružnici, e(K) < 0, za K unutar kruga.

U tački A (e<0): e(A) = (x-1)2 + (y+1)2

- R2

U tački B (e>0): e(B) = x2 + (y+1)2

- R2

Page 37: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 37 od 58

Algebarski zbir grešaka je: d=e(A) + e(B) 1. A, B unutar kruga (teoretski): e(A)<0, e(B)<0 => d<0, bira se B 2. A, B izvan kruga (teoretski): e(A)>0, e(B)>0 => d>0, bira se A 3. A unutar, B izvan kruga: e(A)<0, e(B)>0

a) |e(A)| > |e(B)| => d<0, bira se B b) |e(A)| < |e(B)| => d<0, bira se A

Uočava se zakonitost: d<0 => bira se B; d>0 => bira se A

U početnom koraku: d0 = di|(R,0) = 3-2R U i-tom koraku: di = (x-1)2 + (y+1)2

– R2 + x2 + (y+1)2 – R2 = 2x2 + 2y2 – 2R2 + 3 – 2x +4y U (i+1) koraku: za di > 0 (A): di+1 = (x-2)2 + (y+2)2 – R2 + (x-1)2 + (y+2)2 – R2 = 2x2 + 2y2 – 2R2 + 3 – 2x +4y + 10 –4x+4y = = di + 4(y-x) + 10 za di < 0 (B) di+1 = (x-1)2 + (y+2)2 – R2 + x2 + (y+2)2 – R2 = 2x2 + 2y2 – 2R2 + 3 – 2x +4y + 6 + 4y = = di + 4y + 6 Na osnovu izvedenog, sledi algoritam: typedef struct { int x; int y; } Point; void circle(int cx, int cy, int r) { Point p; int d; p.x=r; p.y=0; d= 3-2*r; while(p.x>p.y) { plot8(cx,cy, p.x, p.y); if(d<0) d+=4*p.y+6; else { d+=4*(p.y-p.x)+10; p.x--; } p.y++; } if(p.x==p.y) plot8(cx, cy, p.x, p.y); }

Page 38: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 38 od 58

1. Zadatak a) U jednostavnom algoritmu za crtanje kružnice uz pomoć trigonometrijskih funkcija izvesti zavisnost koraka ugla

Δα od poluprečnika kružnice. Korak ugla mora biti maksimalan, ali istovremeno mora da obezbedi neprekidnost kružnice. Kružnica je neprekidna ukoliko je udaljenost svake njene dve susedne tačke (za dva ugla udaljena za korak Δα) po svakoj od koordinata najviše 1. Pretpostaviti da je r dovoljno veliko i da važi sin(Δα )= Δα .

b) Naći odnos broja poziva procedure za drtanje tačke jednostavnog trigonometrijskog algoritma kome je korak ugla postavljen kao pod a) i broja poziva procedure za crtanje tačke Bresenhamovog algoritma za drttanje kružnice istog poluprečnika. Odnos dati za dovoljno velike poluprečnike kružnice

c) Koji efekat nije uzet u obzir odnosom izračunatim u tački (b), a značajno doprinosi relativnoj prednosti brzine Bresenhamovog algoritma?

REŠENJE

a) Δα=arctg(1/r)1r

b) Jednostavan algoritam: j2n 2 rπ

= = πΔα

Bresenhamov algoritam: osmina kruga se crta uz inkrementiranje y, sve dok ne postane x=y. 2 2 2 2

br 8rr x y 2y y n2 2

= + = ⇒ = ⇒ =

Dakle, odnos je j

b

n 2 r 1.11n 4 2r

π= ≈

c) Nije uzeta u obzir činjenica da Bresenhamov algoritam radi samo sa celim brojevima, dok jednostavan

trigonometrijski algoritam radi sa realnim brojevima. 2. Zadatak

Korišćenjem Bresenhamovog algoritma za crtanje kružnice kao osnove i rutine za crtanje linije Line(x1,y1,x2,y2) koja crta liniju od tačke (x1,y1) do tačke (x2,y2), napisati program za crtanje popunjenog prstena sa centrom u tački (xp,yp), spoljnog poluprečnika Rs i unutrašnjeg poluprečnika Ru (smatrati da je Rs>Ru).

REŠENJE

// smesta u niz izracunatu tacku i njoj simetricnu tacku void ubaci2(int tacke[][], int index, int x, int y) { tacke[y][index] = x; tacke[x][index] = y; }

Page 39: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 39 od 58

void crtaj2(int tacke[][], int y, int xc, int yc) { Line(xc-tacke[y][1], yc+y, xc+tacke[y][1], yc+y); Line(xc-tacke[y][1], yc-y, xc+tacke[y][1], yc-y); } void crtaj4(int tacke[][], int y, int xc, int yc) { Line(xc-tacke[y][1], yc+y, xc-tacke[y][0], yc+y); Line(xc+tacke[y][0], yc+y, xc+tacke[y][1], yc+y); Line(xc-tacke[y][1], yc-y, xc-tacke[y][0], yc-y); Line(xc+tacke[y][0], yc-y, xc+tacke[y][1], yc-y); } void prsten(int xp, int yp, int Ru, int Rs) { int tacke[MAX_INDEX][2]; int x,y,d; // unutrasnji krug x=Ru; y=0; d=3-2*Ru; while(x>=y) { ubaci2(tacke,0,x,y); if( d < 0 ) d += 4*y+6; else { d += 4*(y-x)+10; x--; } y++;

} // spoljasnji krug x=Rs; y=0; d=3-2*Rs; while(x>=y) { ubaci2(tacke,1,x,y); if(d < 0 ) d += 4*y+6; else

{ d += 4*(y-x)+10; x--; } y++;

} // crtanje do visine unutrasnjeg poluprecnika for(y=0; y<=Ru; y++) crtaj4(tacke,y,xp,yp); // crtanje ostatka for(y=Ru+1; y<=Rs; y++) crtaj2(tacke, y, xp, yp);

}

Page 40: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 40 od 58

7 Popunjavanje oblasti Oblast je grupa susednih, povezanih piksela. Uobičajeno, oblast se definiše na jedan od dva načina: 1. Svi pikseli koji pripadaju oblasti imaju datu vrednost 2. Pikseli koji su na ivici oblasti imaju datu vrednost Tipovi oblasti Prema načinu definisanja 1. Oblast definisana unutrašnjošću (interior-defined) - popunjavanja poplavljivanjem (flood-fill) 2. Oblast definisana granicom (boundary-defined). algoritmi popunjavanja oivičene oblasti (boundary-fill) Prema povezanosti piksela 1. Četvoro-susedna oblast (4-connected). 2. Osmo-susedna oblast (8-connected). 1. Zadatak

U memoriji rasterskog prikazivača se nalazi na crvenoj pozadini “šahovska tabla” sa plavim i žutim poljima. a) Napisati proceduru koja koristi jednostavni rekurzivni algoritam za izmenu boje svih polja jedne (plave ili žute)

boje, za zadate koordinate piksela koji pripada proizvoljnom polju date početne boje b) napisati sekvencu poziva gornje procedure koja će zameniti boje polja (plava da postanu žuta i žuta da postanu

plava). Pretpostaviti da je jedno izvršenje procedure mnogo kraće od (1/24)s. c) Koji su nedostaci navedenog algoritma pod (a) d) Kako se nedostaci navedeni pod (c) mogu otkloniti? Ukratko obrazložiti.

REŠENJE

a) S obzirom da se radi o šahovskoj tabli – očito je da treba popunjavati osmosusednu oblast, a s obzirom da se jednu boju treba zameniti drugom – očito je da je oblast definisana unutrašnjošću:

void FloodFill8(int X, int Y, Color new_val, Color old_val) { if(GetPixel(X,Y)==old_val) { SetPixel(X,Y,new_val); FloodFill8(X-1,Y, new_val, old_val); FloodFill8(X+1,Y, new_val, old_val); FloodFill8(X1,Y-1, new_val, old_val); FloodFill8(X1,Y+1, new_val, old_val); FloodFill8(X-1,Y-1, new_val, old_val); FloodFill8(X-1,Y+1, new_val, old_val); FloodFill8(X+1,Y-1, new_val, old_val); FloodFill8(X+1,Y+1, new_val, old_val); } } b) FloodFill8(x,y,zelena,plava); FloodFill8(x+1,y,zelena,plava); FloodFill8(x,y,plava,zuta); FloodFill8(x+1,y,plava,zuta); FloodFill8(x,y,zuta,zelena); FloodFill8(x+1,y,zuta,zelena);

Page 41: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 41 od 58

2. Zadatak

Data je sledeća slika na jednom izlaznom uređaju:

poč etnatač ka

Ako se na prikazani slučaj primeni jednostavan rekurzivni algoritam popunjavanja: a) oivičene četvorosusedne oblasti (Boundary_fill4) sa vrednostima:

boundary_value = tačkice i new_value=karo b) oivičene osmosusedne oblasti (Boundary_fill8) sa vrednostima:

boundary_value = tačkice i new_value=karo skicirati efekat nakon izvršenja odgovarajuće procedure, precizno navodeći boje oblasti.

REŠENJE

a)

b)

Linijski (rekurzivan) algoritam za popunjavanje oblasti #include "fill.h" int HLine(int x, int y) { int f, from=x, to=x+1; if(getPixel(x,y)) return to; while(from>0 && !getPixel(from,y)) setPixel(from--,y,1); while(to < limitx && !getPixel(to,y)) setPixel(to++,y,1); if(y<limity) for (f=from+1;f<to;f=HLine(f,y+1)); if(y>0) for (f=from+1;f<to;f=HLine(f,y-1)); return to; } void Fill(int x, int y) { HLine(x,y); }

Page 42: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 42 od 58

8 Odsecanje 1. Zadatak

U dvodimenzionalnom koordinatnom sistemu realnog sveta definisan je prozor (“Window”) pozivom: SetWindow(3.0, 6.0, 2.0, 5.0);

gde parametri poziva primaju semantiku prema datoj dekleraciji: SetWindow(float XwMin, float XwMax, float YwMin, float YwMax); Navesti prema Cohen-Sutherland algoritmu: a) položajne kodove (outcode) tačaka:

A(4,3), B(5,4), C(2,1), D(8,1), E(1,3), F(5,6), G(5,1), H(9,3) b) uslov trivijalnog odbacivanja proizvoljne linije PQ c) uslov trivijalnog prihvatanja proizvoljne linije PQ d) Koji se od linijskih segmenata mogu trivijalno odbaciti CD, EF, GH, AE? e) Ako je u normalizovanim koordinatama uređaja definisan prikazni prozor(“Viewport”) pozivom:

SetViewPort(0.5,0.75, 0.25, 0.95) gde parametri poziva primaju semantiku prema deklaraciji: Procedure SetViewPort(XvMin, XvMax, YvMin, YvMax: Real); napisati jednačine transformacije tačke (Xw,Yw), iz prozora definisanog u ovom zadatku u dati prikazni prozor. Koordinate transformisane tačke označiti sa (Xv, Yv)

REŠENJE

a) Ako se sa Cp obeleži outcode tačke P: Ca=0, Cb=0, Cc=5, Cd=6, Ce=1, Cf=8, Cg=4, Ch=2

10 1001 1000 1010 00 0001 0000 0010 01 0101 0100 0110

V/N 01 00 10 V – Viši par bitova = vertikalni položaj N – Niži par bitova = horizontalni položaj

b) Uslov trivijalnog odbacivanja segmenta PQ je:

(Cp & Cq) != 0 c) Uslov trivijalnog prihvatanja segmenta PQ je:

(Cp == 0) && (Cq == 0), odnosno (Cp | Cq) == 0 d) Trivijalno se može odbaciti samo segment CD

e) 25.0083.0)( +⋅=−−−

+= XwXwMinXwXwMinXwMaxXvMinXvMaxXvMinXv

217.0233.0)( +⋅=−−−

+= YwYwMinYwYwMinYwMaxYvMinYvMaxYvMinYv

2. Zadatak

Ukoliko se Cohen-Sutherlandov algoritam za 2D-grafiku proširi za primenu u 3D prostoru a) koliko različitih načina dodele položajnih kodova (outcode) u 3D prostoru postoji? b) koliko postoji različitih položajnih kodova za jedan usvojen načIn kodiranja ako je “3D-prozor” oblika kvadra čije ivice leže paralelno sa koordinatnim osama zadat opsezima koordinata x∈[10,50], y∈[20,30], z∈[30,60], koliko zajedničKih postavljenih bitova u položajnom kodu imaju sledeći parovi tačaka: A1(5,5,5) i B1(70,70,70);

Page 43: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 43 od 58

A2(15,10,15) i B2(30,50,15); A3(5,40,70) i B3(5,500,10);

REŠENJE

a) Outcode u 2D prostoru ima onoliko bitova koliko ima i strana prozora – 4. U 3D prostoru Outcode ima 6 bitova. Svaki od tih bitova može biti dodeljen jednom od strana prozora. Ako strane prozora obeležimo brojevima 0..5 problem kreiranja jednog načina kodovanja, svodi se na problem razvrstavanja broja strane po bitovima outcodea, što je jedna permutacija bez ponavljanja brojeva 0..5. Dakle broj načina dodele outcodeova je 6! = 720.

b) Stranama kvadra prostor je podeljen na 33 dela. Dakle tolko ima i položajnih kodova - 27. Zamisliti Rubikovu

kocku. c) Na osnovu sledeće tabele

tačka/bit levo x<xw

desno x>xw

dole y<yw

gore y>yw

iza z<zw

ispred z>zw

A1 1 0 1 0 1 0 B1 0 1 0 1 0 1 A2 0 0 1 0 1 0 B2 0 0 0 1 1 0 A3 1 0 0 1 0 1 B3 1 0 0 1 1 0

Sledi broj zajedničkih “jedinica”: A1-B1: 0; A2-B2: 1; A3-B3: 2 3. Zadatak

Šta se dobija kada se Sutherland-Hodgman-ov algoritam upotrebi za odsecanje »C« poligona »S« poligonom.

REŠENJE

Sutherland-Hodgman-ov algoritam vrši odsecanje proizvoljnog poligona konveksnim poligonom. Poligon "S" nije konveksan, pa se ne dobija očekivan rezultat prikazan na sledećoj slici. Skup rezultujućih temena posle odsecanja (rezultat odsecanja) je prazan skup, odnosno nema rezultujućeg poligona.

Page 44: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 44 od 58

9 Elementarne transformacije Translacija Koordinatni početak se pomera u tačku O’(x1,y1):

⎥⎥⎥

⎢⎢⎢

−−=

111010001

yxM T

Rotacija Koordinatni sistem rotira oko koordinatnog početka za ugao α. Pozitivan smer rotacije je nasuprot kretanja kazaljke časovnika.

⎥⎥⎥

⎢⎢⎢

⎡ −=

1000cossin0sincos

αααα

RM

Skaliranje Faktori skaliranja po X i y osi: SX i SY:

⎥⎥⎥

⎢⎢⎢

⎡=

1000000

Y

X

S SS

M

SX = -1, SY = 1 => refleksija prema Y osi SX = 1, SY = -1 => refleksija prema X osi 1. Zadatak

U X-Y koordinatnom sistemu trougao je određen temenima: A(2,6), B(4,6) i C(3,8). Ukoliko se koordinatni sistem translatorno pomeri u tačku O1(1,1), zatim rotira u smeru suprotnom od kretanja kazaljke na časovniku za ugao 30° i konačno skalira faktorima za X-osu Sx=2, odnosno Y-osu: Sy=1, odrediti: a) kompozitnu matricu transformacije b) nove koordinate datog trougla c) Da li se menja kompozitna matrica transformacije ako se elementarne transformacije izvrše po redosledu:

1. rotacija, translacija, skaliranje 2. translacija, skaliranje, rotacija

REŠENJE

a) Matrice elementarnih transformacija su:

⎥⎥⎥

⎢⎢⎢

−−=

111010001

T ⎥⎥⎥

⎢⎢⎢

⎡°°°−°

=100030cos30sin030sin30cos

R ⎥⎥⎥

⎢⎢⎢

⎡=

100010002

S

Kompozitna matrica je:

⎥⎥⎥

⎢⎢⎢

−−

−=⋅⋅=

1366.0732.20866.0105.0732.1

SRTM

b) A’ = (2,6,1)*M = (6.732, 3.83, 1) B’ = (4,6,1)*M = (10.196, 2.83, 1) C’ = (3,8,1)*M = (10.464, 5.062, 1); c) 1. Da. 2. Da.

Page 45: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 45 od 58

2. Zadatak Trougao ABC nalazi se na ekranu u položaju definisanom koordinatama tačaka A(1,3), B(3,1), C(3,3). (Koordinatni početak se nalazi u levom donjem uglu ekrana). Odrediti kompozitnu matricu transformacija pokretne “virtuelne kamere” tako da se postigne efekat promene položaja trougla ABC u položaj: a) A’B’C’, gde su koordinate tačaka A’(7,5), B’(5,7), C’(5,5) b) A’’B’’C’’, gde su koordinate tačaka A’’(5,7), B’’(7,5), C’’(5,5).

REŠENJE

a) 1. Translacija koordinatnog početka u tačku O’(3,3) 2. Rotacija koordinatnog sistema nasuprot kretanja kazaljke na časovniku za ugao α=π 3. Translacija koordinatnog početka u tačku (-5,-5): Kompozitna matrica:

⎥⎥⎥

⎢⎢⎢

⎡−

−=

⎥⎥⎥

⎢⎢⎢

⎡⋅

⎥⎥⎥

⎢⎢⎢

⎡−

−⋅

⎥⎥⎥

⎢⎢⎢

−−=⋅⋅=

188010001

155010001

100010001

133010001

21 TRTM

b) 1. Translacija koordinatnog početka u tačku O’(3,3) 2. Refleksija prema X-osi 3. Rotacija nasuprot kretanja kazaljke za ugao α=90° 4. Translacija koordinatnog početka u tačku O’’(-5,-5). Kompozitna matrica:

⎥⎥⎥

⎢⎢⎢

⎡−

−=

⎥⎥⎥

⎢⎢⎢

⎡⋅

⎥⎥⎥

⎢⎢⎢

⎡ −⋅

⎥⎥⎥

⎢⎢⎢

⎡−⋅

⎥⎥⎥

⎢⎢⎢

−−=⋅⋅⋅=

188001010

155010001

100001010

100010001

133010001

21 TOOTM YX

Page 46: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 46 od 58

3. Zadatak Izračunati kompozitnu matricu preslikavanja objekata iz prozora (Window) sa slike 1 u prikazni prozor (Viewport) na slici 2. Prozor se nalazi u koordinatnom sistemu realnog sveta, a prikazni prozor u normalizovanom koordinatnom sistemu prikaznog uređaja.

x

y(10,9)

(2,3)

x

ya b

r

α

α = 30°a = 0.4b = 0.6r = 0.5

REŠENJE

M = TW ⋅ S ⋅ TVP ⋅ R

⎥⎥⎥

⎢⎢⎢

−−=

132010001

WT ⎥⎥⎥

⎢⎢⎢

⎡=

1000000

y

X

SS

S

64.0

86.0

=

=

y

x

S

S

⎥⎥⎥

⎢⎢⎢

⎡=

15.00010001

VPT ⎥⎥⎥

⎢⎢⎢

⎡°°°−°

=100030cos30sin030sin30cos

R

⎥⎥⎥

⎢⎢⎢

⎡ −=

13348.00201.000577.00333.000375.00649.0

M

Page 47: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 47 od 58

10 Geometrijske transformacije u 3D grafici 1. Zadatak

U desnom pravouglom koordinatnom sistemu (X-Y-Z) zadata je piramida temenima: A(2,0,2); B(2,0,0); C(4,0,0); D(4,0,2); E(3,1,1). Ukokliko se koordinatni sistem najpre rotira oko X-ose u suprotnom smeru od kazaljke sata za ugao α=45°, zatim translira u pravcu i smeru pozitivne X-ose tako da se tačka E nađe u Y-Z ravni i konačno rotira oko Y ose u smeru kazaljke sata za ugao β=45°, odrediti: a) kompozitnu matricu transformacije b) koordinate svih temena u transformisanom koordinatnom sistemu c) koordinate projekcija svih temena u perspektivi, ako se posmatrač nalazi u tački P(0,0,5)

REŠENJE

Po konvenciji, u desnom pravouglom koordinatnom sistemu, "rotacija oko X ose u suprotnom smeru od kazaljke na satu" podrazumeva da se za posmatrača koji se nalazi na pozitivnom delu X ose i gleda ka koordinatnom početku, ravan YoZ okreće oko koordinatnog početka u smeru suprotnom od smera kazaljki na satu. a) Kompozitna matrica transformacije: M=Rx*T*Ry

⎥⎥⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢⎢⎢

−−

=

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

⎡ −

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

⎡−

=

12

2302

23

021

22

21

021

22

21

02

2022

1000

0220

22

0010

02

2022

1003010000100001

1000

022

220

02

2220

0001

M b)

A’: (2,0,2,1)*M = (0.293, 1.414, 1.707) B’ = (-0.707, 0, 0.707) C’ = (0.707, 0, -0.707) D’ = (1,707, 1.414, 0.293) E’ = (0, 1.414, 0)

d) Matrica projekcije u perspektivi:

⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢

−=

100051000

00100001

PP

Projektovane tačke: A’’: A’*PP = (0.445, 2.15, 0) B’’ = (-0.823, 0, 0) C’’ = (0.620,0,0) D’’ = (1.814, 1.502, 0) E’’ = (0,1.414,0)

Page 48: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 48 od 58

2. Zadatak Pokretna kamera rotira u smeru kretanja kazaljke časovnika oko X-ose desnog pravouglog koordinatnog sistema za ugao α=30°, zatim se pomeri u pravcu i smeru negativne X-ose za 5 jedinica dužine i konačno rotira u smeru suprotnom od smera kretanja kazaljke na časovniku oko ose-Y za ugao β=15°. Smatrajući da je koordinatni sistem realnog sveta vezan za pokretnu kameru i da se ortogonalna projekcija originalne tačke M(x,y,z) nakon izvršenih transformacija nalazi u prozoru (Window) definisanom u X-Y ravni pomoću tačke A(-15,-5) u donjem levom uglu i tačke B(15,5) u gornjem desnom uglu, vrši se preslikavanje date projekcije tačke iz koordinatnog sistema realnog sveta u prikazni prozor (Viewport) definisan tačkama A’(0.1,0.1), B’(0.5, 0.25) datim u normalizovanim koordinatama uređaja. Postavljanjem “ogledala” na pravu x=0.6, donija se konačna slika u ogledalu M’ date tačke. Postaviti (jednu) matričnu jednačinu koja definiše sliku M’ u funkciji originalne tačke M. Napomena: nije potrebno izračunavati kompozitnu matricu, već samo uvrstiti konkretne vrednosti elemenata u elementarne matrice.

REŠENJE

M’ = M * transformacije u 3D * ortogonalna projekcija * preslikavanje u prikazni prostor * ogledanje M’ = M * ( (RX * TX * RY) * Po * (TW * S * TVP )* (Tx1 * OY * TX2))

⎥⎥⎥

⎢⎢⎢

⎡⋅

⎥⎥⎥

⎢⎢⎢

⎡−⋅

⎥⎥⎥

⎢⎢⎢

⋅⎥⎥⎥

⎢⎢⎢

⎡⋅

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

⋅⎥⎥⎥

⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

°°−

°°

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

°°−°°

⋅=

106.0010001

100010001

106.0010001

11.01.0010001

100

01015.00

0030

4.0

1515010001

100000010001

1000015cos015sin0010015sin015cos

1005010000100001

1000030cos30sin0030sin30cos00001

' MM

Page 49: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 49 od 58

3. Zadatak

U desnom pravouglom koordinatnom sistemu posmatrani objekti se nalaze u prostoru definisanom kvadrom: x∈[10,50], y∈[10,30], z∈[-50,0]. Prostim sažimanjem dati prostor se preslikava na prostor definisan kockom: x∈[10,20], y∈[10,20], z∈[-10,0]. a zatim projektuje sa perspektivom na XoY ravan sa centrom projekcije u tački D(0,0,10). Delove projekcije objekata koji se nalaze u prozoru prikazane ravni definisanom sa x∈[5,15], y∈[5,10], potrebno je preslikati u prikazni proszor, definisan slikom 1, uređaja sa normalizovanim koordinatama, tako da se stranica prozora y=5 preslika u stranicu prikaznog prrozora AB, pri čemu se tačka prozora (5,5) preslikava u tačku prikaznog prozora A. Postaviti matrične jednačine preslikavanja tačke iz zadatog 3D prostora u dati prikazni prozor.

x

y

a

B

b

α

α = 56.31°a = 0.3b = 0.2

A = (0.2,0.3)A

Napomena: potrebno je postaviti sve jednačine koje definišu preslikavanje originalne tačke (3D) u njenu sliku, i u sve matrice elementarnih transformacija uvrstiti konkretne vrednosti elemenata. Nije potrebno množiti matrice.

REŠENJE

1. Translacija koordinatnog sistema u tačku O1(10,10,0); 2. Skaliranje faktorima Sx=0.25, Sy=0.5, Sz=0.2; 3. Inverzna traslacija u tačku O(-10,-10,0) 4. Projekcija sa perspektivom tačke P(x,y,z) iz centra projekcije D(0,0,10) 5. Translacija koordinatnog početka u O2(5,5) 6. Skaliranje skala faktorima Sx = a/10, Sy=b/5 7. Rotacija u smeru kazaljke na satu za ugao α 8. Translacija koordinatnog početka u tačku O3(-0.2, -0.3) 4. Zadatak

a) Koristeći matrični račun i matrice elementarnih transformacija, odrediti matricu projekcije sa perspektivom na ravan x=5 za posmatrača koji se nalazi u tački P(0,0,5). Smatrati da se tačka M(x,y,z) koja se projektuje nalazi u desnom pravouglom koordinatnom sistemu.

b) Koristeći matricu projekcije iz tačke (a) izračunati koordinate projekcije tačke M(2.5, 5, 2.5)

REŠENJE

a) Matrica projekcije se dobija na sledeći način: T(5,0,5) * Ry(-π/2) * Pp(0,0,5) * Ry(π/2) * T(-5,0,-5) =

Page 50: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 50 od 58

⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

−⋅

⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢

−⋅

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡ −

⎥⎥⎥⎥

⎢⎢⎢⎢

−−

05000100001051101

1505010000100001

1000000100100100

100051000

00100001

1000000100100100

1505010000100001

b) Projekcija tačke M(x,y,z) je M’(x’=xw/w, y’=yw/w. z’=zw/w) gde je:

[ ] [ ]

⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢

⋅=

05000100001051101

1zyxwzyx www

M’ = (5,10,0)

5. Zadatak Postaviti matričnu jednačinu koja određuje projekciju sa perspektivom iz centra projekcije P(0,0,6) na projekcionu ravan y=5, slike proizvoljne tačke (u denom 3D koordinatnom sistemu) u ogledalu postavljenom na ravan z=-x+2. U sve matice elementarcnih transformacija koje učestvuju u matričnoj jednačini uvrstiti konkretne vrednosti elemenata, ali ne izračunavati kompozitnu matricu.

RESENJE

Matrica projekcije se dobija na sledeći način: M = T(0,0,2) * Ry(π/4) * Oxy * Ry(-π/4) * T(0,0,-2) * T(0,0,6) * Rx(π/2) * T(0,0,-5) * Pp(0,0,5) * T(0,0,5) *R(-π/2) * T(0,0,-6)

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

−⋅

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡−

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡ −

⎥⎥⎥⎥

⎢⎢⎢⎢

−⋅

⎥⎥⎥⎥

⎢⎢⎢⎢

−⋅

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1600010000100001

1000001001000001

1500010000100001

10002.0000

00100001

1500010000100001

1000001001000001

1600010000100001

1200010000100001

100000001000

1000010000100001

100000001000

0200010000100001

aa

aa

aa

aa

M

Page 51: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 51 od 58

11 OpenGL – Open Graphics Library OpenGL je softverski interfejs ka grafičkom hardveru. Interfejs se sastoji iz skupa od nekoliko stotina procedura i funkcija koje omogućavaju programeru da specificira objekte i operacije prilikom izrade kvalitethnih grafičkih prikaza – pogotovu obojenih, 3D objekata. OpenGL zahteva postojanje frame buffer-a. Iako će primitive moći da se iscrtaju, način na koji će se iscrtavanje vršiti i kvalitet iscrtavanje zavisi od postojanja i kvaliteta frame-buffer-a. Programerski & Implementatorski pogled na OpenGL - Programer: OpenGL – skup komandi koje omogućavaju prikaz 3D sveta - OpenGL kontekst – klasična paradigma konteksta za crtanje - Implementator: Treba realizovati svaku od funkcija uz maksimalno korišćenje akceleratorskih mogućnosti

zadatog hardvera - OpenGL se može posmatrati i kao state mašina - OpenGL operation - OpenGL je biblioteka koja se bavi isključivo pisanjem u i čitanjem iz frame buffer-a. OpenGL ne podržava

druge periferije, ulazne uređaje. OpenGL je zapravo sistem koji mora biti ugrađen u OS i programer je dužan da napravi ugradnju i koegzistenciju OpenGL sistema i OS.

- Jednostavnost OpenGL-a: postoje primitive i modovi. - Primitive su jednostavne: tačke (temena), segmenti linije, poligoni i pravougaonici. Primitive se definišu

grupom više čvorova (Vertex). Za svaki čvor vezani su podaci o boji, normali, teksturi. - Modovi su razni i nezavisni – svi modovi se postavljaju nezavisno od drugih modova. Naravno,

interakcijom, ili bolje reći kombinacijom modova – kreira se izlaz u frame buffer-u. - Komande se procesiraju po redu po kojem su primljene, iako može biti zastoja pre nego što se efekti komande

prikažu. Ovo praktično znači da se prvo zadata primitiva mora skroz iscrtati pre nego što sledeća primitiva dobije priliku da izmeni frame buffer.

- OpenGL podržava isključivo on call data binding. - OpenGL podržava direktnu kontrolu nad osnovnim 2D i 3D grafičkim osobinama: direktno se vide matrice,

formule za boju, i sl. - OpenGL ne podržava specifikaciju kompleksnih objekata i interakcija! Slično RISC hardveru – podržavati

sredstva a ne i samu situaciju. - OpenGL radi na klijent – server principu. Mrežna transparentnost. Server = OpenGL kontekst. - OS/ Window sistem alocira frame buffer, ne postoji OpenGL komanda za alociranje ili inicijalizaciju OpenGL-a,

takve operacije postoje van OpenGL-a i vezane su za host OS. - OpenGL je Open, tj. predviđen je da kao standard radi na nizu platformi => Specificira idealno ponašanje i

predviđa odstupanja. - Komande počinju sa gl. Specifične komande, koje se realizuju za potrebe implementacije OpenGL na određenoj

platformi imaju proširen prefiks. Na primer, komande za Microsoft Windows platformu imaju prefiks wgl, a komande za X-Windows okruženje imaju prefiks xgl.

- Sva izračunavanja su floating point tipa uz predviđene opsege brojeva! - OpenGL state: server & client. Frame buffer nije deo OpenGL stanja. Serverski state = modovi. - Sintaksa komande: void glVertex3f(float x, float y, float z) - Greške: glGetError() - Begin/End Paradigma

void glBegin(enum mode ); ... (niz instrukcija koje opisuju jednu vrstu primitive) void glEnd( void ); void glFlush( void );

Page 52: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 52 od 58

Slika 11.1

Na slici 11.1 su prikazane primitive koje OpenGL može da crta. Brojevima je označen redosled u kome se zadaju temena. Naziv primitive (ispisan ispod slike primitive) predstavlja predefinisanu simboličku konstantu koja se zadaje instrukciji glBegin(). Na primer: glBegin(GL_TRIANGLE_FAN);

Slika 11.2

Na slici 11.2 je prikazan OpenGL u vidu konačnog automata.

Page 53: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 53 od 58

- Zadavanje stanja: void glEnable(GLenum capability); void glDisable(GLenum capability);

GL_POINT_SMOOTH GL_LINE_SMOOTH GL_LINE_STIPPLE

void glColor3f(0.0, 1.0, 0.0); void glPointSize(GLfloat size); void glLineWidth(GLfloat width); void glLineStipple(GLint factor, GLushort pattern);

- Koordinatne transformacije

Slika 11.3

void glMatrixMode(GLenum mode)

mode: GL_MODELVIEW, GL_PROJECTION void glLoadIdentity() void glTranslate(TYPE x, TYPE y, TYPE z) void glRotate(TYPE angle, TYPE x, TYPE y, TYPE z) void glScale(TYPE x, TYPE y, TYPE z) void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far). void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far). void glViewport(GLint x, GLint y, GLsizei width, GLsizei height)

- Display liste

void glNewList(GLuint name, GLenum mode) void glEndList() void glCallList(GLuint name).

- 3D Animacija

- Double buffering - Swap buffera posle glFlush - IdleFunc

Page 54: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 54 od 58

- Tipična organizacija OpenGL programa main: find GL visual and create window initialize GL states (e.g. viewing, color, lighting) initialize display lists loop check for events (and process them) if window event (window moved, exposed, etc.) modify viewport, if needed redraw else if mouse or keyboard do something, e.g., change states and redraw redraw: clear screen (to background color) change state(s), if needed render some graphics change more states render some more graphics . . . swap buffers

- Biblioteke

GLU

Aplikacija

OpenGL

Aux/GLUT

Host OS

Page 55: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 55 od 58

12 Uklanjanje skrivenih površi 1. Zadatak (Backface removal)

Neprozirni tetraedar definisan je sledećim temenima: A(7,5,-8), B(2,4,-5), C(6,3,-3) i D(3,8,-4) Metodom za određivanje površi koje su okrenute licem, odnosno naličjem, prema posmatraču odrediti vidljivost svih površi tetraedra posmatranog iz tačke P(9,5,-10)

REŠENJE

Skalarni proizvod vektora noramle na površ n i vektora pogleda w određen je sledećim izrazom:

)()()( uvuvwuvuvwuvuvw xyyxzxzzxyyzzyxwn −+−−−=⋅

zPzPzyPyPyxPxPxzPzPzyPyPyxPxPxzPzPzyPyPyxPxPx

uuu

vvv

www

.2.1,.2.1,.2.1

.2.3,.2.3,.2.3.2.,.2.,.2.

−=−=−=−=−=−=−=−=−=

P1, P2 i P3 su tri sukcesivna temena određenog trougla u smeru nasuprot kretanja kazaljke časovnika (posmatrano izvan tetraedra), a P tačka u kojoj se nalazi posmatrač. Poligon je vidljiv ukloliko je 0≥⋅ wn . ACB se vidi, BCD je zaklonjen, CAD se vidi, ABD se vidi. 2. Zadatak (Z-Buffer)

Dat je trougao A(3,3,3), B(5,7,1), C(7,1,5). a) Koristeći ideju Z-bafer algoritma, odrediti da li ravan određena datim trouglom zaklanja tačke P(4,4,1), Q(2,5,4)

i R(4,6,2) za posmatrača koji se nalazi u tački X(0,0,+∞). b) Ako je u z-bafer postupku analize trougla ABC određena koordinata z tačke M(x,y,z) koja pripada trouglu,

kolika je koordinata z’ tačke M’(x+1, y, z’)?

REŠENJE

a) Jednačina ravni određene trougloma ABC:

0353137313735333

det =−−−−−−−−− zyx

4x - 12y - 20z + 84 = 0

5213 +−

=yxz

ZP’=2.5> 1 = ZP, zaklanja P ZQ’=1.6< 4 = ZQ, ne zaklanja Q ZR’=1.4< 2 = ZR, ne zaklanja R

b) 51

51

5213

5213)1(' +=+

+−=

+−+= zyxyxz

w

uvn

= ×n u v

Page 56: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 56 od 58

3. Zadatak (Z-Buffer) Trougao A(3,3,3), B(5,7,2), C(7,2,5) posmatra se kamerom koja se nalazi u tački (2,2,10) koja sliku projektovanu ortogonalnom projekcijom na XY ravan na prozor zadat temenima L(0,0) R(10,10). Slika se prikazuje na monitoru u viewportu oblika pravougaonika sa temenima (0.1, 0.1), (0.9, 0.9). Naći vrednost Z-buffera u tački D(0.5,0.5).

REŠENJE

Slika se na ekranu dobija transformacijom: )1.0,1.0()08.0,08.0()10,2,2()10,2,2( −−⋅⋅−−−⋅⋅= TSTPTM ortho :

Av(0.34,0.34) Bv(0.5, 0.67) Cv(0.66,0.26). Tačka (0.5,0.5) nalazi se u Z bufferu! Treba naći poziciju tačke D(0.5, 0.5) u prozoru, primenom transformacije:

)5.12,5.12()1.0,1.0(' STM ⋅= D’= D⋅M’= (5, 5) Jednačina ravni određene trougloma ABC:

0353237323735333

det =−−−−−−−−− zyx

7x - 8y - 18z + 57 = 0

8888.218

57585718

5787=

+⋅−⋅=

+−=

yxz

Page 57: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 57 od 58

13 Animacija 1. Zadatak

Pokretna virtuelna kamera postavljena u koordinatni početak desnog koordinatnog sistema rotira u smeru nasuprot kretanja kazaljke časovnika oko ose definisane pravom (x=4; z=-6). Ako punu rotaciju kamera obavi za 10s a) koliko slika je potrebno formirati u toku jedne rotacije kamere za dobru animaciju? b) Odrediti kompozitnu matricu transformacije proizvoljne tačke u prostoru između dve sukcesivne animacione

slike

REŠENJE

a) Pošto perzistencija čovekovog vida dozvoljava razlikovanje najviše 24 slike u vremenu 1s, broj slika za dobru animaciju iznosi:

2402410 1 =⋅= sslika sN b) Ugao za koji se pomeri kamera između dve animacione slike iznosi:

°=°

= 5.1240360α

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

−⋅

⎥⎥⎥⎥

⎢⎢⎢⎢

=⋅⋅=

1604010000100001

10000cos0sin00100sin0cos

1604010000100001

αα

αα

iy TRTM

6cos6sin44sin6cos4

100cos0sin00100sin0cos

−+−=+−−=

⎥⎥⎥⎥

⎢⎢⎢⎢

−=

αααα

αα

αα

BA

BA

M

2. Zadatak U jednoj animaciji u realnom vremenu u kojoj se koriste dve ravni video memorije potrebno je translatorno pomerati popunjen romboid čija je jedna ivica u početnoj poziciji definisana tačkama A(10,10) i B(20,60), a druga ivica paralelna horizontalnoj osi ekrana. Na svakoj novoj poziciji romboid menja nijansu a za sobom ostavlja trag, tj. pozadinia se ne restaurira. Kolika može biti maksimalna dužiina horizontalne ivice ya dobru animaciju u realnom vremenu, ako se na sukcesivnim slikama romboid pomera najviše za jedan piksel na “osmo-susednu” poziciju? Prosečno vreme izračunavanja i iscrtavanje jednog piksela je Tpix=8μs.

REŠENJE

Pod pretpostavkom da se na svakoj novoj poziciji popunjeni romboid iscrtava u celini i da se radi sa dve ravni video memorije, u toku prikazivanja slike iz jedne ravni (1/25s), u kojoj je romboid na poziciji (x,y), potrebno je u aktivnoj ravni dva puta iscrtati romboid: na poziciji (x,y) i sledećoj poziciji. Sa više od dve ravni broj romboida koje treba iscrtati za vreme (1/25s) je veći od 2, pa bi dužina horizontalne stranice bila manja. Znači, za iscrtavanje jednog romboida na raspolaganju je 1/50s. Ako se broj piksela koje treba iscrtati obeleži sa N, a dužina horizontalne stranice romboida sa K:

4951/2500)11060(

2500108

max

6501

max

=⇒≤⋅+−≥

=⋅

= −

KKKN

N

Page 58: 1 RASTERSKI PRIKAZIVA ČI · ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG) MATERIJALI SA VEŽBI STRANICA 1 od 58 1 RASTERSKI PRIKAZIVAČI Sledeća slika prikazuje izgled signala

ELEKTROTEHNIČKI FAKULTET RAČUNARSKA GRAFIKA (RI5RG)

MATERIJALI SA VEŽBI STRANICA 58 od 58

14 Literatura A. Watt, "3D Computer Graphics", Second Edition, Addison–Wesley N. Magnenat-Thalmann, D. Thalmann, "Image Synthesis, Theory and Practice", Springer-Verlag,

1987 Materijali o parametarskim krivama i površima, Kenneth I. Joy, Visualization and Graphics Research

Group, Department of Computer Science, University of California, Davis “82720/GDC Application Manual”, Intel Corp. www.digit-life.com www.opengl.org Wikipedia – the free encyclopedia