osnovni koncepti grafi Čkog programiranja

50
1 OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA Interaktivna manipulacija oblikom igra glavnu ulogu u CAD/CAM/CAE sistemima. Programiranje koje kreira grafički displej na displej monitoru je dakle bitan dio CAD/CAM/CAE softvera. Dakle, mi treba da analiziramo terminologiju i koncepte koji su u osnovi grafičkog programiranja. Grafičke biblioteke Termin računarsko programiranje je korišten da označi pisanje kompozicije koristeći neke računarske komande u saglasnosti sa prethodno definiranom gramatikom. Kompozicija će generisati odgovarajući niz željenih brojeva i karaktera na terminalu ili u data fajlu, kada se izvrši sa unosom odredjenog broja karaktera. Danas, pak, nije neoubićajeno za programsku kompoziciju, osim što radi sa brojevima i karakterima, da prihvata grafičke informacije kao ulaz i proizvede grafički displej kao izlaz.

Upload: others

Post on 01-Dec-2021

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

1

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Interaktivna manipulacija oblikom igra glavnu ulogu uCAD/CAM/CAE sistemima. Programiranje koje kreira grafičkidisplej na displej monitoru je dakle bitan dio CAD/CAM/CAEsoftvera. Dakle, mi treba da analiziramo terminologiju ikoncepte koji su u osnovi grafičkog programiranja.

Grafičke biblioteke

Termin računarsko programiranje je korišten da označipisanje kompozicije koristeći neke računarske komande usaglasnosti sa prethodno definiranom gramatikom.Kompozicija će generisati odgovarajući niz željenih brojeva ikaraktera na terminalu ili u data fajlu, kada se izvrši saunosom odredjenog broja karaktera. Danas, pak, nijeneoubićajeno za programsku kompoziciju, osim što radi sabrojevima i karakterima, da prihvata grafičke informacije kaoulaz i proizvede grafički displej kao izlaz.

Page 2: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

2

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Aktivnost koja uključuje grafiku kao ulaz i izlaz se naziva

grafičko programiranje, a oblast koja se na nju odnosi se

naziva kompjuterska grafika ( computer graphics).

Pored osnovnog softvera tj. Operativnog sistema ( OS ), te

editora i kompajlerskog softvera koji su potrebni kod

konvencionalnog programiranja, neki osnovni grafički softver

je potreban za grafičko programiranje.

Grafički softver se može podjeliti u dvije grupe: drajveri

uredjaja ( device drivers) i grafičke biblioteke.

Drajver uredjaja se može posmatrati kao dio programskog

koda zavisnog od tipa računara koji direktno kontrolira

procesnu jedinicu displeja, grafičkog uredjaja tako da je

elektronski mlaz usmjeren na željenu poziciju. Svaki drajver

uredjaja zavisi od samog uredjaja , kao da se radi o

hardverskoj vezi za specifičnu procesnu jedinicu displeja.

Page 3: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

3

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Dakle procesna jedinica displeja grafičkog uredjaja radi sa

specifičnim drajverom uredjaja. Ovo je analogno načinu na

koji jedan tip asamblerskog jezika se može razumjeti samo

od strane specifičnog tipa računara a program napisan u

tom asamblerskom jeziku se može izvršiti samo na tom tipu

računara. Ista se stvar dešava kada grafički program se piše

direktno sa drajverom uredjaja, kao što to prikazuje slijedeća

slika. To znači da grafički program treba biti ponovno

napisan sa komandama odgovarajućeg drajvera uredjaja

kada se koristi različit grafički uredjaj. Nadalje, svaka

komanda drajvera uredjaja ima samo primitivne mogućnosti,

tako da program koji je napisan sa tim komandama bi bio

vrlo dugačak ako bi trebao da izvršava bilo kakav realan

zadatak. To bi rezultiralo u programu sa slabom čitljivošću (

readability).

Page 4: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

4

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Programeri danas žele da pišu programe u jezicima visokog

nivoa. Pri tome ni grafičko programiranje ne može biti

izuzetak, naročito kada se uzmu u obzir neprilike

prouzrokovane korištenjem komandi niskog nivoa za

drajvere uredjaja.

Tip grafičkog programiranja sa direktnim korištenjem drajvera

uredjaja

Page 5: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

5

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Zbog toga je uspostavljena opšta praksa da se opremi

grafički uredjaj sa bibliotekom koja se naziva grafička

biblioteka ( graphics library). Slićno kao i matematska

biblioteka (math library) kod konvencionalnog programiranja,

grafička biblioteka je skup subrutina, svaka od kojih ima

neku specifičnu namjenu. Naprimjer, subrutina može crtati

liniju ili krug. Grafićka biblioteka se gradi na vrhu drajvera

uredjaja, kao što je prikazano na narednoj slici:

Tip grafičkog programiranja sa korištenjem grafičke biblioteke

Page 6: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

6

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Svaka subrutina je kreirana korištenjem podržavajućeg seta

komandi drajvera uredjaja. Naprimjer, subrutina za crtanje

kruga može biti komponovana od serije komandi drajvera

uredjaja koje crtaju kratke pravolinijske segmente.

Subrutine grafičke biblioteke se mogu koristiti na potpuno isti

način kao i matematske biblioteke, to jest, potrebna

subrutina se poziva iz glavnog programa kao što se sinusne

i kosinusne funkcije iz math biblioteke pozivaju kada su

potrebne vrijednosti ovih funkcija. Jedan problem sa

subrutinama u grafičkoj biblioteci je da njihova imena i način

na koji se pozivaju (napr, ulazni i izlazni argumenti), variraju

za svaku grafičku biblioteku. Ovo ne mora biti problem ako

jedna grafička biblioteka može voditi sve postojeće grafičke

uredjaje: ovaj aranžman je teoretski moguć ako svi drajveri

postojećih uredjaja podržavaju grafičku bibloteku.

Page 7: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

7

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Medjutim, zbog praktičnih razloga softverski vendori ne

mogu ili ne žele da razvijaju grafičku biblioteku koja može da

se interfejsira sa svim drajverima uredjaja, tako da su sve

grafičke biblioteke vezane samo sa ograničenim brojem

grafičkih uredjaja, i kao rezultat toga, grafički program

možda mora biti ponovno napisan sa drugom grafičkom

bibliotekom, ako se koristi mnogo tipova grafičkih uredjaja.

Jedan od načina prevazilaženja ovog problema bi bio za one

koji razvijaju grafičke biblioteke da koriste isti skup subrutina

sa istim imenom, argumentima i mogućnostima ( u praksi je

pak svaka subrutina implementirana sa skupom komandi

drajvera uredjaja koji su nezavisno izabrani od strane

svakog razvojnog inženjera koji piše program). Na ovaj

način, grafički programi ne bi morali biti modificirani na

izvornom ( source) nivou, čak i kada se promjeni grafički

uredjaj.

Page 8: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

8

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Jedan primjer ovakvog pristupa je bio CORE grafički sistem

predložen 1977 od strane Specijalne interesne grupe za

kompjutersku grafiku ( Special Interest Group on Computer

Graphics- SIGGRAPH), u okviru udruženja za računarske

mašine ( Assosiation for Computing Machinery – ACM ).

Medjutim CORE grafički sistem nije obezbjedivao dovoljno

komandi da bi se koristile sve mogućnosti raster grafičkih

sistema, pošto ovi sistemi još nisu bili dovoljno razvijeni

kada je CORE razvijen. Grafički kernel sistem ( Graphics

Kernel System- GKS), je razvijen od strane medjunarodne

organizacije za standarde ( International Standard

Organization-ISO), negdje u isto vrijeme. GKS se smatrao

standardom za dvodimenzionalnu grafiku, i on je kasnije

proširen na GKS-3D za trodimenzionalnu grafiku.

I CORE i GKS imaju neke nedostatke u odnosu na podršku

Page 9: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

9

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

za dinamičke displeje kao i raznovrsne tipove korisničkih

interfejsa. Zbog toga je ISO sugerisao drugi standard :

Programerski hijerarhijski interaktivni grafički sistem (

Programmer’s Hierarchical Interactive Graphics System –

PHIGS), koji je postao de facto standardna grafička

biblioteka za većinu radnih stanica. Kasnije PHIGS je bio

proširen da postane PHIGS Extension to X ( PEX),

uključivanjem X prozora ( X Windows) sistem za rad u okviru

prozora ( tj., kreiranje, manipulisanje, i zatvaranje prozora).

Odatle, grafički programi pisani u PEX-u se mogu koristiti

nezavisno od tipa radnih stanica i mrežnog okruženja,

beneficija koja je naslijedjena od X Windows sistema.

Razvijen nezavisno od organizacija za standadizaciju,

pojavio se kao komercijalna grafička biblioteka, OpenGL,

koja postaje sve popularnija, zbog raznovrsnosti jer može da

Page 10: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

10

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

drajvuje i inženjerske radne stanice kao i personalne

računare ( pod Windows NT OS ), i u mrežnom okruženju.

OpenGL je proširenje od GL, koja je bila vlastita grafička

biblioteka mašina Silicon Graphics. Zbog popularnosti Sun

mašina u računarskim aplikacijama, OpenGL je postao

defacto standardna grafička biblioteka.

KOORDINATNI SISTEMI

Dva osnovna zadatka koja se zahtjevaju da bi se prikazala

slika objekta na grafičkom uredjaju su :

1) specificiranje lokacije svih tačaka objekta u prostoru, i

2) odredjivanje koje lokacije na displej monitoru se trebaju

zaposjesti od strane ovih tačaka.

Dakle, nužan je koordinatni sistem da obezbjedi referencu za

specificiranje lokacije tačke i u prostoru i u monitoru.

Page 11: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

11

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Razumjevanje relacija izmedju različitih koordinatnih sistema

je bitno, naročito u računanju gdje je trodimenzionalna tačka

projektovana na displej monitor. Projekcija se pojavljuje na

isti način kao što se i slika projektuje na retinu oka

posmatrača.

Jedan koordinatni sistem je koordinatni sistem uredjaja (

device coordinate system), koji se koristi kao referentni u

definiranju lokacije na displej monitoru. Općenito,

koordinatni sistem uredjaja uključuje u osu u horizontalnom

pravcu i v osu u vertikalnom pravcu, kao što je prikazano na

narednoj slici. Primjetimo da se početak koordinatnog

sistema može proizvoljno izabrati. Nadalje, treča osa,

okomita na u i v ose, nije definirana pošto su u i v ose

dovoljne da definiraju bilo koju lokaciju na displej monitoru.

U stvari svaka takva lokacija je definirana sa dvije u i v

Page 12: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

12

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

cjelobrojne vrijednosti, koje daju broj piksela koje stoje

izmedju početka koordinatnog sistema uredjaja i lokacije od

interesa u u i v pravcima. Medjutim, ista lokacija na monitoru

može imati različite u i v vrijednosti, zavisno od lokacije

koordinatnog početka, zatim smjera u i v ose, i opsega u i v

vrijednosti za cijeli monitor: ove se mogu arbitrarno postaviti

za svaki različiti grafički uredjaj, kao što je pokazano na

narednoj slici. Zbog toga, koordinate uredjaja koje se koriste

u grafičkom programu možda moraju biti promjenjene ako

ista slika se mora iscrtati u različitim grafičkim uredjajima.

Virtualni koordinatni sistem uredjaja ( virtual device

coordinate system) izbjegava opisane probleme

koordinatnog sistema uredjaja. Virtualni koordinatni sistem

uredjaja ima isti početak , iste u i v ose, i isti opseg u i v

vrijednosti za sve radne stanice. Riječ virtualni se koristi

Page 13: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

13

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

pošto koordinatni sistem postoji samo u programerskoj

imaginaciji. Obićno, ima početak u donjem lijevom uglu

monitora, u osa se produžuje u desno, v osa se proširuje

prema gore, a opseg vrijednosti u i v je od 0 do 1. Time,

tačka specificirana vrijednostima u odnosu na virtuelni

koordinatni sistem uredjaja će uvjek zauzimati istu lokaciju

nezavisno od tipa grafičkog uredjaja.

Page 14: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

14

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Kao rezultat toga, grafički programer može specificirati oblikkonzistentno bez da mora da razmatra specifični koordinatnisistem uredjaja. U ovom slučaju, znajući koji je grafičkiuredjaj kontrolisan drajverom, grafički program šaljevrijednosti virtualnih kooridinata na rutinu drajvera uredjaja,koja konvertuje virtualne koordinate u koordinate uredjaja uskladu sa koordinatnim sistemom uredjaja za specifičnigrafički uredjaj.

I koordinatni sistem uredjaja i virtualni k.s. uredjajaobezbjedjuju koordinatne sisteme koji specificiraju lokacijudvo dimenzionalnog displej monitora. Posmatrajmo sadakoordinatne sisteme koji definiraju lokaciju tačke utrodimenzionalnom prostoru. Postoje u osnovi tri takvakoordinatna sistema: svjetski koordinatni sistem ( worldcoordinate system) kojeg ćemo u nastavku nazvati kaovanjski k.s, koordinatni sistem modela ( model coordinatesystem-mks) i posmatraćev koordinatni sistem

Page 15: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

15

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

( viewing coordinate system- vcs).

Svjetski koordinatni sistem ( wcs), je referentni koordinatni

sistem koji se koristi da opiše kako svijet od interesa oko nas

izgleda, kao što mu i ime implicira ( tj. koji tipovi objekata

postoje u svijetu i kako su oni locirani). Naprimjer, ovaj se

koordinatni sistem može koristiti da opiše lokacije i

orjentacije stolova, stolica, i table u okruženju u kojem je

svijet od interesa -učionica.

Sada mi treba da opišemo oblik svakog objekta u tom

svijetu. Oblik objekta je definiran koordinatama svih njegovih

tačaka, ili nekih karakterističnih tačaka na objektu u odnosu

na koordinatni sistem vezan uz objekat. Ovaj koordinatni

sistem se naziva koordinatni sistem modela (mcs).

Koordinate tačaka na objektu definirane unutar k.s modela

ne mjenjaju svoje vrijednosti čak i kada objekat se translira

Page 16: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

16

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

ili rotira u prostoru, nego su isključivo odredjene oblikom

objekta. Dakle, k.s modela se kreće sa objektom. Ovo je

razlog zašto je oblik svakog objekta definiran u odnosu na

njegov vlastiti k.s modela. Lokacija i orjentacija svakog

objekata se onda specificira sa relativnom lokacijom i

orinjentacijom njegovog k.s modela, u odnosu na vanjsi k.s (

world cs). Relativne lokacije i orjentacije dva koordinatna

sistema su definirane sa transformacionom matricom, koja

će biti kasnije razmatrana. Sa vanjskim kooridinatnim

sistemom ( wcs ) i mcs za sve objekte u svijetu od interesa,

scena tog svijeta ( tj layout i oblici svih objekata u svijetu ) je

kompletno definirana. Drugim riječima, koordinate svih

tačaka objekata se mogu dobiti u vanjskim koordinatama

nakon primjene pridruženih transformacionih matrica.

Page 17: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

17

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Koordinatni sistemi u Autocadu

U Autocad-u postoje dva koordinatna sistema, fiksni

koordinatni sistem koji se zove svjetski koordinatni sistem (

WCS – world coordinate system) ,i pokretni koordinatni

sistem koji se naziva koordinatni sistem korisnika ( UCS-

user coordinate system). U WCS, X osa je horizontalna, Y

osa je vertikalna a Z osa je perpendikularna ( okomita ) na XY

ravan. Koordinatni pocetak je tamo gdje se X i Y ose sijeku (

0,0) u donjem lijevom uglu crteža.

UCS se definiše preko WCS. U praksi svi unosi koordinata

koriste tekući UCS sistem.

Pomjeranje UCS k.s. može olakšati rad na specifičnoj sekciji

crteža. Rotacija ucs omogućava da specificiramo tačke u

trodimenzionalnim ili rotiranim pogledima:

Modovi:Snap, Grid, i Ortho rotiraju u odnosu na novi UCS k.s.

Page 18: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

18

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Možemo promjeniti lokaciju koordinatnog sistema korisnika

koristeći neku od slijedečih komandi:

• pomjeriti UCS definišući novi koordinatni početak

• poravnavanjem UCS sa postojećim objektom ili sa tekućim

pravcem gledanja. ( viewing direction)

• Rotacijom tekučeg UCS oko bilo koje od njegovih osa.

• Restauriranjem pohranjenog UCS.

Kada smo definisali UCS, možemo ga imenovati i zatim

restaurirati kada ga ponovno budemo trebali. Ako nam više

nije porteban imenovani UCS, možemo ga obrisati.

Takodjer možemo restaurirati UCS da se poklapa sa WCS.

UCS komandi možemo pristupiti ili preko UCS alatne letvice

ili preko komande na komandnoj liniji: UCS

Page 19: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

19

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Nakon izdavanja komande bit će prikazana informacija o

koordinatnom pocetku i osama izabranog UCS.

Po defaultu, k. početak i vrijednosti za X,Y i Z ose su

izračunate relativno u odnosu na svjetski k.s.

Da indicira lokaciju i orjentaciju UCS, AutoCAD prikazuje

UCS ikonu ili u koordinatnom početku UCS ili u donjem

desnom uglu tekučeg porta gledanja ( viewport).

Možemo koristiti jednu od tri stila ikona da predstavimo

UCS.

Page 20: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

20

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Koristimo komandu UCSICON da izaberemo izmedju

prikaza 2D ili 3D UCS ikone. Koristimo komandu

SHADEMODE da prikažemo osjenćenu UCS ikonu.

Ako je ikona prikazana u koordinatnom početku tekučeg

UCS, pojavljuje se krst (+) na ikoni. Ako je ikona prikazana

u donjem lijevom uglu porta gledanja , onda se neće pojaviti

krst (+) na ikoni. Ako imamo više portova gledanja (

viewports) , svaki port prikazuje svoju UCS ikonu.

AutoCAD prikazuje UCS ikonu na različite načine da bi

pomogao vizuelizaciji orjentacije ravni crtanja. Na narednim

slikama su prikazani prikazi mogućih ikona:

Page 21: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

21

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Možemo koristiti UCSICON komandu da predjemo izmedju

2D UCS ikone i 3D UCS ikone.

UCS ikona o obliku prelomljene olovke zamljenjuje 2D UCS

ikonu kada je pravac gledanja u ravni koja je paralelna sa

UCS XY ravni. Ikona slomljene olovke indicira da je ivica XY

ravni skoro okomita na naš pravac gledanja. Na taj način

ikona nas upozorava da ne koristimo miš ili uredjaj koji

koristimo za ukazivanje položaja, da bi specificirali

Page 22: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

22

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

koordinate.

Kada koristimo miš kao uredjaj za pokazivanje položaja da

lociramo tačku, ona je normalno postavljena na XY ravan.

Ako je UCS rotiran tako da Z osa leži u ravni pralelno sa

ravni gledanja, tj. Ako je XY ravan okomita sa ivicom prema

posmatraču, tada je teško vizuelizirati gdje će tačka biti

locirana. U ovom slučaju, tačka će biti locirana na ravni

paralelnoj sa ravni gledanja, koja takodjer sadrži koordinatni

početak UCS k.s. Naprimjer, ako je pravac gledanja duž X

ose, koordinate koje su specificirane sa mišem će biti

locirane na YZ ravni, koja sadrži koordinatni početak UCS.

Treba koristiti 3D UCS da se vizuelizira na koju ravan će biti

projecirane ove koordinate. 3D UCS ne koristi ikonu

slomljene olovke.

Page 23: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

23

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Slijedeći zadatak je da se projektuju ovi trodimenzionalni

objekti, ili tačke objekata, na monitor kao što bi se

projektovale na retinu ljudskog oka. Dva tipa projekcije –

perspektivni i paralelni , se tipično koriste kod računarske

grafike, kao što je ilustrirano na slijedećoj slici:

slika 3.4

Dva tipa projekcije: a) perspektivna b) paralelena projekcija

Page 24: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

24

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Za obadva tipa projekcije, tačka gledanja ( viewpoint) i

lokacija gledanja ( viewsite), trebaju biti specificirani. Tačka

gledanja se smatra da je to oko posmatrača. Lokacija

gledanja je tačka na objektu, ona definira pravac gledanja

tako da vektor koji je usmjeren iz tačke gledanja ka lokaciji

gledanja postane pravac gledanja.

Kod projekcije perspektive, sve tačke na objektu predmeta

od interesa su spojene sa centrom projekcije, obićno

lociranim duž linije od lokacije gledanja ka tački gledanja, i

tačaka presjeka izmedju ovih linija i ekrana koji sadrži

projektovanu sliku. Ekran je lociran izmedju tačke gledanja

i lokacije gledanja. Kod paralelne projekcije, paralelne linije

se vode iz svih tačaka na objektu u pravcu gledanja

definiranom sa lokacijom gledanja, i tačkom gledanja, kao i

ranije, te tačaka presjeka izmedju ovih linija i ekrana koji

sadrži sliku.

Page 25: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

25

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Slićno kao i kod projekcije perspektive, ekran je orjentiran

okomito na pravac projekcije za ortogonalnu projekciju.

Tačke projekcije opisane u bilo kojem od dva projekciona

metoda se mogu lako sračunati ako koordinate tačaka na

objektu koji se projektuje, su date u odnosu na xv yv zv

koordinatni sistem, kao što je pokazano na prethodnoj slici.

Naprimjer, projekcione tačke u paralelnoj projekciji se mogu

generirati jednostavno skupljajući Xv i Yv vrijednosti

odgovarajućih tačaka na objektu. Dakle, xv yv zv koordinantni

sistem se naziva koordinatni sistem gledanja ( viewing

coordinate system), pošto on olakšava projekciju gledanja.

Koordinatni sistem gledanja ( vcs) se konstruira tako da

posjeduje slijedeće karkateristike: Kao što je i pokazano na

prethodnoj slici, početak vks je lociran u lokaciji gledanja (

vs), osa zv je upravljena ka tački gledanja iz koor. početka

Page 26: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

26

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

a yv osa je paralelna sa vertikalnim pravcem na ekranu.

Preostala osa, xv se odredjuje sa krosproizvodom yv i zv osa.

Većina ljudi prirodno primjećuje vertikalni pravac u prostoru

kao vertikalni pravac na ekran, tako da se yv osa odredjuje

da bude projekcija vertikalnog vektora u prostoru na ekran.

Kod većine grafičkih biblioteka, se predostavlja da korisnik

gleda ovaj vertikalni vektor u prostor, koji se zove vektor

prema vani ( up vector) u vanjskom koordinatnom sistemu (

wcs). Tačka gledanja i lokacija gledanja se takodjer

specificiraju u vanjskim koordinatama ( wcs) , kao što se

može vidjeti na narednoj slici.

Kada je koordinatni sistem gledanja (vcs) definiran i

izvedene sve koordinate tačaka od interesa na objektu u

odnosu na ovakav koordinatni sistem, slijedeći zadatak je

da se sračunaju lokacije njihovih projekcija na ekranu.

Page 27: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

27

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Tačka gledanja ( viewpoint) i lokacija gledanja ( viewsite )

Mi već znamo da ove projekcione tačke se mogu lako izvesti

za paralelnu projekciju. Zbog toga mi trebamo samo da

opišemo proceduru da izračunamo projekcione tačke za

perspektivnu projekciju. Posmatrajmo poglede odozgo i sa

strana na prethodnoj slici kako su prikazani na

Page 28: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

28

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

narednoj slici. Tačka od interesa je označena sa i njenekoordinate u odnosu na vcs su označene sa Xv , Yv, i Zv .

Izračunavanje projekcione tačke

Page 29: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

29

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Primjenjujući pravilo sličnosti izmedju trouglova, dobićemo:

i

U jednačinama ( 3.1 ) i (3.2) Xs i Ys su distance projekcije od

tačke označena sa Rastojanja su mjerena u horizontalnim

i vertikalnim pravcima od ekrana od tačke gdje zv osa

presjeca ekran. Dakle L je rastojanje izmedju lokacije

pogleda i centra projekcije, a S je rastojanje izmedju centra

projekcije i ekrana. Jednačine (3.1) i (3.2) indiciraju da tačka

Page 30: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

30

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

sa većom Zv vrijednošću će imati veće Xs i Ys vrijednosti,

koje čine da se linija rastojanja pojavljuje manjom nego

bliska njoj linija koja ima istu dužinu. Ove distance Xs i Ys

će biti eventualno konvertovane u koordinate virtualnog

uredjaja posmatrajući željenu lokaciju centra i velićinu slike

koja treba da se pojavi na ekranu monitora.

Koordinatni sistemi koji su opisani su zajedno prikazani na

narednoj slici da se pojasne njihovi medjusobni odnosi .

Koordinatni sistemi su povezani sa transformacionim

matricama, kao što je već napomenuto. Time, lokacija i

orijentacija svakog koordinatnog sistema modela je

specificirana odgovarajućom transformacionom matricom u

odnosu na vanjski koordinatni sistem ( wcs). Koordinatni

sistem gledanja ( vcs) se takodjer može definirati sa

transformacionom matricom u odnosu na vanjski k.s ( wcs)

Page 31: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

31

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Iz date tačke gledanja, lokacije gledanja, i up-vektoraspecificiranog u wcs koordinatama.

Relacije izmedju koordinatnih sistema

Page 32: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

32

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Procedura za izračunavanje projekcionih tačaka, koristećitransformacione matrice, se može sumirati na slijedeći način:

- Prvo, vrijednosti koordinata tačke koja se projecira sekonvertuju iz koordinata modela u vanjske koordinate ( wcs)primjenjujući transformacionu matricu koja definira relativnutranslaciju i rotaciju izmedju wcs sistema i koordinatnogsistema modela. Ova operacija se naziva transformacijamodela i pokazana je na narednoj slici .

- Drugo, vrijednosti koordinata iste tačke se konvertuju izvanjskih koordinata (wcs) u koordinate gledanja primjenjujućitransformacionu matricu izmedju vanjskog koordinatnogsistema ( wcs) i koordinatnog sistema gledanja ( vcs), Ovaoperacija se naziva transformacija tačke gledanja ( viewingtransformation) , i pokazana je na narednoj slici.

- Treče, koordinate gledanja tačke se konvertuju u Xs i Ysvrijednosti sa jednačinama ( 3.1) i ( 3.2) , i ponovno u virtualnikoordinatni sistem.

Page 33: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

33

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Ova operacija se naziva transformacija projekcije i takodjer

je pokazana na narednoj slici. Konačno, koordinate

virtualnog uredjaja se konvertuju u koordinate uredjaja od

strane rutine drajvera uredjaja što je takodjer pokazano na

narednoj slici

Page 34: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

34

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Ove transformacije se obićno izvršavaju unutar grafičke

biblioteke, i grafički programer treba da samo specificira

neophodne informacije za svaku transformaciju. Naprimjer,

translacije i rotacije objekata koje korespondiraju sa njihovim

layoutom su obezbjedjene za transformaciju modela, tačka

gledanja: lokacija gledanja, i vektor gore ( up vector) su

obezbjedjeni za transformaciju gledanja: i tip projekcije

zajedno sa lokacijom centra projekcije i ekrana su

specificirane za transformaciju projekcije. Ipak, grafičke

biblioteke primitivnog nivoa mogu zahtjevati od programera

da piše kod za sve ove transformacije.

Page 35: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

35

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Prozor i portgledanja ( viewport)

Riječ prozor ( window) korištena u mrežnom okruženju, znači

odvojene oblasti na monotoru radne stanice kroz koji

korisnik interaktira sa različitim računarskim izvorima

spojenim na mrežu. Ipak, riječ prozor ima različito značenje

u računarskoj grafici. On definira region u prostoru koji će biti

projektovan na monitor tako da svaki objekat van prozora se

neće pojaviti na monitoru. U tom smislu, to je analogno

prozoru na kući kroz koji samo dio vanjskog svijeta je vidljiv

osobi koja je unutar kuće. Ova analogija izgleda da je razlog

zašto je izabrano ime prozor ( window). Prozor se obićno

definira kao pravougaonik na projekcionom ekranu sa

odgovarajućim Xv i Yv vrijednostima u koordinatnom sistemu

gledanja, kao što je pokazano na naredne dvije slike. Vidljivi

region , koji se naziva volumen gledanja ( viewing volume)

Page 36: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

36

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

zavisi od tipa projekcije ( tj. paralelopiped za paralelnuprojekciju i piramida za perspektivnu projekciju ).

prozor i volumen gledanja ( viewing volume ) kod

paralelne projekcije

Page 37: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

37

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

prozor i volumen gledanja ( viewing volume ) kod

perspektivne projekcije

Page 38: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

38

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Volumen gledanja može dati vrlo komplikovanu sliku kada seprojektuje pošto može uključiti nepotrebne objekte vrlodaleko ili blizu posmatrača. Dakle ponekad je poželjnopresječi volumen gledanja i sa bliskim i dalekim ravnima,kao što je pokazano na narednoj slici. Bliske i daleke ravniza paralelne projekcije i za perspektivnu projekciju su sličnodefinisani.

Page 39: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

39

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Viewport je oblast ( ili oblasti ) na monitoru gdje mi želimo

da se pojavi projektovani lik, kao što je pokazano na

narednoj slici. To je oblast na koju se mapira volumen

gledanja definiran sa prozorom. Mapiranje će uključiti

translaciju i skaliranje da bi se uzeo u obzir otklon centra

viewporta od centra monitora i razlike u velićini izmedju

prozora i viewporta.

Page 40: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

40

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Drugim riječima, Xs i Ys vrijednosti projekcionih tačakadobijenih iz jednačina ( 3.1) i (3.2) treba da se povećaju ilismanje za odredjene vrijednosti, tako da centar prozora sepojavi na centru viewporta umjesto na centru monitora.One takodjer treba da budu skalirane sa odredjenimfaktorima, tako da četiri granične tačke prozora postanučetiri granične tačke viewporta.

Odnos aspekta prozora mora biti isti kao i kod viewporta dabi se izbjegla distorzija lika. Inače bi, naprimjer krug mogaobiti prikazan kao elipsa.

IZLAZNE PRIMITIVE

Izlazne primitive su grafički elementi koji se mogu prikazatipomoću grafičke biblioteke. One mogu biti različite za svakuspecifičnu grafičku biblioteku, i samo izlazne primitivepodržavane od većine grafičkih biblioteka biće opisane unastavku ove sekcije.

Page 41: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

41

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

LINIJA

Pravolinijski segment se prikazuje kada se specificirajukoordinate njena dva kraja. Trodimenzionalne koordinatekrajeva se takodjer mogu koristiti u većini grafičkihbiblioteka, gdje se trodimenzionalne koordinate automatski

konvertuju u dvodimenzionalne projekcije. Atributi linije kaošto su : tip, debljina i boja se takodjer mogu specificirati.Tipovi linija koji su podržani od većine grafičkih biblioteka suprikazani na narednoj slici. Bitno je podržati ove tipove linijakod CAD sistema za crtanje pošto se one često koriste umašinskim, arhitektonskim i električnim crtežima.

Page 42: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

42

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Kod GKS, PHIGS i OpenGL, mogućnosti višelinijskih (

polyline ) segmenata se takodjer prisutne, pa se daju krajnje

linije polyline u sekvenci kao u narednoj matričnoj formi.

Kada samo treba prikazati jedan segment linije, matrica će

sadržavati samo koordinate dvije krajnje linije:

Page 43: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

43

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Poligon

Funkcija poligona je ista kao i polyline funkcija izuzev što

prvi red i posljednji red tačaka niza [P] trebaju biti iste.

Dakle, dobiće se isti grafički izlaz kao i sa polyline funkcijom.

Medjutim, poligon nacrtan funkcijom poligona nosi i

unutarnju i vanjsku informaciju, i njegova unutrašnjost se

može ispuniti sa uzorcima ( paternom )kao oni koji su

prikazani na narednoj slici.

Page 44: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

44

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Pored tipova ispune koji su pokazani, takodjer i unutarnjaboja poligona ( boja ispune) kao i tip, širina i boja perimetrase može takodjer specificirati kao atributi poligona.

Mada i krug kao i poligon se mogu nacrtati sa funkcijompoligona, funkcije koje traže mnogo manje ulaznihparametara ( napr. samo centralnu tačku i radius za krug idvije krajnje tačke i dijagonalu za pravougaonik) iraspoložive su u većini grafičkih biblioteka. Medjutim,interno, ove funkcije se realizuju sa poligonalnim funkcijama.

MarkerMarkeri se obićno koriste da diferenciraju tačke podataka ugrafu. Naredna slika pokazuje karaktere koji su naraspolaganju u većini grafičkih biblioteka.

Page 45: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

45

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

.

Tipovi markera se specificiraju kao atribut. Slićno kao isegment linije, polimarker je defaultni i u GKS i PHIGSgrafickim bibliotekama. OpenGL ne podržava markereeksplicitno, ali obezbjedjuje mehanizam pomoću kojeg sesvaki marker može definirati u bitmapi i pozvati kada jepotrebno. Na ovaj način, grafički program napisan uOpenGL ima mnogo bolju portabilnost kroz različitehardverske paltforme.

primjeri markera

Page 46: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

46

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Tekst

U većini grafičkih biblioteka podržana su dva tipa teksta:anotacioni tekst ( ekranski tekst ili dvodimenzionalni tekst )itrodimenzionalni tekst. Anotacioni tekst je uvjek lociran naravni displej monitora tako da njegov oblik se ne deformišebez obzira na njegovu orjentaciju. Trodimenzionalni tekst semože postaviti u bilo koju ravan, i time njegova lokacija iorjentacija su specificirani u vanjskim koordinatama ( wcs).

Bez obzira na vrstu teksta, font, zatim odnos visine premaširini, i ugao nagiba karaktera od kojih se sastoji tekst,moraju biti specificirani da bi se mogao prikazati taj tekst.

Nadalje, lokacija teksta kao i smjer tekst linije se takodjermoraju specificirati. Mogu se koristiti dvije vrste karakterfontova u tekstu: hardverski fontovi i softverski fontovi.Softverski font se prikazuje izvršavanjem odgovarajućihgrafičkih programa koji su unaprijed pohranjeni.

Page 47: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

47

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Softverski font treba duže vremena nego hardverski da seizvrši, ali je njegov oblik mnogo više rafiniran nego kodhardverskog fonta, koji se pohranjuje kao set pravolinijskihsegmenata za svaki karakater.

Page 48: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

48

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

GRAFIČKI ULAZI

Kao što je ranije napomenuto, grafički program će moždatrebati da prihvati grafičke elemente kao tačke, linije,poligone, kao ulaze pored brojeva i tekst stringova.Naprimjer, korisnik koji je htjeo da izračuna površinupoligona, na displeju, ili da ga skalira , treba da na nekinačin specificira poligon koji ga interesuje , medju svimostalim grafičkim elementima na displeju.

Dva tipa fizičkih uredjaja se koriste za specifikacijugrafičkog ulaza: lokator i dugme ( button). Lokator prenosinjegovu lokaciju, ili odgovarajuću lokaciju kurzora, nagrafički program. Dugme prenosi akciju korisnika, on i off,na tekučoj lokaciji kurzora. Miš, koji je najpopularniji grafičkiulazni uredjaj danas, je uradjaj sa obadvije ove funkcije.

Kotrljajuća kugla ( tracking ball) takodjer djeluje kao lokator,a tasteri na njoj djeluju kao dugme.

Page 49: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

49

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Tip ulaza koji obezbjedjuje grafička ulazna jedinica se može

karakterizirati sa tri moda: sampliranje, zahtjev, i uzimanje (

picking). Modul sampliranja kontinualno iščitava status,

najčešće lokaciju, ulaznog uredjaja. Naprimjer, možemo

koristiti u sampling modu da iscrtamo tekst na ekranu

pomjeranjem miša. Kako se miš pomjera, on kontinualno

iscrtava kurzor. U modu zahtjeva ( requesting mode), status

ulaznog uredjaja se čita samo onda kada pošaljemo zahtjev,

obićno pritiskom na dugme miša. Da bi pojasnili razliku

izmedju moda sampliranja i moda zahtjeva, posmatrajmo

situaciju kada poligon se crta specificirajući svoje vrhove tj.

tjemena ( vertices) grafički pomoću miša. U ovom slučaju, mi

pomjeramo miš sve dok kurzor nije propisno lociran i

pritisnemo dugme da specificiramo tu lokaciju kao tjeme

( verteks ) poligona.

Page 50: OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA

50

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Kurzor se pomjera po monitoru kako mi pomjeramo miš, dok

koristimo miš u modu samplovanja. Time, lokacija svakog

verteksa je obezbjedjena za grafički program, kada

koristimo miš u modu zahtjeva. Ova dva moda imaju jednu

zajedničkiu osobinu: Oni isporučuju lokaciju miša ili

odgovarajuću lokaciju kurzora ka grafičkom programu.

Medjutim u modu uzimanja ( picking mode), grafički ulazni

uredjaj identificira grafički element na koji kurzor poentira,

kada se pritisne dugme miša. Mi možemo identificirati

grafičke elemente po imenima doznačenim od strane

grafičkog programera, kada su elementi bili programirani.

Mod uzimanja je vrlo pogodan način editiranja postoječeg

crteža na ekranu ( tj. za brisanje nekih poligona ili promjenu

nekih graničnih linija poligona ).