OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJApeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-4.pdf · 1 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Interaktivna manipulacija oblikom

  • Upload
    doduong

  • View
    233

  • Download
    1

Embed Size (px)

Citation preview

  • 1

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

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

    Grafike biblioteke

    Termin raunarsko programiranje je koriten da oznaipisanje kompozicije koristei neke raunarske komande usaglasnosti sa prethodno definiranom gramatikom.Kompozicija e generisati odgovarajui niz eljenih brojeva ikaraktera na terminalu ili u data fajlu, kada se izvri saunosom odredjenog broja karaktera. Danas, pak, nijeneoubiajeno za programsku kompoziciju, osim to radi sabrojevima i karakterima, da prihvata grafike informacije kaoulaz i proizvede grafiki displej kao izlaz.

  • 2

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Aktivnost koja ukljuuje grafiku kao ulaz i izlaz se naziva

    grafiko 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 grafiki softver

    je potreban za grafiko programiranje.

    Grafiki softver se moe podjeliti u dvije grupe: drajveri

    uredjaja ( device drivers) i grafike biblioteke.

    Drajver uredjaja se moe posmatrati kao dio programskog

    koda zavisnog od tipa raunara koji direktno kontrolira

    procesnu jedinicu displeja, grafikog 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 specifinu procesnu jedinicu displeja.

  • 3

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Dakle procesna jedinica displeja grafikog uredjaja radi sa

    specifinim drajverom uredjaja. Ovo je analogno nainu na

    koji jedan tip asamblerskog jezika se moe razumjeti samo

    od strane specifinog tipa raunara a program napisan u

    tom asamblerskom jeziku se moe izvriti samo na tom tipu

    raunara. Ista se stvar deava kada grafiki program se pie

    direktno sa drajverom uredjaja, kao to to prikazuje slijedea

    slika. To znai da grafiki program treba biti ponovno

    napisan sa komandama odgovarajueg drajvera uredjaja

    kada se koristi razliit grafiki uredjaj. Nadalje, svaka

    komanda drajvera uredjaja ima samo primitivne mogunosti,

    tako da program koji je napisan sa tim komandama bi bio

    vrlo dugaak ako bi trebao da izvrava bilo kakav realan

    zadatak. To bi rezultiralo u programu sa slabom itljivou (

    readability).

  • 4

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Programeri danas ele da piu programe u jezicima visokog

    nivoa. Pri tome ni grafiko programiranje ne moe biti

    izuzetak, naroito kada se uzmu u obzir neprilike

    prouzrokovane koritenjem komandi niskog nivoa za

    drajvere uredjaja.

    Tip grafikog programiranja sa direktnim koritenjem drajvera

    uredjaja

  • 5

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Zbog toga je uspostavljena opta praksa da se opremi

    grafiki uredjaj sa bibliotekom koja se naziva grafika

    biblioteka ( graphics library). Slino kao i matematska

    biblioteka (math library) kod konvencionalnog programiranja,

    grafika biblioteka je skup subrutina, svaka od kojih ima

    neku specifinu namjenu. Naprimjer, subrutina moe crtati

    liniju ili krug. Grafika biblioteka se gradi na vrhu drajvera

    uredjaja, kao to je prikazano na narednoj slici:

    Tip grafikog programiranja sa koritenjem grafike biblioteke

  • 6

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Svaka subrutina je kreirana koritenjem podravajueg seta

    komandi drajvera uredjaja. Naprimjer, subrutina za crtanje

    kruga moe biti komponovana od serije komandi drajvera

    uredjaja koje crtaju kratke pravolinijske segmente.

    Subrutine grafike biblioteke se mogu koristiti na potpuno isti

    nain 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 grafikoj biblioteci je da njihova imena i nain

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

    za svaku grafiku biblioteku. Ovo ne mora biti problem ako

    jedna grafika biblioteka moe voditi sve postojee grafike

    uredjaje: ovaj aranman je teoretski mogu ako svi drajveri

    postojeih uredjaja podravaju grafiku bibloteku.

  • 7

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Medjutim, zbog praktinih razloga softverski vendori ne

    mogu ili ne ele da razvijaju grafiku biblioteku koja moe da

    se interfejsira sa svim drajverima uredjaja, tako da su sve

    grafike biblioteke vezane samo sa ogranienim brojem

    grafikih uredjaja, i kao rezultat toga, grafiki program

    moda mora biti ponovno napisan sa drugom grafikom

    bibliotekom, ako se koristi mnogo tipova grafikih uredjaja.

    Jedan od naina prevazilaenja ovog problema bi bio za one

    koji razvijaju grafike biblioteke da koriste isti skup subrutina

    sa istim imenom, argumentima i mogunostima ( u praksi je

    pak svaka subrutina implementirana sa skupom komandi

    drajvera uredjaja koji su nezavisno izabrani od strane

    svakog razvojnog inenjera koji pie program). Na ovaj

    nain, grafiki programi ne bi morali biti modificirani na

    izvornom ( source) nivou, ak i kada se promjeni grafiki

    uredjaj.

  • 8

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Jedan primjer ovakvog pristupa je bio CORE grafiki sistem

    predloen 1977 od strane Specijalne interesne grupe za

    kompjutersku grafiku ( Special Interest Group on Computer

    Graphics- SIGGRAPH), u okviru udruenja za raunarske

    maine ( Assosiation for Computing Machinery ACM ).

    Medjutim CORE grafiki sistem nije obezbjedivao dovoljno

    komandi da bi se koristile sve mogunosti raster grafikih

    sistema, poto ovi sistemi jo nisu bili dovoljno razvijeni

    kada je CORE razvijen. Grafiki 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

    proiren na GKS-3D za trodimenzionalnu grafiku.

    I CORE i GKS imaju neke nedostatke u odnosu na podrku

  • 9

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    za dinamike displeje kao i raznovrsne tipove korisnikih

    interfejsa. Zbog toga je ISO sugerisao drugi standard :

    Programerski hijerarhijski interaktivni grafiki sistem (

    Programmers Hierarchical Interactive Graphics System

    PHIGS), koji je postao de facto standardna grafika

    biblioteka za veinu radnih stanica. Kasnije PHIGS je bio

    proiren da postane PHIGS Extension to X ( PEX),

    ukljuivanjem X prozora ( X Windows) sistem za rad u okviru

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

    Odatle, grafiki programi pisani u PEX-u se mogu koristiti

    nezavisno od tipa radnih stanica i mrenog okruenja,

    beneficija koja je naslijedjena od X Windows sistema.

    Razvijen nezavisno od organizacija za standadizaciju,

    pojavio se kao komercijalna grafika biblioteka, OpenGL,

    koja postaje sve popularnija, zbog raznovrsnosti jer moe da

  • 10

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    drajvuje i inenjerske radne stanice kao i personalne

    raunare ( pod Windows NT OS ), i u mrenom okruenju.

    OpenGL je proirenje od GL, koja je bila vlastita grafika

    biblioteka maina Silicon Graphics. Zbog popularnosti Sun

    maina u raunarskim aplikacijama, OpenGL je postao

    defacto standardna grafika biblioteka.

    KOORDINATNI SISTEMI

    Dva osnovna zadatka koja se zahtjevaju da bi se prikazala

    slika objekta na grafikom uredjaju su :

    1) specificiranje lokacije svih taaka objekta u prostoru, i

    2) odredjivanje koje lokacije na displej monitoru se trebaju

    zaposjesti od strane ovih taaka.

    Dakle, nuan je koordinatni sistem da obezbjedi referencu za

    specificiranje lokacije take i u prostoru i u monitoru.

  • 11

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Razumjevanje relacija izmedju razliitih koordinatnih sistema

    je bitno, naroito u raunanju gdje je trodimenzionalna taka

    projektovana na displej monitor. Projekcija se pojavljuje na

    isti nain kao to se i slika projektuje na retinu oka

    posmatraa.

    Jedan koordinatni sistem je koordinatni sistem uredjaja (

    device coordinate system), koji se koristi kao referentni u

    definiranju lokacije na displej monitoru. Openito,

    koordinatni sistem uredjaja ukljuuje u osu u horizontalnom

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

    narednoj slici. Primjetimo da se poetak koordinatnog

    sistema moe proizvoljno izabrati. Nadalje, trea osa,

    okomita na u i v ose, nije definirana poto 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 GRAFIKOG PROGRAMIRANJA

    cjelobrojne vrijednosti, koje daju broj piksela koje stoje

    izmedju poetka koordinatnog sistema uredjaja i lokacije od

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

    moe imati razliite u i v vrijednosti, zavisno od lokacije

    koordinatnog poetka, zatim smjera u i v ose, i opsega u i v

    vrijednosti za cijeli monitor: ove se mogu arbitrarno postaviti

    za svaki razliiti grafiki uredjaj, kao to je pokazano na

    narednoj slici. Zbog toga, koordinate uredjaja koje se koriste

    u grafikom programu moda moraju biti promjenjene ako

    ista slika se mora iscrtati u razliitim grafikim uredjajima.

    Virtualni koordinatni sistem uredjaja ( virtual device

    coordinate system) izbjegava opisane probleme

    koordinatnog sistema uredjaja. Virtualni koordinatni sistem

    uredjaja ima isti poetak , iste u i v ose, i isti opseg u i v

    vrijednosti za sve radne stanice. Rije virtualni se koristi

  • 13

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    poto koordinatni sistem postoji samo u programerskoj

    imaginaciji. Obino, ima poetak u donjem lijevom uglu

    monitora, u osa se produuje u desno, v osa se proiruje

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

    taka specificirana vrijednostima u odnosu na virtuelni

    koordinatni sistem uredjaja e uvjek zauzimati istu lokaciju

    nezavisno od tipa grafikog uredjaja.

  • 14

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Kao rezultat toga, grafiki programer moe specificirati oblikkonzistentno bez da mora da razmatra specifini koordinatnisistem uredjaja. U ovom sluaju, znajui koji je grafikiuredjaj kontrolisan drajverom, grafiki program aljevrijednosti virtualnih kooridinata na rutinu drajvera uredjaja,koja konvertuje virtualne koordinate u koordinate uredjaja uskladu sa koordinatnim sistemom uredjaja za specifinigrafiki uredjaj.

    I koordinatni sistem uredjaja i virtualni k.s. uredjajaobezbjedjuju koordinatne sisteme koji specificiraju lokacijudvo dimenzionalnog displej monitora. Posmatrajmo sadakoordinatne sisteme koji definiraju lokaciju take 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 posmatraev koordinatni sistem

  • 15

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    ( viewing coordinate system- vcs).

    Svjetski koordinatni sistem ( wcs), je referentni koordinatni

    sistem koji se koristi da opie 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 moe koristiti da opie lokacije i

    orjentacije stolova, stolica, i table u okruenju u kojem je

    svijet od interesa -uionica.

    Sada mi treba da opiemo oblik svakog objekta u tom

    svijetu. Oblik objekta je definiran koordinatama svih njegovih

    taaka, ili nekih karakteristinih taaka na objektu u odnosu

    na koordinatni sistem vezan uz objekat. Ovaj koordinatni

    sistem se naziva koordinatni sistem modela (mcs).

    Koordinate taaka na objektu definirane unutar k.s modela

    ne mjenjaju svoje vrijednosti ak i kada objekat se translira

  • 16

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    ili rotira u prostoru, nego su iskljuivo odredjene oblikom

    objekta. Dakle, k.s modela se kree sa objektom. Ovo je

    razlog zato 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 rijeima, koordinate svih

    taaka objekata se mogu dobiti u vanjskim koordinatama

    nakon primjene pridruenih transformacionih matrica.

  • 17

    OSNOVNI KONCEPTI GRAFIKOG 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 crtea.

    UCS se definie preko WCS. U praksi svi unosi koordinata

    koriste tekui UCS sistem.

    Pomjeranje UCS k.s. moe olakati rad na specifinoj sekciji

    crtea. Rotacija ucs omoguava da specificiramo take u

    trodimenzionalnim ili rotiranim pogledima:

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

  • 18

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Moemo promjeniti lokaciju koordinatnog sistema korisnika

    koristei neku od slijedeih komandi:

    pomjeriti UCS definiui novi koordinatni poetak

    poravnavanjem UCS sa postojeim objektom ili sa tekuim

    pravcem gledanja. ( viewing direction)

    Rotacijom tekueg UCS oko bilo koje od njegovih osa.

    Restauriranjem pohranjenog UCS.

    Kada smo definisali UCS, moemo ga imenovati i zatim

    restaurirati kada ga ponovno budemo trebali. Ako nam vie

    nije porteban imenovani UCS, moemo ga obrisati.

    Takodjer moemo restaurirati UCS da se poklapa sa WCS.

    UCS komandi moemo pristupiti ili preko UCS alatne letvice

    ili preko komande na komandnoj liniji: UCS

  • 19

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Nakon izdavanja komande bit e prikazana informacija o

    koordinatnom pocetku i osama izabranog UCS.

    Po defaultu, k. poetak i vrijednosti za X,Y i Z ose su

    izraunate relativno u odnosu na svjetski k.s.

    Da indicira lokaciju i orjentaciju UCS, AutoCAD prikazuje

    UCS ikonu ili u koordinatnom poetku UCS ili u donjem

    desnom uglu tekueg porta gledanja ( viewport).

    Moemo koristiti jednu od tri stila ikona da predstavimo

    UCS.

  • 20

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Koristimo komandu UCSICON da izaberemo izmedju

    prikaza 2D ili 3D UCS ikone. Koristimo komandu

    SHADEMODE da prikaemo osjenenu UCS ikonu.

    Ako je ikona prikazana u koordinatnom poetku tekueg

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

    u donjem lijevom uglu porta gledanja , onda se nee pojaviti

    krst (+) na ikoni. Ako imamo vie portova gledanja (

    viewports) , svaki port prikazuje svoju UCS ikonu.

    AutoCAD prikazuje UCS ikonu na razliite naine da bi

    pomogao vizuelizaciji orjentacije ravni crtanja. Na narednim

    slikama su prikazani prikazi moguih ikona:

  • 21

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Moemo 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 nain

    ikona nas upozorava da ne koristimo mi ili uredjaj koji

    koristimo za ukazivanje poloaja, da bi specificirali

  • 22

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    koordinate.

    Kada koristimo mi kao uredjaj za pokazivanje poloaja da

    lociramo taku, ona je normalno postavljena na XY ravan.

    Ako je UCS rotiran tako da Z osa lei u ravni pralelno sa

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

    posmatrau, tada je teko vizuelizirati gdje e taka biti

    locirana. U ovom sluaju, taka e biti locirana na ravni

    paralelnoj sa ravni gledanja, koja takodjer sadri koordinatni

    poetak UCS k.s. Naprimjer, ako je pravac gledanja du X

    ose, koordinate koje su specificirane sa miem e biti

    locirane na YZ ravni, koja sadri koordinatni poetak 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 GRAFIKOG PROGRAMIRANJA

    Slijedei zadatak je da se projektuju ovi trodimenzionalni

    objekti, ili take objekata, na monitor kao to bi se

    projektovale na retinu ljudskog oka. Dva tipa projekcije

    perspektivni i paralelni , se tipino koriste kod raunarske

    grafike, kao to je ilustrirano na slijedeoj slici:

    slika 3.4

    Dva tipa projekcije: a) perspektivna b) paralelena projekcija

  • 24

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Za obadva tipa projekcije, taka gledanja ( viewpoint) i

    lokacija gledanja ( viewsite), trebaju biti specificirani. Taka

    gledanja se smatra da je to oko posmatraa. Lokacija

    gledanja je taka na objektu, ona definira pravac gledanja

    tako da vektor koji je usmjeren iz take gledanja ka lokaciji

    gledanja postane pravac gledanja.

    Kod projekcije perspektive, sve take na objektu predmeta

    od interesa su spojene sa centrom projekcije, obino

    lociranim du linije od lokacije gledanja ka taki gledanja, i

    taaka presjeka izmedju ovih linija i ekrana koji sadri

    projektovanu sliku. Ekran je lociran izmedju take gledanja

    i lokacije gledanja. Kod paralelne projekcije, paralelne linije

    se vode iz svih taaka na objektu u pravcu gledanja

    definiranom sa lokacijom gledanja, i takom gledanja, kao i

    ranije, te taaka presjeka izmedju ovih linija i ekrana koji

    sadri sliku.

  • 25

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Slino kao i kod projekcije perspektive, ekran je orjentiran

    okomito na pravac projekcije za ortogonalnu projekciju.

    Take projekcije opisane u bilo kojem od dva projekciona

    metoda se mogu lako sraunati ako koordinate taaka na

    objektu koji se projektuje, su date u odnosu na xv yv zvkoordinatni sistem, kao to je pokazano na prethodnoj slici.

    Naprimjer, projekcione take u paralelnoj projekciji se mogu

    generirati jednostavno skupljajui Xv i Yv vrijednosti

    odgovarajuih taaka na objektu. Dakle, xv yv zv koordinantni

    sistem se naziva koordinatni sistem gledanja ( viewing

    coordinate system), poto on olakava projekciju gledanja.

    Koordinatni sistem gledanja ( vcs) se konstruira tako da

    posjeduje slijedee karkateristike: Kao to je i pokazano na

    prethodnoj slici, poetak vks je lociran u lokaciji gledanja (

    vs), osa zv je upravljena ka taki gledanja iz koor. poetka

  • 26

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    a yv osa je paralelna sa vertikalnim pravcem na ekranu.

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

    Veina ljudi prirodno primjeuje 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 veine grafikih biblioteka, se predostavlja da korisnik

    gleda ovaj vertikalni vektor u prostor, koji se zove vektor

    prema vani ( up vector) u vanjskom koordinatnom sistemu (

    wcs). Taka gledanja i lokacija gledanja se takodjer

    specificiraju u vanjskim koordinatama ( wcs) , kao to se

    moe vidjeti na narednoj slici.

    Kada je koordinatni sistem gledanja (vcs) definiran i

    izvedene sve koordinate taaka od interesa na objektu u

    odnosu na ovakav koordinatni sistem, slijedei zadatak je

    da se sraunaju lokacije njihovih projekcija na ekranu.

  • 27

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Taka gledanja ( viewpoint) i lokacija gledanja ( viewsite )

    Mi ve znamo da ove projekcione take se mogu lako izvesti

    za paralelnu projekciju. Zbog toga mi trebamo samo da

    opiemo proceduru da izraunamo projekcione take za

    perspektivnu projekciju. Posmatrajmo poglede odozgo i sa

    strana na prethodnoj slici kako su prikazani na

  • 28

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    narednoj slici. Taka od interesa je oznaena sa i njenekoordinate u odnosu na vcs su oznaene sa Xv , Yv, i Zv .

    Izraunavanje projekcione take

  • 29

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Primjenjujui pravilo slinosti izmedju trouglova, dobiemo:

    i

    U jednainama ( 3.1 ) i (3.2) Xs i Ys su distance projekcije od

    take oznaena sa Rastojanja su mjerena u horizontalnim

    i vertikalnim pravcima od ekrana od take gdje zv osa

    presjeca ekran. Dakle L je rastojanje izmedju lokacijepogleda i centra projekcije, a S je rastojanje izmedju centra

    projekcije i ekrana. Jednaine (3.1) i (3.2) indiciraju da taka

  • 30

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    sa veom Zv vrijednou e imati vee Xs i Ys vrijednosti,

    koje ine da se linija rastojanja pojavljuje manjom nego

    bliska njoj linija koja ima istu duinu. Ove distance Xs i Yse biti eventualno konvertovane u koordinate virtualnog

    uredjaja posmatrajui eljenu lokaciju centra i veliinu 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 odgovarajuom transformacionom matricom u

    odnosu na vanjski koordinatni sistem ( wcs). Koordinatni

    sistem gledanja ( vcs) se takodjer moe definirati sa

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

  • 31

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Iz date take gledanja, lokacije gledanja, i up-vektoraspecificiranog u wcs koordinatama.

    Relacije izmedju koordinatnih sistema

  • 32

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Procedura za izraunavanje projekcionih taaka, koristeitransformacione matrice, se moe sumirati na slijedei nain:

    - Prvo, vrijednosti koordinata take koja se projecira sekonvertuju iz koordinata modela u vanjske koordinate ( wcs)primjenjujui 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 take se konvertuju izvanjskih koordinata (wcs) u koordinate gledanja primjenjujuitransformacionu matricu izmedju vanjskog koordinatnogsistema ( wcs) i koordinatnog sistema gledanja ( vcs), Ovaoperacija se naziva transformacija take gledanja ( viewingtransformation) , i pokazana je na narednoj slici.

    - Tree, koordinate gledanja take se konvertuju u Xs i Ysvrijednosti sa jednainama ( 3.1) i ( 3.2) , i ponovno u virtualnikoordinatni sistem.

  • 33

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Ova operacija se naziva transformacija projekcije i takodjer

    je pokazana na narednoj slici. Konano, koordinate

    virtualnog uredjaja se konvertuju u koordinate uredjaja od

    strane rutine drajvera uredjaja to je takodjer pokazano na

    narednoj slici

  • 34

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Ove transformacije se obino izvravaju unutar grafike

    biblioteke, i grafiki 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, taka

    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, grafike

    biblioteke primitivnog nivoa mogu zahtjevati od programera

    da pie kod za sve ove transformacije.

  • 35

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Prozor i portgledanja ( viewport)

    Rije prozor ( window) koritena u mrenom okruenju, znai

    odvojene oblasti na monotoru radne stanice kroz koji

    korisnik interaktira sa razliitim raunarskim izvorima

    spojenim na mreu. Ipak, rije prozor ima razliito znaenje

    u raunarskoj grafici. On definira region u prostoru koji e biti

    projektovan na monitor tako da svaki objekat van prozora se

    nee pojaviti na monitoru. U tom smislu, to je analogno

    prozoru na kui kroz koji samo dio vanjskog svijeta je vidljiv

    osobi koja je unutar kue. Ova analogija izgleda da je razlog

    zato je izabrano ime prozor ( window). Prozor se obino

    definira kao pravougaonik na projekcionom ekranu sa

    odgovarajuim 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 GRAFIKOG 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 GRAFIKOG PROGRAMIRANJA

    prozor i volumen gledanja ( viewing volume ) kod

    perspektivne projekcije

  • 38

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Volumen gledanja moe dati vrlo komplikovanu sliku kada seprojektuje poto moe ukljuiti nepotrebne objekte vrlodaleko ili blizu posmatraa. Dakle ponekad je poeljnopresjei 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 slinodefinisani.

  • 39

    OSNOVNI KONCEPTI GRAFIKOG 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 ukljuiti

    translaciju i skaliranje da bi se uzeo u obzir otklon centra

    viewporta od centra monitora i razlike u veliini izmedju

    prozora i viewporta.

  • 40

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Drugim rijeima, Xs i Ys vrijednosti projekcionih taakadobijenih iz jednaina ( 3.1) i (3.2) treba da se poveaju 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 granine take prozora postanuetiri granine take viewporta.

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

    IZLAZNE PRIMITIVE

    Izlazne primitive su grafiki elementi koji se mogu prikazatipomou grafike biblioteke. One mogu biti razliite za svakuspecifinu grafiku biblioteku, i samo izlazne primitivepodravane od veine grafikih biblioteka bie opisane unastavku ove sekcije.

  • 41

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    LINIJA

    Pravolinijski segment se prikazuje kada se specificirajukoordinate njena dva kraja. Trodimenzionalne koordinatekrajeva se takodjer mogu koristiti u veini grafikihbiblioteka, gdje se trodimenzionalne koordinate automatski

    konvertuju u dvodimenzionalne projekcije. Atributi linije kaoto su : tip, debljina i boja se takodjer mogu specificirati.Tipovi linija koji su podrani od veine grafikih biblioteka suprikazani na narednoj slici. Bitno je podrati ove tipove linijakod CAD sistema za crtanje poto se one esto koriste umainskim, arhitektonskim i elektrinim crteima.

  • 42

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Kod GKS, PHIGS i OpenGL, mogunosti vielinijskih (

    polyline ) segmenata se takodjer prisutne, pa se daju krajnje

    linije polyline u sekvenci kao u narednoj matrinoj formi.

    Kada samo treba prikazati jedan segment linije, matrica e

    sadravati samo koordinate dvije krajnje linije:

  • 43

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Poligon

    Funkcija poligona je ista kao i polyline funkcija izuzev to

    prvi red i posljednji red taaka niza [P] trebaju biti iste.

    Dakle, dobie se isti grafiki izlaz kao i sa polyline funkcijom.

    Medjutim, poligon nacrtan funkcijom poligona nosi i

    unutarnju i vanjsku informaciju, i njegova unutranjost se

    moe ispuniti sa uzorcima ( paternom )kao oni koji su

    prikazani na narednoj slici.

  • 44

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

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

    Mada i krug kao i poligon se mogu nacrtati sa funkcijompoligona, funkcije koje trae mnogo manje ulaznihparametara ( napr. samo centralnu taku i radius za krug idvije krajnje take i dijagonalu za pravougaonik) iraspoloive su u veini grafikih biblioteka. Medjutim,interno, ove funkcije se realizuju sa poligonalnim funkcijama.

    MarkerMarkeri se obino koriste da diferenciraju take podataka ugrafu. Naredna slika pokazuje karaktere koji su naraspolaganju u veini grafikih biblioteka.

  • 45

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    .

    Tipovi markera se specificiraju kao atribut. Slino kao isegment linije, polimarker je defaultni i u GKS i PHIGSgrafickim bibliotekama. OpenGL ne podrava markereeksplicitno, ali obezbjedjuje mehanizam pomou kojeg sesvaki marker moe definirati u bitmapi i pozvati kada jepotrebno. Na ovaj nain, grafiki program napisan uOpenGL ima mnogo bolju portabilnost kroz razliitehardverske paltforme.

    primjeri markera

  • 46

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Tekst

    U veini grafikih biblioteka podrana 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 deformiebez obzira na njegovu orjentaciju. Trodimenzionalni tekst semoe 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 premairini, 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 izvravanjem odgovarajuihgrafikih programa koji su unaprijed pohranjeni.

  • 47

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Softverski font treba due vremena nego hardverski da seizvri, ali je njegov oblik mnogo vie rafiniran nego kodhardverskog fonta, koji se pohranjuje kao set pravolinijskihsegmenata za svaki karakater.

  • 48

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    GRAFIKI ULAZI

    Kao to je ranije napomenuto, grafiki program e modatrebati da prihvati grafike elemente kao take, linije,poligone, kao ulaze pored brojeva i tekst stringova.Naprimjer, korisnik koji je htjeo da izrauna povrinupoligona, na displeju, ili da ga skalira , treba da na nekinain specificira poligon koji ga interesuje , medju svimostalim grafikim elementima na displeju.

    Dva tipa fizikih uredjaja se koriste za specifikacijugrafikog ulaza: lokator i dugme ( button). Lokator prenosinjegovu lokaciju, ili odgovarajuu lokaciju kurzora, nagrafiki program. Dugme prenosi akciju korisnika, on i off,na tekuoj lokaciji kurzora. Mi, koji je najpopularniji grafikiulazni uredjaj danas, je uradjaj sa obadvije ove funkcije.

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

  • 49

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Tip ulaza koji obezbjedjuje grafika ulazna jedinica se moe

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

    picking). Modul sampliranja kontinualno iitava status,

    najee lokaciju, ulaznog uredjaja. Naprimjer, moemo

    koristiti u sampling modu da iscrtamo tekst na ekranu

    pomjeranjem mia. Kako se mi pomjera, on kontinualno

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

    ulaznog uredjaja se ita samo onda kada poaljemo zahtjev,

    obino pritiskom na dugme mia. Da bi pojasnili razliku

    izmedju moda sampliranja i moda zahtjeva, posmatrajmo

    situaciju kada poligon se crta specificirajui svoje vrhove tj.

    tjemena ( vertices) grafiki pomou mia. U ovom sluaju, mi

    pomjeramo mi sve dok kurzor nije propisno lociran i

    pritisnemo dugme da specificiramo tu lokaciju kao tjeme

    ( verteks ) poligona.

  • 50

    OSNOVNI KONCEPTI GRAFIKOG PROGRAMIRANJA

    Kurzor se pomjera po monitoru kako mi pomjeramo mi, dok

    koristimo mi u modu samplovanja. Time, lokacija svakog

    verteksa je obezbjedjena za grafiki program, kada

    koristimo mi u modu zahtjeva. Ova dva moda imaju jednu

    zajednikiu osobinu: Oni isporuuju lokaciju mia ili

    odgovarajuu lokaciju kurzora ka grafikom programu.

    Medjutim u modu uzimanja ( picking mode), grafiki ulazni

    uredjaj identificira grafiki element na koji kurzor poentira,

    kada se pritisne dugme mia. Mi moemo identificirati

    grafike elemente po imenima doznaenim od strane

    grafikog programera, kada su elementi bili programirani.

    Mod uzimanja je vrlo pogodan nain editiranja postojeeg

    crtea na ekranu ( tj. za brisanje nekih poligona ili promjenu

    nekih graninih linija poligona ).