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.
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.
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).
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
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
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.
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.
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
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
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.
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
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
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.
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
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
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.
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.
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
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.
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:
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
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.
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
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.
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
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.
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
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
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
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)
31
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Iz date tačke gledanja, lokacije gledanja, i up-vektoraspecificiranog u wcs koordinatama.
Relacije izmedju koordinatnih sistema
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.
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
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.
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)
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
37
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
prozor i volumen gledanja ( viewing volume ) kod
perspektivne projekcije
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.
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.
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.
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.
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:
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.
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.
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
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.
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.
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.
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.
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 ).