Sunteți pe pagina 1din 60

OPRIAN Sabina Diana

CUPRINS

CUPRINS

CUPRINS...................................................................................................................................1 INTRODUCERE.......................................................................................................................1 Sistemul grafic OpenG ........................................................................................................! Caracteristici OpenG ..........................................................................................................." CAPITO U 1. Descrierea aplica#iei.........................................................................................$ 1.1. Sc%pul aplica#iei...............................................................................................................$ 1.!. Obiecti&ele aplica#iei........................................................................................................$ 1.'. Sup%rtul matematic al aplica#iei.......................................................................................( 1.'.1. C%ncepte matematice f%l%site )e OpenG ..............................................................( 1.'.!. N%ta#ii f%l%site *n matematic+. ................................................................................., 1.'.'. G+sirea matricei unei transf%rm+ri............................................................................, 1.'.". C%ncepte )in )%meniul fi-icii.................................................................................11 CAPITO U !. Reali-area aplica#iei.......................................................................................1. !.1. Te/n%l%gii f%l%site.........................................................................................................1. !.1.1. Descriere C00.........................................................................................................1. !.1.!. Descriere 1anage) C00.........................................................................................1( !.1.'. Descriere 2in)%3s 4%rms......................................................................................!5 !.1.". Descriere OpenG ..................................................................................................!1 !.1.6. Alternati&e OpenG ................................................................................................'1 !.1... Descriere 71 .......................................................................................................'' !.!. Diagrama clasel%r.........................................................................................................."1 !.'. Reali-area leg+turii intre 2in)%3s 4%rms i OpenG ................................................."' !.". Crearea unei aplica#ii *n OpenG .................................................................................."6 !.6. 4unc#ii )e ini#iali-are....................................................................................................."( !... 4unc#ii )e interfa#+ i ciclare........................................................................................."( CAPITO U '. Instalarea i utili-area aplica#iei....................................................................65 CONC U8II............................................................................................................................6, 9I9 IOGRA4IE.......................................................................................................................5

INTRODUCERE
:ntr;% lume te/n%l%gic a&ansat+< precum cea *n care ne afl+m *n acest m%ment< este imp%sibil s+ *n#elegem t%t ceea ce este *n =urul n%stru )ar este imp%rtant s+ >tim cum a *nceput t%tul >i principiile )e ba-+. Un e?emplu bun este Sir Isaac Ne3t%n< care a e?plicat ce este gra&ita#ia< astfel *nc@t s+ putem s+ % f%l%sim *n a&anta=ul n%stru. De>i aceast+ f%r#+ a e?istat )in t%t)eauna< pentru %ameni era un mister >i t%t ce >tiam e c+ )ac+ )ai )rumul la un %biect< el &a c+)ea. Numai )up+ ce a f%st tra)us+ *ntr;un m%) rigur%s< Ne3t%n a putut s+ re)acte-e faim%asele legi *n fi-ic+ ce *i p%art+ numele. Pentru a *n#elege lucrurile c%mplicate mai *nt@i trebuie s+ a&em % ba-+ )e cun%>tin#e. Spre acest sc%p am reali-at aceast+ aplica#ie care imit+ *ntr;un m%) simplist< accentu@n) ceea 1

OPRIAN Sabina Diana

CUPRINS

ce nu se %bser&+ cu %c/iul liber )in lumea real+. :n acest spa#iu &irtual putem s+ abstracti-+m< f%l%sin) %biecte simple< % realitate c%mple?+ cu % infinitate )e &ariabile >i s+ %bser&+m interac#iunea )intre acestea. 1ai *nt@i trebuie s+ *nelegem partea matematic+ ce se afl+ la ba-a aplicaiei. C%ncepte imp%rtante precum fora de frecare, gravitaia, impulsul i altele &%r fi e?plicate precum i m%)elarea l%r *n limba=ul inf%rmatic. Pe l@ng+ aceste c%ncepte este util s+ *nelegem cum f%l%sete OpenG ;ul c%ncepte )in matematic+ pentru reali-area calculel%r i )e ce acestea sunt mai eficiente. a reali-area aplicaiei a f%st ne&%ie utili-area mult%r te/n%l%gii care au trebuit s+ fie *mbinate pentru ca t%tul s+ lucre-e *n arm%nie. C@n) e &%rba )e aplicaii 'D nu e?ist+ )ec@t %piunea )e a f%l%si DirectX sau OpenGL. Ambele pre-int+ apr%?imati& aceleai capabilit+i )eci f%l%sin) )%ar criteriul cerinel%r aplicaiei nu a=ut+ la selectarea unei te/n%l%gii. O apr%fun)are a ar/itecturii fiec+reia arat+ )iferenele cruciale i ab%r)+rile c%mplet )iferite pe care fiecare stan)ar) a ales s+ implemente-e. Pentru reali-area interfeei cu utili-at%rul< te/n%l%gia 2in)%3s 4%rms nu are ri&al pe platf%rma 2in)%3s< a&@n) pre)eces%ri cun%scui precum 14C i % *n)elungat+ utili-are< lucru ce se %bser&+ i *n maturitatea c%)ului< trecut )e multe %ri pe sub %c/ii critici ai )e-&%ltat%ril%r. O caracteristic+ imp%rtant+ a acestei platf%rme este p%sibilitatea *ncapsul+rii lucrului cu limba=ul )e ni&el =%s al pl+cii &i)e% apelat )e API;ul OpenG *ntr;un me)iu )e ni&el *nalt f+r+ a a&ea )e suferit perf%rmanele aplicaiei. De asemenea p%rtarea pe platf%rma .Net a limba=ului C++ este un lucru esenial pentru aplicaia aceasta< fiin) necesar+ utili-area c%)ului libr+riei grafice< ce este scris+ *n C< pe % platf%rm+ ce rulea-+ pe % main+ &irtual+. :n lipsa e?istenei limba=ului Managed C++ aceast+ p%rtare ar fi necesitat multe linii )e c%)< apeluri )e sistem care sunt c%stisit%are i scrierea unui ser&iciu COM pentru apelul c%)ului C nati&.

Sistemul grafic OpenGL


Grafica cu calculat%rul A*n special grafica 'D >i *n particular grafica interacti&+ 'DB *>i caut+ pr%priul )rum *ntr;un num+r *n cre>tere )e aplica#ii< )e la pr%grame )e grafic+ simple pentru calculat%are pers%nale p@n+ la s%ft3are )e m%)elare >i &i-uali-are s%fisticat pentru sta#ii grafice >i supercalculat%are. De%arece a crescut interesul pentru grafica cu calculat%rul< a crescut )e asemenea >i )%rin#a )e a fi capabil s+ scrii aplica#ii care p%t rula pe % &arietate )e !

OPRIAN Sabina Diana

CUPRINS

platf%rme cu un )%meniu )e capacit+#i grafice. Un stan)ar) grafic u>urea-+ aceast+ sarcin+ prin eliminarea ne&%ii )e a scrie un )ri&er grafic )istinct pentru fiecare platf%rm+ pe care rulea-+ aplica#ia. Pentru a fi &iabil< un stan)ar) grafic pr%pus pentru aplica#ii interacti&e 'D trebuie s+ satisfac+ c@te&a criterii. El trebuie s+ fie implementabil pe platf%rme cu capacit+#i grafice )iferite f+r+ c%mpr%miterea perf%rman#el%r grafice. El trebuie s+ asigure % interfa#+ natural+ care permite unui pr%gramat%r s+ )escrie %pera#iile )e re)are *ntr;un m%) c%ncis. *n final< interfa#a trebuie s+ fie suficient )e fle?ibil+ pentru a g+-)ui e?tensii astfel *nc@t )ac+ n%i %pera#ii grafice )e&in semnificati&e sau )isp%nibile *n n%ile subsisteme grafice< aceste %pera#ii s+ p%at+ fi asigurate f+r+ fragmentarea interfe#ei. OpenGL (Open Grap ics Li!rar"B *n)epline>te aceste criterii prin asigurarea unei interfe#e simple< )irecte pentru %pera#iile fun)amentale )e re)are grafic+ 'D. El permite primiti&e grafice )e ba-+ cum ar fi punctele< segmentele )e )reapt+< p%lig%anele >i imaginile< precum >i %pera#ii )e re)are )e ba-+ cum ar fi transf%rm+rile afine >i pr%iecti&e >i calculele )e iluminare. El permite )e asemenea %pera#ii )e re)are a&ansat+ cum ar fi maparea te?turil%r >i re)area cu antialiasing. OpenG este % interfa#+ s%ft3are pentru pl+cile grafice. OpenG se ba-ea-+ pe #risGL )e-&%ltat )e $ilicon Grap ics ($G#%. Sc%pul ini#ial al )e-&%lt+rii IrisG a f%st )e a )e-&%lta % interfa#+ pr%gramabil+ pentru sta#iile grafice SGI. Aceast+ interfa#+ pr%gramabil+ s;a inten#i%nat ini#ial a fi in)epen)ent+ )e /ar)3are >i a *n)eplini cerin#ele speciale ale pr%gram+rii grafice 'D. Ulteri%r IrisG a )e&enit interesant+ >i pentru alte sta#ii. :n 1,,! a luat fiin#+ OpenGL &rc itecture 'evie( )oard (&')% printre ai c+rui membrii se afl+ principalii pr%)uc+t%ri )e sta#ii grafice cum ar fi $G#, $un, *e(lett+,ac-ard, Microsoft, .vans/$ut erland, #)M, #ntergrap . Site;ul AR9 OpenG p%ate fi g+sit la (((.opengl.org. OpenG a )e&enit un stan)ar) in)ustrial< )isp%nibil )in anul 1,,!< pe ba-a specifica#iil%r reali-ate )e acest c%ns%r#iu in)epen)ent. Sc%pul AR9 este )e a c%ntr%la )e-&%ltarea OpenG < >i )e a intr%)uce n%i func#i%nalit+#i *n &ersiunile urm+t%are. OpenG e&%luea-+ *n m%) c%ntinuu permi#@n) ca in%&a#iile la ni&elul /ar)3are;ului s+ fie accesibile )e-&%ltat%ril%r )e aplica#ii prin mecanismul )e e?tensii OpenG A)+ug+rile la specifica#ii Aprin e?tensiiB sunt bine c%ntr%late )e c%ns%r#iul ARE >i actuali-+rile pr%puse sunt anun#ate )in timp pentru a permite )e-&%ltat%ril%r s+ a)%pte m%)ific+rile. Atunci c@n) e?tensiile sunt larg acceptate< ele sunt luate *n c%nsi)erare pentru inclu)erea *n nucleul )e ba-+ OpenG . Este asigurat+ c%mpatibilitatea cu )e-&%lt+rile anteri%are ale bibli%tecii astfel c+ aplica#iile mai &ec/i &%r rula pe accelerat%arele /ar)3are cu )ri&ere OpenG mai n%i.

'

OPRIAN Sabina Diana

CUPRINS

Utili-at%rii finali ai OpenG < furni-%rii in)epen)en#i )e s%ft3are >i al#i reali-at%ri )e aplica#ii ba-ate pe AP ; ul OpenG p%t utili-a bibli%teca f+r+ cerin#e )e licen#+. OpenGL ,erformance C aracterisation Committee< % alt+ %rgani-a#ie in)epen)ent+< creea-+ >i men#ine benc/marC;urile OpenG >i public+ re-ultatele acest%r benc/marC;uri pe site;ul (((.spec!enc.org0gpc0opc.static0inde1. tinl. OpenG este p%rtabil+< fiin) )isp%nibil+ pe % &arietate )e sisteme cum ar fi ,C, Macintos , $ilicon Grap ics, 2N#X, Linu1, #ri1, $olaris, *,+2X . OpenG rulea-+ pe fiecare )in principalele sisteme )e %perare inclu-@n) MacO$, O$03, 2N#X, 4indo(s56, 4indo(s N7, Linu1, O,.N$tep, ,"t on >i )eO$. ucrea-+ )e asemenea cu fiecare sistem )e ferestre principal< inclu-@n) ,resentation Manager, 4in83 >i X04indo( $"stem. OpenG este practic )isp%nibil+ pe apr%ape %rice calculat%r care sup%rt+ un m%nit%r grafic< % implementare OpenG p%ate fi *n m%) eficient g+-)uit+ la apr%ape %rice ni&el al /ar)3are;ului grafic< )e la mem%ria &i)e% )e ba-+ la cele mai s%fisticate subsisteme grafice. OpenG p%ate fi apelat )in limba=ele )e pr%gramare C, C++, 9ava, :O'7'&N >i &da >i %fer+ in)epen)en#+ c%mplet+ fa#+ )e t%p%l%giile >i pr%t%c%alele )e re#ea. OpenG este )e asemenea scalabil+ )e%arece p%ate rula pe % &arietate )e calculat%are< )e la cele pers%nale p@n+ la sta#ii )e lucru >i supercalculat%are Aceasta se reali-ea-+ prin mecanismul OpenG )e cerere a capacit+#il%r /ar)3are. OpenG este bine structurat a&@n) % ar/itectur+ intuiti&+ >i c%men-i l%gice A*n num+r )e c@te&a suteB. Utili-@n) c%men-ile OpenG se p%t scrie aplica#ii a&@n) c@te&a linii )e c%) spre )e%sebire )e pr%gramele reali-ate utili-@n) alte bibli%teci. Una )in caracteristicile f%rte ale interfe#ei OpenG este c+ interfa#a sa este u>%r )e utili-at )e c+tre *ncep+t%ri fiin) *n acela>i timp suficient )e puternic+ pentru a satisface cerin#ele un%r aplica#ii pr%fesi%niste in)iferent c+ acestea sunt simulat%are )e -b%r< anima#ii< aplica#ii )e pr%iectare asistat+ sau &i-uali-+ri >tiin#ifice. Dri&erele OpenG *ncapsulea-+ inf%rma#ii )espre substratul /ar)3are< eliber@n) )e-&%ltat%rul aplica#iei )e necesitatea )e a scrie aplica#iile pentru anumite caracteristici /ar)3are.

Caracteristici OpenGL
De>i specifica#ia OpenG )efine>te un anumit flu? )e pr%cesare grafic+< furni-%rii )e platf%rme au libertatea )e a reali-a % implementare OpenG particular+ pentru a *n)eplini %biecti&e )e perf%rman#+ >i )e c%st al sistemului unice. Apelurile in)i&i)uale OpenG p%t s+ fie e?ecutate )e /ar)3are )e)icat< p%t rula ca rutine s%ft3are pe sisteme stan)ar) CPU< sau "

OPRIAN Sabina Diana

CUPRINS

p%t fi imlementate ca % c%mbina#ie )e rutine /ar)3are >i s%ft3are. De-&%ltat%rii )e aplica#ii au garan#ia un%r re-ultate )e afi>are c%nsistente in)iferent )e implementarea OpenG . OpenG permite )e-&%ltat%ril%r )e s%ft3are accesul la primiti&e ge%metrice >i imagine< liste )e )isplaD< transf%rm+ri )e m%)elare< iluminare >i te?turare< antialiasing< blen)ing >i multe alte facilit+#i. Din punctul )e &e)ere al pr%gramat%rului< OpenG repre-int+ un set )e c%men-i care permit specificarea %biectel%r ge%metrice *n )%u+ sau trei )imensiuni< *mpreun+ cu c%men-i care c%ntr%lea-+ felul *n care aceste %biecte sunt rasteri-ate *n buffer;ul ca)ru AframebufferB. Pentru cele mai multe )in aceste c%men-i< OpenG asigur+ % interfa#+ cu efect ime)iat< *n sensul c+ specificarea unui %biect )etermin+ )esenarea sa. OpenG c%n#ine % mare cantitate )e inf%rma#ii )e stare. Aceast+ stare c%ntr%lea-+ m%)ul *n care sunt )esenate %biectele *n frame!uffer. OpenG se afl+ t%t)eauna *ntr;% stare )efinit+< setat+ prin &ariabile )e c%n)i#ieE aceasta *nseamn+ c+ OpenG este % ma>ina )e stare. Un e?emplu )e &ariabil+ )e c%n)i#ie este cul%area curent+ cu care sunt re)ate A)esenateB primiti&ele in)i&i)uale. Aceasta este setat+ utili-@n) c%man)a glcolor(% >i ap%i cul%area setat+ se aplic+ tutur%r %biectel%r care se )esenea-+< p@n+ c@n) este utili-at+ % n%u+ c%man)+ )e m%)ificare a cul%rii. a un anumit m%ment< % parte )in aceast+ stare ; c/iar >i c%n#inutul unei te?turi >i al mem%riei &i)e% ; este )isp%nibil+ *n m%) )irect utili-at%rului< care p%ate utili-a c%men-i pentru a %b#ine &al%ri as%ciate cu )iferite inf%rma#ii )e stare. O parte a inf%rma#iil%r )e stare sunt &i-ibile< *ns+< )%ar prin efectul pe care *l au asupra a ceea ce se )esenea-+. OpenG permite )e asemenea aplica#ii )e &i-uali-are cu imagini !D tratate ca tipuri )e primiti&e care p%t fi manipulate la fel ca >i %biectele ge%metrice 'D. OpenG )ispune )e numai 15 primiti&e ge%metrice< >i %rice %biect care se )esenea-+ *n OpenG este c%mpus )in aceste primiti&e. Setul )e instruc#iuni )in bibli%tec+ c%n#ine c@te&a sute )e c%men-i< t%ate fiin) prefi?ate )e gl. OpenG asigur+ c%ntr%lul )irect asupra %pera#iil%r fun)amentale )e grafic+ 'D >i !D. Aceste %pera#ii inclu) specificarea un%r parametrii cum ar fi matricele transf%rm+ril%r< c%eficien#ii ecua#iil%r )e iluminare< %perat%ri pentru actuali-area pi?elil%r. El nu asigur+ % m%)alitate pentru )escrierea sau m%)elarea %biectel%r ge%metrice c%mple?e Acum ar fi cilin)rul< cubul< sfera< etc.B. Altfel spus< OpenG asigur+ mecanismele pentru a )escrie cum sunt re)ate %biectele ge%metrice c%mple?e >i nu mecanismele )e a )escrie %biectele c%mple?e *nsele. T%ate c%rpurile c%mple?e trebuie s+ fie c%nstruite )e )e-&%ltat%rul aplica#iei 'D pe ba-a primiti&el%r simple ; puncte< linii< p%lig%ane. Pentru a simplifica pu#in lucrurile pentru )e-&%ltat%rii )e aplica#ii< e?per#ii *n grafica 'D au )e-&%ltat c@te&a bibli%teci )intre care cele mai imp%rtante sunt GL2 (OpenGL 2tilit" Li!rar"%, GL27 (OpenGL 2tilit" 7ool-it% sau 6

OPRIAN Sabina Diana

CUPRINS

ec/i&alentul s+u 1icr%s%ft ;GL&2X. GL2 simplific+ lucrurile pentru crearea calculel%r )e pr%iec#ie >i pentru c%nstruirea suprafe#el%r c%mple?e< repre-ent@n) printre altele curbe >i suprafe#e N2')$ (Non+uniform+rational+)+splines%. GL27 este un utilitar in)epen)ent )e sistem pentru mane&rarea *n m%) simplu a ferestrel%r OpenG utili-at%r prin m%use sau tastatur+. Oricine )%re>te s+ )e&in+ e?pert *n grafica 'D trebuie s+ se familiari-e-e cu c@te&a n%#iuni fun)amentale )e algebr+ >i ge%metrie analitic+. Altfel utili-area c%men-il%r OpenG se face mecanic f+r+ % pr%fun)+ *n#elegere a mecanismel%r interne. Aceste n%#iuni sunt calculul &ect%rial Apr%)us scalar< pr%)us &ect%rialB< calcul matricial A*nmul#irea matricel%r< matrice i)entitateB< transf%rm+ri ge%metrice. Sunt )e asemenea necesare c@te&a cun%>tin#e )in )%meniul %pticii. Cei interesa#i p%t s+ *>i re*mpr%sp+te-e aceste cun%>tin#e >i )in c+r#i care pre-int+ fun)amentele graficii cu calculat%rul. Un pr%gram tipic care utili-ea-+ OpenG *ncepe cu )esc/i)erea unei ferestre *n framebuffer;ul *n care pr%gramul &a )esena. Ap%i< se apelea-+ func#ii pentru al%carea unui c%nte?t G >i as%cierea sa cu fereastra. O)at+ ce c%nte?tul OpenG este al%cat< pr%gramat%rul este liber s+ )ea c%men-i OpenG . Unele c%men-i sunt utili-ate pentru )esenarea %biectel%r ge%metrice simple Acum ar fi puncte< segmente )e )reapt+ >i p%lig%aneB< *n timp ce altele au efect asupra re)+rii acest%r primiti&e inclusi& a felului cum sunt iluminate< c%l%rate >i a m%)ului *n care spa#iul m%)elului utili-at%rului este mapat la ecranul bi)imensi%nal. Sunt >i c%men-i care c%ntr%lea-+ efecti& framebuffer;ul< cum ar fi citirea >i scrierea pi?elil%r. Din punctul )e &e)ere al implementat%rului< OpenG este un set )e c%men-i care au efect asupra felului *n care %perea-+ /ar)3are;ul grafic. Dac+ /ar)3are;ul c%nst+ )%ar )intr; un framebuffer a)resabil< atunci c%men-ile OpenG trebuie s+ fie implementate *n *ntregime s%ft3are< )e CPU;ul calculat%rului ga-)+. Tipice pentru acest m%ment sunt *ns+ pl+cile grafice care c%n#in accelerat%are grafice &ariin) )e la cele cu un subsistem )e re)are capabil s+ re)ea linii >i p%lig%ane !D p@n+ la pr%ces%are *n &irgul+ m%bil+ s%fisticate capabile )e transf%rm+ri >i calcule asupra )atel%r ge%metrice. Sarcina implementat%rului este )e a asigura interfa#a s%ft3are CPU astfel *nc@t pentru fiecare c%man)+ OpenG s+ se )i&i)+ sarcinile *ntre CPU >i placa grafic+. Pentru a se %b#ine un %ptim al perf%rman#ei *n e?ecutarea c%men-il%r OpenG < aceast+ )i&i-iune trebuie s+ fie *n c%nc%r)an#+ cu placa grafic+ )isp%nibil+. >i pentru furni-area )e-&%ltat%rului )e aplica#ii )e rutine pentru c%ntr%larea e&enimentel%r e?terne pr%&enite )e la

OPRIAN Sabina Diana

CUPRINS

CAPITOLUL 1.

Descrierea aplicaiei

1.1. Scopul aplicaiei


, "si1 este un m%t%r fi-ic ce ilustrea-+ un spaiu &irtual un)e %biectele p%t fi &i-uali-ate )in %rice punct pentru a le stu)ia c%mp%rtamentul. :n aceast+ aplica#ie am *ncercat s+ ilustre- % m%)alitate )e a reali-+ leg+tur+ *ntre limba=ul lo(+level al instruc#iunil%r f%l%site )e OpenGL pentru a c%munic+ cu pr%ces%rul grafic >i % interfa#+ m%)ern+ %ferit+ )e 4indo(s :orms.

1.2. Obiectivele aplicaiei


Aplica#ia p%ate fi f%l%sit+ cu u>urin#+ >i )e aceea ar putea a&ea un r%l e)ucati& la %rele )e fi-ic+ )in gimna-iu. De e?emplu< *n#elegerea legil%r lui Ne3t%n ar putea fi *nlesnit+ prin crearea unui c%nte?t simplificat care s+ ilustre-e mai precis aceste principii. :n acela i

OPRIAN Sabina Diana

CUPRINS

timp prin utili-area unui set )e clase pr%t%tip ce sunt c%nstruite astfel *nc@t s+ %blige )e-&%ltat%rul s+ se *nca)re-e *n n%rmele cerute )e aplicaie< aceasta p%ate fi e?tins+ i astfel cre@n) seturi n%i )e funci%nalit+i.

1.3. Suportul matematic al aplicaiei 1.3.1. Concepte matematice folosite de OpenGL


OpenG f%l%sete pentru repre-entarea punctel%r 'D spaiu pr%iecti& i nu spaiu Eucli)ian. Acest lucru *nseamn+ c+ &a st%ca punctele f%l%sin) c%%r)%nate %m%gene. Acestea fac p%sibil reali-area )e calcule *n spaiu pr%iecti& la fel ca i c%%r)%natele Carte-iene *n spaiul Eucli)ian. C%%r)%natele %m%gene ale unui punct )intr;un spaiu pr%iecti& )e )imensiune n se n%tea-+ cu A?<D<-<...<3B< un &ect%r )e lungime n01< altul )ec@t A5<5<5<...<5B. D%u+ seturi )e c%%r)%nate ce sunt pr%p%ri%nale )en%t+ acelai punct *ntr;un spaiu pr%iecti&F pentru %rice scalar nenul c )in c@mpul G< Ac?<cD<c-<...<c3B repre-int+ un acelai punct. Acest sistem )e c%%r)%nate p%ate fi e?plicat astfelF )ac+ spaiul pr%iecti& este c%nstruit )in spaiul &ect%rial H )e )imensiune n01< intr%)ucem c%%r)%nate *n H prin alegerea unei ba-e i le f%l%sim pe acestea *n PAHB< clasa )e ec/i&alen+ a &ect%ril%r pr%p%ri%nali )in H. C%nsi)er@n) un spaiu pr%iecti& )e )imensiune trei< un punct )e c%%r)%nate %m%gene este A?<D<-<3B. Planul )e la infinit este i)entificat )e %bicei )e punctele cu c%mp%nenta 3 I 5. :n afar+ )e acesta< restul punctel%r le putem f%l%si ca fiin) A ?J3 < DJ3 < -J3 B c%%r)%nate *ntr;un sistem Carte-ianE spaiul afin c%mplementar planului )e la infinit este transf%rmat f%l%sin) ba-a A 1 < 5 < 5 < 1B< A 5 < 1 < 5 < 1B< A 5 < 5 < 1 < 1B. Dac+ intersect+m )%u+ plane )ate prin ecuaiile ? I 3 i ? I !3 a=ungem la c%nclu-ia ca 3 I 5 i ? I 5< ceea ce *nseamn+ c+ intersecia are l%c pe planul )e la infinit i cuprin)e t%ate punctele )e c%%r)%nate A % < D < - < 5 B. Aceasta este % linie< cea care unete punctele A 5 < 1 < 5 < 5 B i A 5 < 5 < 1 < 5 B. Aceast+ linie are ecuaiaF (;<"<=<;% > ?(@ A B%(;<@<;<;% + ?B(;<;<@<;% K4%rmula 1.1.L

este un fact%r )e scalare. Acest fact%r p%ate fi a=ustat pentru a n%rmali-a


c%%r)%natele A 5 < D < - < 5 B i astfel elimin@n) un gra) )e libertate. Re-ultatul este un set )e puncte cu un singur gra) )e libertate< ceea ce este )e ateptat< fiin) &%rba )e % linie.

OPRIAN Sabina Diana

CUPRINS

1.3.2. Notaii folosite n matematic .


C%nsi)er+m spaiul ! ; pr%iecti&F punctele *n spaiul pr%iecti& sunt pr%iecii a punctel%r ' ; )imensi%nale. Se f%l%sete n%taia A ? < D < - B pentru repre-entarea unui punct 'D. 4ie un alt punct Au <& <3B. AtunciF (1 ," ,= % > (u ,v,( % , 1 >u, " >v i = >(. K4%rmula 1.!.L

4%l%sim n%ta#ia K ? < D < - L pentru pr%iec#ia unui punct 'D A ? < D < - B pe planul )e pr%iec#ie. Punctul K ? < D < - L p%ate fi c%nsi)erat ca fiin) egal cu % clas+ )e ec/i&alen + a punctel%r tri;)imensi%nale care aparin liniei ce trece prin A ? < D < - B i A 5 < 5 < 5 B. Dac+ K u < & < 3 L este un alt punct atunci C1 ," ,= D > Cu ,v ,( D, EF ;, 1 >Eu," >Ev i = >E(. K4%rmula 1.'.L

D%u+ puncte 'D sunt ec/i&alente )ac+ pr%ieciile l%r pe planul )e pr%iecie sunt egaleF (1 ," ,= % G (u ,v,( %, EF ;, 1 >Eu," >Ev i = >E(. Deci (1 ," ,= %G (u ,v ,( %, C1 ," ,= D > Cu ,v ,( D. K4%rmula 1.".L K4%rmula 1.6.L

De asemenea un alt c%ncept )e care se f%l%sete OpenG ;ul este utili-area matricel%r )e transf%rmare. Aceste matrici permit %peraiuni )e transf%rmare liniar+ s+ fie repre-entate *ntru;un f%rmat c%nsistent. De asemenea permite c%ncatenarea a mai mult%r %peraiuni f%arte u%r< prin *nmulirea matricel%r )e transf%rmare as%ciate acest%ra. Transf%rm+rile liniare nu sunt singurele ce se p%t repre-enta ca i matrice. 4%l%sin) c%%r)%nate %m%gene at@t transf%rm+rile afine c@t i pr%ieciile )e perspecti&+ pe Rn p%t fi repre-entate ca transf%rm+ri liniare pe RPn01 Aspaiu pr%iecti& real )e )imensiune n01B. :n OpenG sunt f%l%site matrice )e )imensiune "?".

1.3.3. G sirea matricei unei transform ri


4iin) )at+ % funcie )e transf%rmare TA?B< este u%r )e )eterminat matricea )e transf%rmare A prin aplicarea func#iei )e transf%rmare fiec+rui &ect%r al ba-ei can%niceF

OPRIAN Sabina Diana

CUPRINS

K4%rmula 1...L De e?emplu< func#ia TA?B I 6? este % transf%rmare liniar+. C%nsi)er+m n I ! >i aplic+m pr%ce)eul )e mai =%sF

Cele mai )es *nt@lnite transf%rm+ri ce p+strea-+ %riginea fi?at+ sunt liniareF rotaie, scalare, s earing, refle1ie, proiecie ortogonalH. Dac+ % transf%rmare afin+ nu este % transla#ie pur+ atunci p+strea-+ cel puin un punct fi?< iar acesta p%ate fi ales ca %rigine pentru a face transf%rmarea liniar+. E?emplific@n) *ntr;un spa#iu bi;)imensi%nal< f%l%sim matrice !?!. 'otaia )e un ung/i M *n sensul acel%r )e ceas *n =urul %riginii are f%rmuleleF ?N I ? c%s M 0 D sin M i DN I ; ? sin M 0 D c%s M.

K4%rmula 1.$.L $calarea se reali-ea-+ prin ?N I s? O ? i DN I sD O D.

K4%rmula 1.(.L $ ear P aceast+ %pera#ie p%ate fi e?ecutat+ *n )%u+ m%)uri. Paralela cu a?a O? a&em f%rmulele 1I > 1 + -" i "I > ".

K4%rmula 1.,.L iar pe a?a OD a&em 1I > 1 i "I > " + -1.

K4%rmula 1.15.L

15

OPRIAN Sabina Diana

CUPRINS

Principalul a&anta= al f%l%sirii acest%r matrici este faptul c+ se reali-ea-+ u>%r c%mpunerea l%r< prin *nmul#irea )e matrici. Pentru )%u+ matrici )e transf%rmare liniar+ A i 9< efectul aplic+rii mai *nt@i a transf%rm+rii A i ap%i a transf%rm+rii 9 unui &ect%r ? este )at )eF

K4%rmula 1.11.L Se %bser&+ t%tu>i )iferen#a c+ *nmul#irea se face *n %r)ine in&ers+< 9 O A. Pentru transf%rm+rile afine se f%l%se>te c%%r)%nate %m%gene< astfel % transla#ie se %b#ine ?N I ? 0 t? >i DN I D 0 tD

K4%rmula 1.11.L T%ate transf%rm+rile liniare sunt incluse *n transf%rm+rile afine >i p%t fi )escrise ca % transf%rmare afin+ simplificat+ prin simpla a)+ugare a unei linii >i a unei c%l%ane )e -er% la matricea c%respun-+t%are transf%rm+rii liniare< cu e?cep#ia elementului )in st@nga =%s care trebuie s+ fie 1. Astfel pentru r%ta#ie se %b#ineF

K4%rmula 1.1!.L 4%l%sin) matrice )e transf%rmare c%n#in@n) c%%r)%nate %m%gene< transla#iile p%t fi amestecate cu u>urin#+ cu alte tipuri )e transf%rm+ri. 1%ti&ul e ca planul real este mapat pe planul 3 I 1 )in spa#iul real pr%iecti& i )eci transla#iile )in spa#iul real Eucli)ian p%t fi repre-entate ca un s/ear *n spa#iul real pr%iecti&. Dei % transla#ie este % transf%rmare n%n; liniar+ *ntr;un spa#iu Eucli)ian bi;)imensi%nal sau tri;)imensi%nal )escris )e c%%r)%nate Carte-iene< )e&ine< *ntru;un spa#iu pr%iecti& 'D sau "D )escris )e c%%r)%nate %m%gene< % transf%rmare liniar+ simpl+ As earB.

1.3.!. Concepte din domeniul fi"icii


:n general c%nceptul mi>c+rii *n fi-ic+ este centrat asupra accelera#iei. Dac+ ne;am afla *n spa#iu >i am *mpinge un %biect acesta nu s;ar %pri nici%)at+< )ec@t la impactul cu un alt 11

OPRIAN Sabina Diana

CUPRINS

%biect. :n realitate *ns+ )ac+ *mpingem un %biect pe %ri-%ntal+ acesta s;ar %pri )at%rit+ f%r#el%r )e frecare. :n sc/imb )ac+ l+s+m un %biect s+ ca)+ i nu lu+m *n c%nsi)erare gra&ita#ia acesta *>i &a p+stra &ite-a. Deci )ac+ p+str+m &ite-a c%nstant+< aceasta p%ate fi scris+ astfelF &AtB I &5 K4%rmula 1.1'.L

Hite-a p%ate fi c%nsi)erat+ ca fiin) )iferen#a instantanee a )istan#ei supra timp. Astfel )ac+ integr+m aceast+ f%rmul+ % %b#inem ca fiin) % func#ie )e p%-i#ia ? i p%-i#ia ini#ial+F ?AtB I Q&AtB I &5AtB 0 ?5 K4%rmula 1.1".L

De aici )e)ucem c+ )ac+ a&em un %biect la ? I 5 cu % &ite-+ & 5 I 1< pentru fiecare &al%are *ntreag+ a lui t )istan#a se m+re>te cu 1. Aceast+ func#ie ne )+ p%-i#ia %biectului >tiin) timpul< p%-i#ia ini#ial+ >i &ite-a. :n acela>i m%) am putea c%nsi)era >i mi>carea pe a?a OD *ns+ pe aceasta apare >i gra&ita#ia. :n cel mai simplist m%)el accelera#ia gra&ita#i%nal+ este c%nsi)erat+ % c%nstant+ < ,.(1 mJs!. C%nsi)er@n) aceast+ accelera#ie ca fiin) c%nstant+ are mai multe implica#ii. :n primul r@n) am putea integra ecua#ia pentru a %b#ine ecua#ia &ite-ei func#ie )e timp< iar )ac+ mai aplic+m integrala *nc+ %)at+ %b#inem ecua#ia p%-i#iei ca func#ie )e timp. aAtB I a5 &AtB I QaAtB I &5 0 a5t DAtB I Q&AtB I D5 0 &5t 0 Aa5t!BJ! 1ai c%n&enabil este s+ %rgani-+m t%tul *ntr;% matriceF K4%rmula 1.16.L

K4%rmula 1.1..L Restric#i%n@n)u;ne la )%u+ )imensiuni< s+ presupunem ca a&em un %biect ce are % traiect%rie balistic+< este mult mai u>%r s+ )escriem mi>carea f%l%sin) % &ite-+ i un ung/i. Acest lucru *nseamn+ s+ f%l%sim c%%r)%nate p%lare< *n trei )imensiuni ne;ar trebui )%u+ ung/iuri )eci &%r fi c%%r)%nate sferice. Pentru simplificare lu+m ca-ul !D< accelera#ia are %

1!

OPRIAN Sabina Diana

CUPRINS

&al%are fi?+ 15< punctul ini#ial A5<5B< &ite-a ini#ial+ 6< ung/iul "65 >i calcul+m pentru timpul tI!.

K4%rmula 1.1$.L Presupunem c+ a&em ne&%ie )e punctul )e *n+l#ime ma?im+ la care a=unge %biectul. Acest lucru este u>%r )e%arece pentru funcia )e *n+l#ime ma?imul este acela>i cu ma?imul func#iei D< iar aceast+ &al%are este %b#inut+ pentru punctul *n care &ite-a este nul+.

K4%rmula 1.1(.L Se %bser&+ c+ &al%area timpului este negati&+< ceea ce este inc%rect )in punctul )e &e)ere al fi-icii. Acest lucru este re-ultatul negli=+rii )efinirii a?el%r )e c%%r)%nate. Acesta e primul lucru care trebuie specificat atunci c@n) se pr%pune re-%l&area unei pr%bleme )e fi-ic+. Pentru a c%recta gre>eala este ne&%ie )%ar s+ sc/imb+m semnul lui t *n ecua#ie. 1'

OPRIAN Sabina Diana

CUPRINS

Graficul unui %biect cu traiect%rie balistic+

K4ig. 1.1.L Descrierea f%rel%r *n fi-ic+ este simpl+. O f%r+ 4 a unui %biect )e masa m i acceleraie a p%ate fi scris+ astfelF 4ImOa K4%rmula 1.1,.L

Acest m%)el presupune c+ %biectul este un singur punct *n spaiu i se anali-ea-+ )iferitele f%re ce aci%nea-+ asupra acestuia. Dat%rit+ acestei ip%te-e nu se p%ate re-%l&a t%ate pr%blemele f%l%sin) f%rmula )at+< )ar c/iar i aa este simplu )e *neles i pentru m%)ele mai c%mple?e. 4%l%sin) acest m%)el se p%ate )e)uce c+ asupra unui %biect aci%nea-+ )%u+ f%reF :ora gravitaionalH P ceea ce atrage %biectul spre P+m@nt i este )e fapt imprimarea acceleraiei g asupra %biectului )e mas+ m 4ImOg K4%rmula 1.!5.L

:ora normalH P ceea ce aci%nea-+ asupra %biectului i *l *mpie)ic+ s+

*nainte-e. Altfel spus aceasta este f%ra cu care P+m@ntul aci%nea-+ asupra %biectului *mp%tri&a gra&itaiei. :nl+turarea acestei f%re A*nl+turarea p+m@ntului )e sub %biectB *i permite %biectului s+ *nainte-e spre centrul P+m@ntului. Un alt fact%r *n )eplasarea %biectel%r este aciunea f%rel%r )e frecare. Spre e?emplu un %biect ce se mic+ prin aer ar trebui sa p%at+ s+ aib+ % &ite-+ mai mare )ec@t )ac+ ar c+l+t%ri prin ap+. Acesta )epin)e )e )%u+ lucruriF 1"

OPRIAN Sabina Diana

CUPRINS

materialul cu care intr+ *n c%ntact %biectul %biectul *n sine

:n general m%)elele fi-ice iau *n c%nsi)erare )%ar primul fact%r. :n plus *n calcularea acestei f%re intr+ *n calcul i greutatea %biectului. Pentru frecarea cau-at+ )e )eplasarea )e;a lungul unei suprafee< spre e?emplu %binem f%ra )e frecare 4C a&@n) c%eficientul )e frecare R< masa %biectului m i acceleraia gra&itai%nal+ g astfelF 4C I R O m O g K4%rmula 1.!1.L

Acest tip )e f%r+ *ns+ nu apare )ec@t atunci c@n) %biectul este *n micare< )ar % c%mp%nent+ a sa e?ist+ *n %rice m%ment< astfel a&em urm+t%arele c%ncepteF :recare staticH P este limita inferi%ar+ a unei f%re necesare pentru a pune *n micare un %biect. Un %biect stai%nar necesit+ % f%r+ mai mare pentru a;l face m%bil )ec@t f%ra necesar+ meninerii *n micare a aceluiai %biect. :recare cineticH sau dinamicH (non+staticH% P repre-int+ c%eficientul )e frecare )in timpul mic+rii. Aceasta este f%ra risipit+ prin frecare *n timp ce %biectul este m%bil. 4raciunea )e f%r+ ce r+m@ne este f%l%sit pentru a accelera %biectul. Ceea ce am )escris mai sus presupunea ca f%rele s+ fie aplicate c%nstant *n timp asupra unui %biect. #mpulsul este c%nceptul fi-ic care presupune c+ pentru % peri%a)+ )efinit+ t % f%r+ c%nstant+ a f%st aplicat+. Ecuaia )e calcul a&@n) masa %biectului< &ite-a final+ i cei )%i timpi *ntre care s;a aplicat f%ra esteF Impuls I 4 O At! P t1 B I m O & K4%rmula 1.!!.L

Ineria este c%nceptul ce permite )efinirea )e c%li-iuni elastice i este )efinit ca fiin) masa transp%rtat+ cu % &ite-+ )at+F pImO& K4%rmula 1.!'.L

De aici se )e)uce c+ un %biect )e masa mare are mult+ inerie )ar i faptului c+ un %biect u%r )ar cu % &ite-+ f%arte mare p%ate genera acceai f%r+.

16

OPRIAN Sabina Diana

CUPRINS

C%li-iunea elastic+ este interaciunea< l%&irea< a )%u+ %biecte a&@n) ca re-ultat m%)ificarea &ite-ei fiec+rui %biect. 4%l%sin) legea )e c%nser&are a energiei i tiin) masa %biectel%r m1 i m! precum i &ite-ele *n m%mentul c%li-iunii &1 i &! %binemF

K4%rmula 1.!".L Re-%l&@n) sistemul pentru necun%scutele &1f i &!f <&ite-ele finale ale %biectel%r a&emF

K4%rmula 1.!6.L

CAPITOLUL 2.

Realizarea aplicaiei

2.1. #e$nologii folosite


Am reali-at aplica#ia utili-@n) me)iul integrat )e )e-&%ltare Hisual Stu)i% >i limba=ul pr%priu al 1icr%s%ft;ului< 1anage) C00. Pentru reali-area lumii tri)imensi%nale am f%l%sit OpenG < mai specific libr+ria open source SfreeglutT care este % *ncapsulare a bibli%tecii OpenG < %ferin) % a)i#ie )e met%)e ce *nlesnesc utili-area. Interfa#a utili-at%rului am creat;% f%l%sit 2in)%3s 4%rms< succes%rul bine cun%scutului 14C A1icr%s%ft 4%un)ati%n ClassesB. :n ceea ce pri&e>te persisten#+ )atel%r< f%l%sirea limba=ului U1 este u>%r )e *n#eles< acesta %ferin) p%sibilitatea )e a;mi crea singur un limba= e?tins cu restric#ii le?icale >i )e parsare stricte.

2.1.1.

%escriere C&&

imba=ul )e pr%gramare C00 a f%st ini#ial )eri&at )in C. T%tu>i< nu abs%lut %rice pr%gram scris *n C este &ali) *n C00. De%arece C >i C00 au e&%luat in)epen)ent< au ap+rut< 1.

OPRIAN Sabina Diana

CUPRINS

)in nefericire< % serie )e inc%mpatibilit+#i *ntre cele )%u+ limba=e )e pr%gramare. Cea mai ampl+ re&i-ie a limba=ului C< C00< a creat un num+r suplimentar )e c%nflicte. Diferen#ele fac s+ fie greu )e scris pr%grame >i bibli%teci care s+ fie c%mpilate >i s+ rule-e c%rect *n calitate )e c%) C sau C00< >i pr%)uce c%nfu-ii cel%r care pr%gramea-+ *n ambele limba=e. Diferen#ele fac c+ fiecare )in cele )%u+ limba=e )e pr%gramare s+ *mprumute )in caracteristicile celuilalt limba= )e pr%gramare. 9=arne Str%ustrup< creat%rul limba=ului C00< a sugerat )e nenum+rate %ri s+ se re)uc+ inc%mpatibilit+#ile pe c@t )e mult p%sibil pentru a ma?imi-a inter%perabilitatea )intre cele )%u+ limba=e )e pr%gramare. Unii au argumentat c+ C >i C00 sunt )%u+ limba=e )e pr%gramare )istincte< c%mpatibilitatea )intre ele fiin) util+ )ar nu &ital+E p%tri&it acestei %pinii< ef%rturile )e a re)uce inc%mpatibilitatea nu trebuie s+ re)uc+ ef%rturile )e a a)uce elemente n%i *n m%) in)epen)ent cel%r )%u+ limba=e )e pr%gramare. Cele mai imp%rtante )iferene suntF #nline ; func#iile inline apar *n sec#iunea )e )eclarare a &ariabilel%r gl%bale *n Cu&@ntul c/eie b%%l are *n C00 pr%priul sau /ea)er< Vst)b%%l./W. :n C00< iar *n C acestea ap+r *n a>a -isele Sfi>iere staticeT. &ariantele anteri%are )e C tipul )e )ate b%%lean nu era )efinit< *n sc/imb erau f%l%site % serie )e met%)e Ainc%mpatibileB pentru a simul+ acest tip )e )ate. C%nstantele caracter Acuprinse *ntre ap%str%furiB au )imensiunea unui int *n C i c/ar *n C00. Cu alte cu&inte< *n C< si-e%fANaNB II si-e%fAintBE *n C00< si-e%fANaNB II si-e%fAc/arB. C/iar i *n aceste c%n)iii< &al%area acestui tip )e c%nstante nu &a )ep+i &al%area ma?im+ ce p%at+ fi p+strat+ )e c/ar< )eci % c%n&ersie )e genul Ac/arBNaN este sigur+. ne3< )elete< ...B :n C00< c%mpilat%rul creea-+ aut%mat % Setic/etaX pentru %rice structura Cu&inte c/eie suplimentare au f%st intr%)use *n C00< )eci acestea nu p%t fi f%l%site ca i)entificat%ri aa cum ar putea fi f%l%site *n C. A)e e?emplu trD< catc/< template<

AstructB< uniune Auni%nB sau enumera#ie AenumB< astfel *nc@t struct S YZE *n C00 este ec/i&alent cu tDpe)ef struct S YZ SE *n C. C00 a a)%ptat unele func#i%nalit+#i ce au ap+rut ini#ial *n C00. Printre acestea se enumer+F Declararea %bligat%rie a pr%t%tipului funciil%r Cu&@ntul c/eie inline Eliminarea &ariabilei implicite int ca &al%are )e *nt%arcere.

1$

OPRIAN Sabina Diana

CUPRINS

2.1.2. %escriere 'anaged C&&


1anage) E?tensi%ns pentru C00< sau simplu 1anage) C00< este % implementare pr%prietar+ )e C00 )e c+tre 1icr%s%ft care inclu)e e?tensii gramaticale i sintactice< cu&inte c/eie i atribute pentru a a)uce limba=ul C00 pe platf%rma .Net. Aceste e?tensii permit c%)ul C00 sa fie a)us pe C%mm%n anguage Runtime AC RB< sub f%rma )e manage) c%)e< )ar p+str@n) t%t%)at+ inter%perabilitatea cu c%)ul nati&. 1anage) C00 nu este )e sine st+t+t%r un limba= )e pr%gramare ci )%ar % e?tensie. Aceste e?tensii au f%st intr%)use %)at+ cu lansarea Hisual C00 .Net )ar nu au f%st a)%ptate )e muli )e-&%ltat%ri p@n+ la re&i-uirea e?tensi&+ care a a&ut l%c *n !556 cu sc%pul )e a clarifica i a simplifica sinta?a i pentru a a)+uga funci%nalitate precum f%l%sirea )e generice manage). S1anage)T se refer+ la faptul c+ este rulat< gesti%nat< )e c+tre maina &irtual+ .Net care funci%nea-+ ca un me)iu )e pr%tecie pentru % securitate sp%rit+< a&@n) mai multe &erific+ri la rulare< precum &erific+ri )e buffer %&errun. :n plus< aplicaiile scrise *n 1anage) C00 se c%mpilea-+ *n CI < C%mm%n Interme)iate anguage< i nu )irect *n instruciuni nati&e )e pr%ces%r< aa cum se *nt@mpl+ cu aplicaiile scrise *n C00 clasic. C%)ul scris *n 1anage) C00 p%ate s+ inter%pere-e cu %rice alt limba= ce p%ate fi gesti%nat )e maina &irtual+ .Net< cum ar fi C[ sau Hisual 9asic .Net. De asemenea p%ate s+ f%l%seasc+ i garbage c%llect%r;ul i alte tr+s+turi ale C R. Aceasta *nseamn+ c+ 1anage) C0 0 %cup+ un l%c unic printre limba=ele .Net )e%arece este singurul ce p%ate c%munica )irect cu aceste limba=e precum i cu C00 nati&. Celelalte limba=e .Net p%t c%munica cu c%) C00 )%ar prin PIn&%Ce sau CO1< )e aceea 1anage) C00 este f%l%sit a)esea ca un Sp%)T )e c%municare *ntre acestea. :uncionalitate adiionalH adusH de Managed C++ Cum am amintit mai sus unul )in a&anta=ele rul+rii pe ma>ina &irtual+ a platf%rmei .Net este f%l%sirea garbage c%llect%r;ului care eliberea-+ pr%gramat%rul )e p%&ara gesti%n+rii manuale a mem%riei< *ns+ este imp%rtant )e >tiut c+ e?ist+ >i pentru clasic C00 garbage c%llect%r. De>i aceast+ f%rm+ )e gesti%nare a mem%riei este )estul )e rapi)+ ca &ite-+ )e acces< pentru aplica#ii a c+r%r perf%rman#+ este critic+< cel mai pr%babil se &a %pta pentru utili-area c%)ului unmanage)< nati&. :ns+ aceast+ u>urare a gestiunii mem%riei &ine cu un pre#F *n C00 e?ist+ m%>tenire multipl+< % clas+ p%ate a&ea mai multe clase )e ba-+< *n 1anage) C00< )at%rit+ unei limit+ri a C R;ului acest lucru nu este p%sibil. 1(

OPRIAN Sabina Diana

CUPRINS

&vantaJe Kn comparaie cu codul unmanaged< C%) manage) i unmanage) p%t fi c%mbinate f%arte u>%r *n acelai assamblD

.Net. Aceasta permite pr%gramat%rului s+ p+stre-e c%)ul unmanage) ce nu p%ate fi p%rtat pe platf%rma .Net f+r+ a rescrie t%t pr%iectul. 1anage) C00 este singurul limba= care e capabil sa c%munice nati& i cu t%ate limba=ele .Net >i cu c%) unmanage) C00. Deci este % s%lu#ie i)eal+ pentru inter%perabilitate *ntre t%ate aceste limba=e. De=avantaJe Kn comparaie cu codul unmanaged< 1anage) C00 intr%)uce multe cu&inte c/eie i c%n&en#ii sintactice ce p%t

afecta li-ibilitatea c%)ului manage)< mai ales )ac+ este inclus c%) unmanage) cu care interac#i%nea-+ )irect. 1anage) C00 nu este c%mpatibil cu aplica#ii 3eb ASP.Net< care este % capabilitate a tutur%r limba=el%r .Net< inclusi& cele ale un%r )e-&%ltat%ri in)epen)eni. 1anage) C00 nu are sup%rt pentru pr%gramare generica< cu template;uri. Succes%rul acestuia< C00JC I &a a&ea aceast+ capabilitate. De=avantaJe Kn comparaie cu alte lim!aJe .Net (CL, Misual )asic, etc.% Aplicaiile *n 1anage) C00 necesita un timp )e )e-&%ltare mai lung )ec@t a alt%r limba=e ce p%t fi aplicate *n acelai ca- i care ar a&ea acelai re-ultat< )at%rita necesit+ii f%l%sirii p%inter;il%r< c/iar i *n c%) 1anage) C00. :n c%mparaie cu \a&a< 1anage) C00 are a&anta=ul )e a putea c%munica cu sistemul la un ni&el =%s i mai apr%piat )e /ar)3are mult mai eficient< pe c@n) pr%gramat%rul =a&a trebuie s+ f%l%seasc+ \NI A\a&a Nati&e InterfaceB pentru a accesa ser&icii )e ni&el =%s al sistemului. :n sc/imb \a&a reali-ea-+ i )%cumentaia c%)ului surs+ precum i e?istena unei game mai larg+ )e utilitare i me)ii )e )e-&%ltare integrate ce f%l%sesc acest limba=< 1anage) C00 este acceptat )%ar )e Hisual Stu)i%< )ei pentru pr%gramat%rii )ispui s+ lucre-e mai mult cu linia )e c%man)+ e?ist+ un Hisual C00 T%%lCit ce p%ate fi )esc+rcat separat. Un alt limba= )in platf%rma .Net este C[< mai asem+n+t%r cu =a&a< fiin) )e asemenea mai simplu )e utili-at< p%ate )uce la aceleai re-ultate c@n) este aplicat aceleai pr%bleme re-%l&ate cu 1anage) C00 a&@n) c%n&eniile structurale i sintactice asem+n+t%are. De asemenea are a&anta=ul )e a fi un limba= interpretat pur A1SI B pe c@n) 1anage) C00 p%ate )uce la c%nfu-ii i er%ri )ac+ se interp+trun)e cu C00 nati&. :n sc/imb p%rtarea aplicaiil%r )in C sau C00 se reali-ea-+ mai u%r cu 1anage) C00 i )ei c%mpilat%rul 1icr%s%ft Hisual 1,

OPRIAN Sabina Diana

CUPRINS

C00 pr%)uce t%t c%) interpretat< acesta este unul cu un set )e instruciuni mai matur< sp%rin) perf%rmana i *n general este mai rapi) )ec@t cel pr%)us )e c%mpilat%rul C[. C00 nati& este mai rapi) la rulare >i nu e ne&%ie s+ se instale-e un c%mpiler special sau % ma>in+ &irtual+< )e asemenea sup%rt+ cu&@ntul c/eie c%nst< a&anta=e ce nu sunt *mp+rt+>ite >i )e limba=ele )e ni&el *nalt. De asemenea *n c%)ul unmanage) se p%ate m%>teni )in mai multe clase< un lucru imp%rtant ce *n multe situa#ii p%ate crea pr%bleme >i )e aceea nu e &+-ut neap+rat c+ un a&anta=< )ar f%l%sit cum trebuie p%ate a)uce re-ultate superi%are >i p%ate re)uce c%mple?itatea c%)ului< pe c@n) %c%lirea acestei s%lu#ii p%ate crea un c%) mai c%mple? )ec@t este necesar. Pe )e alt+ parte 1anage) C00 sup%rt+ un ni&el mai ri)icat al refle?iei< ceea ce *n cele mai multe ca-uri este bine< lu@n) *n calcul bine*n#eles >i sc%pul >i utili-area c%)ului. De asemenea inter%perabilitatea cu celelalte limba=e .Net %fer+ % &ersatilitatea rar *nt@lnit+< iar prin managementul aut%mat al mem%riei )e-&%ltarea aplica#iil%r este mai facil+.

2.1.3.

%escriere (indo)s *orms

C@n) 2in)%3s a f%st lansat pentru prima )at+< e?ista cu a)e&+rat % singur+ p%sibilitate )e a scrie aplicaii pentru 2in)%3s< iar aceasta presupunea f%l%sirea limba=ului )e pr%gramare C pentru a acce)e la interfaa )e pr%gramare a aplicaiil%r 2in)%3s AAPIB. Dei era p%sibil accesul la 2in)%3s API i utili-@n) 1icr%s%ft Pascal< aceast+ ab%r)are era f%arte rar utili-at+. Pe parcursul anil%r< multe alte limba=e au f%st a)aptate pentru a reali-a pr%grame pentru 2in)%3s. Printre acestea se num+r+ Hisual 9asic i C00. At@t C00< c@t i C[ sunt limba=e %rientate spre %biecte care recun%sc ma=%ritatea tipuril%r< %perat%ril%r< e?presiil%r i instruciunil%r )in limba=ul )e pr%gramare C. Din acest m%ti&< C00 i C[ Aprecum i \a&aB sunt numite une%ri limba=e ba-ate pe C< sau limba=e care aparin familiei C. Dup+ intr%)ucerea me)iului .Net< 1icr%s%ft pune la )isp%-iie trei ab%r)+ri pentru scrierea aplicaiil%r 2in)%3s< utili-@n) un limba= ba-at pe CF

!5

OPRIAN Sabina Diana

CUPRINS

K4ig. !.1.L Din punctul )e &e)ere al pr%gram+rii< ambele interfee< 14C i 2in)%3s 4%rms< funci%nea-+ prin apeluri la 2in)%3s API. Din punctul )e &ere al ar/itecturii< se p%ate spune c+ acestea se afl+ )easupra lui API. Aceste interfee )e ni&el mai *nalt sunt c%ncepute pentru a simplifica pr%gramarea sub 2in)%3s. De %bicei se p%t efectua multe acti&it+i *n 14C sau 2in)%3s 4%rms utili-@n) mai puine instruciuni )ec@t atunci c@n) s;ar utili-a )irect 2in)%3s API. Dei aceste interfee )e ni&el *nalt a)esea cresc pr%)ucti&itatea pr%gramat%rului< faptul ca acestea se ba-ea-+ pe alte interfee creea-+ )e-a&anta=ul )e a fi mai puin fle?ibile. 4%l%sin) )irect 2in)%3s API se p%t face mai multe lucruri )ec@t )ac+ se f%l%sete 2in)%3s 4%rms. T%tui pentru a ameli%ra acest fapt< s;au intr%)us capabilit+i< care cu puin ef%rt *n plus< permit efectuarea )e apeluri 2in)%3s API )intr;un pr%gram 2in)%3s 4%rms. a lansarea pr%)usului 2in)%3s 1.5< *ntreaga interfa+ API a f%st implementat+ *n trei bibli%teci cu legare )inamic+< numite GERNE < USER i GDI. Dei bibli%tecile cu legare )inamic+ as%ciate cu 2in)%3s au a=uns s+ fie mult mai &%lumin%ase< este *n c%ntinuare util s+ se *mpart+ apelurile la funciile 2in)%3s Asau la clase ale ca)rului )e lucruB *n aceste trei categ%riiF apelurile la nucleu sunt cele implementate *n ar/itectura sistemului )e %perare i pri&esc )e %bicei lucrul cu tasC;uri< gesti%narea mem%riei i %peraii )e intrareJ ieire pentru fiiere. Termenul user se refer+ la interfaa cu utili-at%rul. Acestea sunt funcii pentru crearea ferestrel%r< utili-area meniuril%r i a casetel%r )e )ial%g i afiarea elemetel%r )e c%ntr%l< cum ar fi but%ane i bare )e )erulare. GDI este Grap/ics De&ice Interface< acea parte )in 2in)%3s care r+spun)e )e afiarea ieirii grafice Ainclusi& a te?tuluiB pe ecran i la imprimant+.

2.1.!.

%escriere OpenGL

!1

OPRIAN Sabina Diana

CUPRINS

OpenG

AOpen Grap/ic

ibrarDB nu este cum s;ar putea cre)e un limba= )e

pr%gramare ci un stan)ar) )e pr%gramare al aplica#iil%r 'D. A f%st primul stan)ar) care s;a impus pe pia#+ fiin) inclus )e=a la primele &ersiuni )e 2in)%3s,6 >i 2in)%3sNT".5. Practic %)at+ cu bibli%teca )e func#ii 2in'! a ap+rut >i sup%rtul pentru OpenG . OpenG este in)epen)ent )e me)iul )e pr%gramare< fiin) )efinite acelea>i tipuri )e )ate >i acelea>i func#ii in)iferent )ac+ se pr%gramea-+ *n Hisual C< Hisual 9asic< Delp/i< C9uil)er >.a. T%tu>i se p%ate %bser&a % %arecare *nru)ire *ntre OpenG >i C pe m+sur+ ce se a&ansea-+ *n pr%gramare >i se cap+t+ % %arecare e?perien#+ >i familiaritate cu OpenG . Nu se p%t nega nici %arecare asem+n+ri cu Delp/i< )ar mai pu#ine ca num+r >i mai subtile. Astfel c/iar )ac+ &e#i *n&+#a OpenG utili-@n) Hi-ual C< &e#i putea trece relati& rapi) >i f+r+ )ificult+#i la alt me)iu )e pr%gramare mai familiar< )ar care are bibli%teci OpenG . Saltul mai mare se &a face )ac+ se &a ab%r)a alt stan)ar) )e pr%gramare 'D< Direct 'D spre e?emplu< )ar a&@n) c%ncepte c%mune se &a *nsu>i mult mai u>%r. Ca fapt )i&ers *n &ersiunile Hisual C< s;a renun#at la un m%ment )at la actuali-are bibli%tecii OpenG < aceasta r+m@n@n) la &ersiune 1.1< *n sc/imb s;a intr%)us sup%rt pentru Direct 'D. Alte me)ii )e pr%gramare c%ntinu+ *nc+ s+ inclu)+ >i s+ actuali-e-e bibli%tecile OpenG < >i aceasta cu at@t mai mult cu c@t marea parte a )istribu#iil%r )e inu? se ba-ea-+ pe acest stan)ar). :n inu? s; a impus )e=a G UT AOpenG UtilitD T%%lCitB >i mai n%u freeG UT. Deci )ac+ )%ri#i implementare *n me)ii free3are )e aplica#ii 'D aceasta este s%lu#ia. +oarta de afi,are OpenGL P%arta )e afi>are mai este numit+ c%nte?t )e re)are Arendering conte1tB< >i este as%ciat+ unei ferestre )in sistemul 2in)%3s. Dac+ se pr%gramea-+ f%l%sin) bibli%teca G UT< c%relarea )intre fereastra 2in)%3s >i p%rtul OpenG sau PG este asigurat+ )e func#ii ale acestei bibli%teci. Dac+ nu se f%l%se>te G UT< atunci func#iile bibli%tecil%r )e e?tensie UG < 2G permit atribuirea unui c%nte?t )e afi>are 2in)%3s pentru c%nte?tul )e re)are OpenG >i accesul la c%nte?tul )e afi>are 2in)%3s A device conte1tB. 4unc#ia OpenG care )efine>te transf%rmarea fereastr+;p%art+ este< void glMie(port(GLint 1, GLint " Ni GLsi=ei (idt , GLsi=ei eig t%< un)e ? >i D specific+ p%-i#ia c%l#ului st@nga;=%s al )reptung/iului p%r#ii *n fereastra )e afi>are A3in)%3B >i au &al%rile implicite 5< 5. Parametrii 3i)t/ >i /eig/t specific+ l+#imea< respecti& *n+l#imea< p%r#ii )e afi>are< )at+ ca num+r )e pi?eli. Se reaminte>te c+ transf%rmarea fereastr+;p%art+ este c%mp%nent+ a transf%rm+rii )in sistemul )e referin#+ n%rmali-at *n sistemul )e referin#+ ecran 'D .

!!

OPRIAN Sabina Diana

CUPRINS

K4ig. !.!.L Un pi?el este repre-entat *n OpenG printr;un )escript%r care )efine>te mai mul#i parametriF O num+rul )e bi#iJpi?el pentru mem%rarea cul%rii O num+rul )e bi#iJpi?el pentru mem%rarea a)@ncimii O num+rul )e buffere )e imagine -ufferul de cadru 9ufferul )e ca)ru Aframe !ufferB c%n#ine t%ate )atele care )efinesc % imagine >i c%nst+ )in mai multe sec#iuni l%giceF bufferul )e imagine Asau bufferul )e cul%areB< bufferul )e a)@ncime AO+!ufferB< bufferul >abl%n AstencilB< bufferul )e acumulare AacumulationB. )ufferul de imagine Acolor !ufferB *n OpenG p%ate c%n#ine una sau mai multe sec#iuni< *n fiecare fiin) mem%rat+ cul%area pi?elil%r )in p%arta )e afi>are. Re)area imaginil%r f%l%sin) un singur buffer )e imagine este f%l%sit+ pentru imagini statice< cel mai frec&ent *n pr%iectarea grafic+ ACADB. :n generarea interacti&+ a imaginil%r )inamice< un singur buffer )e imagine pr%)uce efecte ne)%rite< care )iminuea-+ mult calitatea imaginii generate. Orice ca)ru )e imagine *ncepe cu >tergerea A)e fapt< umplerea cu % cul%are )e f%n)B a bufferului )e imagine. Dup+ aceasta sunt genera#i pe r@n) pi?elii care apar#in tutur%r elementel%r imaginii Alinii< puncte< suprafe#eB >i intensit+#ile )e cul%are ale acest%ra sunt *nscrise *n bufferul )e imagine. Pentru trecerea la ca)rul urm+t%r< trebuie )in n%u >ters bufferul )e imagine >i reluat+ generarea elementel%r c%mp%nente< pentru n%ua imagine. C/iar )ac+ ar fi p%sibil+ generarea >i *nscrierea *n buffer a elementel%r imaginii cu % &ite-+ f%arte !'

OPRIAN Sabina Diana

CUPRINS

mare Aceea ce este greu )e reali-atB< t%t ar e?ista un inter&al )e timp *n care bufferul este >ters >i acest lucru este perceput ca % p@lp@ire a imaginii. :n grafica interacti&+ timpul necesar pentru *nscrierea )atel%r *n buffer este A*n ca-ul cel mai fericitB f%arte apr%piat )e inter&alul )e sc/imbare a unui ca)ru a imaginii Aup)ate rateB >i< )ac+ acest pr%ces are l%c simultan cu e?tragerea )atel%r )in buffer >i afi>area l%r pe )isplaD< atunci ecranul &a pre-enta un timp f%arte scurt imaginea c%mplet+ a fiec+rui ca)ru< iar cea mai mare parte )in timp ecranul &a fi >ters sau &a c%n#ine imagini par#iale ale ca)rului. Te/nica uni&ersal f%l%sit+ pentru re)area imaginil%r )inamice Acare se sc/imb+ )e la un ca)ru la altulB este te/nica du!lului !uffer de imagine. :n aceast+ te/nic+ e?ist+ )%u+ buffere )e imagineF bufferul )in fa#+ A frontB< )in care este afi>at+ imaginea pe ecran >i bufferul )in spate A!ac-B< *n care se *nscriu elementele )e imagine generate. C@n) imaginea unui ca)ru a f%st c%mplet generat+< ea p%ate fi afi>at+ pe ecran printr;% simpl+ %pera#ie )e c%mutare intre buffereF bufferul spate )e&ine buffer fa#+< >i )in el urmea-+ s+ fie afi>at+ imagine ca)rului curent< iar bufferul fa#+ )e&ine buffer spate >i *n el urmea-+ s+ fie generat+ imaginea n%ului ca)ru. C%mutarea intre bufferele )e imagine se p%ate sincr%ni-a cu cursa )e re&enire pe &ertical+ a m%nit%rului >i atunci imaginile sunt pre-entate c%ntinuu< f+r+ s+ se %bser&e imagini fragmentate sau p@lp@iri. :n OpenG fiecare ca)ru. 1%)ul *n care se e?ecut+ c%mutarea bufferel%r )epin)e )e platf%rma /ar)3are. :n lipsa unui accelerat%r grafic< t%ate %pera#iile OpenG sunt e?ecutate s%ft3are< bufferul spate este % -%n+ )in mem%rie principal+< iar bufferul fa#+ este mem%ria &i)e% )in a)apt%rul grafic. a c%mutarea bufferel%r care se pr%)uce la apelul func#iei S3ap9uffersAB< are l%c c%pierea bufferului bacC Acare este implementat ca un bitmap in)epen)ent )e )isp%-iti& ; DI9 ; )e&ice in)epen)ent bitmapB< *n bufferul fr%nt< care este mem%ria )e ecran a a)apt%rului grafic. Definirea >i utili-area bufferel%r c%mp%nente ale unui buffer )e ca)ru OpenG este pu#in mai c%mple?+ )ec@t m%)ul general )e e?ecu#ie )escris mai sus< )e%arece se %fer+ p%sibilitatea cre+rii at@t a imaginil%r cu simplu sau )ublu buffer< m%n%grafice >i stere%grafice >i selectarea bufferului *n care se scrie sau se cite>te la un m%ment )at. 4unc#ia void glDra()uffer(GLenum mode% stabile>te bufferul *n care se )esenea-+ primiti&ele ge%metrice. Parametrul m%)e p%ate lua una )in &al%rileF GLPNON., GLP:'ON7PL.:7, GLP:'ON7P'#G*7, GLP)&CQPL.:7, GLP)&CQP'#G*7, GLP:'ON7, GLP)&CQ, GLPL.:7, GLP'#G*7, GLP:'ON7P&NDP)&CQ. Hal%area implicit+ este GLP:'ON7 pentru imagini cu un singur buffer >i GLP)&CQ pentru imagini cu )ublu buffer. Celelalte !" c%mutarea bufferel%r este efectuat+ )e func#ia $(ap)uffers(%. Aceast+ func#ie trebuie s+ fie apelat+ la terminarea gener+rii imaginii tutur%r %biectel%r &i-ibile *n

OPRIAN Sabina Diana

CUPRINS

%p#iuni se refer+ la imagini stere%sc%pice. 4unc#ia gl'ead)uffer(GLenum mode% stabile>te bufferul curent )in care se citesc pi?elii surs+ *n %pera#ii )e c%mbinare sau acumulare. Parametrul m%)e p%ate lua una )in &al%rile )escrise mai sus. Hal%area implicit+ este GLP:'ON7 pentru imagini m%n%grafice cu un singur buffer )e cul%are sau GLP)&CQ pentru imagini m%n%grafice cu )%u+ buffere )e cul%are. Pentru imaginile stere%grafice< bibli%teca OpenG pune la )isp%-i#ie bufferele necesare pentru )efinirea cel%r )%u+ imagini )iferite Ast@nga< )reaptaB< pentru simplu >i )ublu buffer >i func#ii pentru selec#ia intre acestea. Crearea pr%priu;-is+ a imaginil%r stere%sc%pice este re-%l&at+ la ni&elul pr%gramului )e aplica#ie >i necesit+ )isp%-iti&e )e afi>are a)ec&ate. )ufferul de adRncime Adept !ufferB mem%rea-+ a)@ncimea fiec+rui pi?el >i< prin aceasta< permite eliminarea suprafe#el%r ascunse. 9ufferul )e a)@ncime c%n#ine acela>i num+r )e l%ca#ii ca >i un buffer )e imagine< fiecare l%ca#ie c%respun-@n) unui pi?el< )e % anumit+ a)res+. Hal%area mem%rat+ *n l%ca#ia c%respun-+t%are unui pi?el este )istan#a fa#+ )e punctul )e %bser&are Aa)@ncimea pi?eluluiB. a generarea unui n%u pi?el cu aceea>i a)res+< se c%mpar+ a)@ncimea n%ului pi?el cu a)@ncimea mem%rat+ *n bufferul )e a)@ncime< >i n%ul pi?el *nl%cuie>te &ec/iul pi?el A*l Xascun)eTB )ac+ este mai apr%piat )e punctul )e %bser&are. 9ufferul )e a)@ncime se mai nume>te >i 8;buffer< )e la c%%r)%nata -< care repre-int+ a)@ncimea *n sistemul )e referin#+ ecran 'D. )ufferul Na!lon Astencil !ufferB este un buffer au?iliar care este utili-at pentru restric#i%narea )esen+rii *n anumite -%ne ale p%r#ii )e afi>are. Se p%t %b#ine astfel imagini *nca)rate *n anumite >abl%ane< ca )e e?emplu< instrumente )e afi>are f%l%site *n simulat%are )e antrenament. 9ufferul >abl%n p%ate fi f%l%sit >i pentru re)area suprafe#el%r c%planare. )ufferul de acumulare Aaccumulation !ufferB este f%l%sit pentru crearea imaginil%r antialiasing prin acumularea intensit+#il%r )e cul%are a pi?elil%r re-ulta#i prin e>anti%narea imaginii. Operaiile de ba" OpenGL OpenG )esenea-+ primiti&e ge%metrice Apuncte< linii >i p%lig%aneB *n )iferite m%)uri selectabile. Primiti&ele sunt )efinite printr;un grup )e unul sau mai multe &@rfuri AverticesB. Un &@rf )efine>te un punct< cap+tul unei linii sau &@rful unui p%lig%n. 4iecare &@rf are as%ciat un set )e )ateF O c%%r)%nate< O cul%are< O n%rmal+< O c%%r)%nate )e te?tur+. !6

OPRIAN Sabina Diana

CUPRINS

Aceste )ate sunt prelucrate in)epen)ent< *n %r)ine >i *n acela>i m%) pentru t%ate primiti&ele ge%metrice. Singura )e%sebire care apare este aceea c+< )ac+ % linie sau % suprafa#+ este )ecupat+< atunci grupul )e &@rfuri care )escriau ini#ial primiti&e respecti&+ este *nl%cuit cu un alt grup< *n care p%t apare &@rfuri n%i re-ultate )in intersec#ia laturil%r cu planele &%lumului )e )ecupare A&%lumul can%nicB sau unele &@rfuri )in cele ini#iale p%t s+ )ispar+. C%men-ile sunt prelucrate *n %r)inea *n care au f%st primite *n OpenG < a)ic+ %rice c%man)+ este c%mplet e?ecutat+ *nainte ca s+ fie e?ecutat+ % n%u+ c%man)+. OpenG este % interfa#+ pr%ce)ural+< sec&en#a )e c%men-i Aapeluri )e func#iiB prescriu ce %pera#ii s+ fie e?ecutate >i nu ce re-ultat s;ar )%ri s+ fie %b#inut. Se p%t specifica &al%ri ale matricel%r )e transf%rmare< tipul pr%iec#iei< c%eficien#i )e refle?ie< etc. Dat%rit+ naturii pr%ce)urale a bibli%tecii OpenG < este imp%rtant s+ fie cun%scut m%)ul *n care %perea-+< pentru a putea s+ fie f%l%sit+ cu succes. 1%)elul )e e?ecu#ie OpenG este m%)elul client+server. O aplica#ie AclientB Aser&erB. Ser&erul generea-+ c%men-i care sunt interpretate >i e?ecutate )e c+tre OpenG

OpenG p%ate s+ fie e?ecut pe un alt calculat%r )ec@t aplica#ia< )ar atunci trebuie s+ fie )efinit un pr%t%c%l )e c%munica#ie client;ser&er< )at fiin) c+ nu e?ist+ c%men-i OpenG pentru astfel )e %pera#ii. Efectul c%men-il%r OpenG asupra bufferului )e imagine este c%ntr%lat )e sistemul 2in)%3s care al%c+ -%na )e afi>are a p%r#ii Avie(portB OpenG pe ecran. 4igura '.'. pre-int+ % )iagram+ bl%c simplificat+ a m%)ului *n care OpenG prelucrea-+ )atele. S;au ign%rat pentru *nceput aspectele legate )e te?turare >i antialiasing. Sec&en#a )e %pera#ii OpenG Anumit+ pipeline graficB se e?ecut+ asupra &@rfuril%r >i asupra )atel%r as%ciate acest%raF c%%r)%nate< cul%are< n%rmal+ A>i c%%r)%nate )e te?tur+< care nu sunt repre-entate *n figur+B. Succesiunea %pera#iil%r OpenG urmea-+ apr%ape i)entic succesiunea generic+ a %pera#iil%r grafice pre-entat+ *n figura '.".

!.

OPRIAN Sabina Diana

CUPRINS

K4ig. !.'.L

K4ig. !.".L 9ibli%teca OpenG prime>te % succesiune )e primiti&e ge%metrice pe care le

)esenea-+< a)ic+ le c%n&erte>te *n mul#imea )e pi?eli c%respun-+t%are< *nscriin) &al%rile cul%ril%r acest%ra intr;un buffer )e imagine. :n c%ntinuare sunt )etaliate fiecare )intre %pera#iile grafice pre-entate *n figur+. 1%)ul *n care este e?ecutat+ sec&en#a )e %pera#ii pentru re)area primiti&el%r grafice )epin)e )e starea bibli%tecii OpenG < stare care este )efinit+ prin mai multe &ariabile )e stare ale acesteia AparametriB. Num+rul )e &ariabile )e stare ale bibli%tecii este )estul )e mare<

!$

OPRIAN Sabina Diana

CUPRINS

)escrierea l%r ele p%ate fi g+sit+ *n manualul )e referin#+ A OpenGL 'eference ManualB< iar pe parcursul e?punerii &%r fi pre-entate numai cele mai imp%rtante )intre acestea. a ini#iali-are< fiecare &ariabil+ )e stare este setat+ la % &al%are implicit+. O stare % )at+ setat+ *>i men#ine &al%area nesc/imbat+ pan+ la % n%u+ setare a acesteia. Hariabilele )e stare au )enumiri sub f%rm+ )e c%nstante simb%lice care p%t fi f%l%site pentru aflarea &al%ril%r acest%ra. De e?emplu< *n 4ig. ..1 sunt repre-entate )%u+ &ariabile )e stare< cul%area curent+ >i n%rmala curent+< care au )enumirile )efinite *n gl./F Ldefine GLPC2''.N7PCOLO' ;1;);;S Ldefine GLPC2''.N7PNO'M&L ;1;);3. Hariabilele )e stare OpenG sunt )e )%u+ categ%riiF &ariabile )e tip binar >i &ariabile )efinite prin )iferite structuri )e )ate. Hariabile )e tip binar p%t a&ea una )in )%u+ st+riF starea acti&+ Aena!ledB sau starea inacti&+ Adisa!ledB. Setarea la starea acti&+ se reali-ea-+ prin apelul func#iei &%i) gl.na!le(GLenum param%, un)e param este numele simb%lic al parametrului A&ariabilei )e stareB. Setarea la starea inacti&+ se reali-ea-+ prin apelul func#iei void glDisa!le(GLenum param%. De e?emplu< apelul func#iei gl.na!le(GLPD.,7*P7.$7% acti&ea-+ testul )e a)@ncime >i actuali-area c%respun-+t%are a bufferului )e a)@ncime A dept !ufferB< iar apelul func#iei glDisa!le(GLPD.,7*P7.$7%)e-acti&ea-+ testul )e a)@ncime. :n %rice l%c intr;un pr%gram OpenG < se p%ate afla &al%area unui parametru binar prin apelul func#iei GL!oolean gl#s.na!led(GLenum param%, care returnea-+ GLP7'2. )ac+ parametrul param este *n starea acti&+< >i GLP:&L$.< )ac+ parametrul param este *n starea inacti&+. Hal%area unei &ariabile )e stare care nu este )e tip binar se setea-+ prin apelul unei func#ii specifice &ariabilei respecti&e< care are ca argumente &al%rile necesare pentru actuali-are. De e?emplu< &ariabila )e stare cul%are curent+< )enumit+ GLPC2''.N7PCOLO'< se setea-+ prin func#ia &%i) glColor8f(GLfloat red, GLfloat green, GLfloat !lue% la % &al%are )at+ prin trei c%mp%nenteF r%>u A redB< &er)e AgreenB< albastru A!lueB. 4iin) % bibli%tec+ )e-&%ltat+ *n limba=ul C< f+r+ p%sibilitatea )e supra*nc+rcare a func#iil%r< selec#ia unei func#ii apelate cu )iferite tipuri )e argumente )e apel este reali-at+ prin m%)ificarea Aprintr;un sufi?B a numelui func#iei. De e?emplu< func#ia )e setare a cul%rii curente are mai multe &ariante< )up+ tipul >i num+rul argumentel%rF sufi?ul )intr;% familie )e func#ii A)e e?emplu< glColorL(%B. glColor8f(%, glColor8u!(%, glColorTd(%, etc. :n c%ntinuare< *n aceast+ lucrare se n%tea-+ generic cu [

!(

OPRIAN Sabina Diana

CUPRINS

Hal%area unui parametru A&ariabil+ )e stareB OpenG care nu este )e tip binar se p%ate %b#ine *n %rice l%c *n pr%gram prin apelul uneia )in func#iile glGet[ABF void glGet)ooleanv(GLenum pname, GL!ooleanU params%S pname< )e &%i) glGetD%uble&AG enum pname< G )%uble] paramsBE &%i) glGet4l%at&AG enum pname< G fl%at] paramsBE &%i) glGetInteger&AG enum pname< G int] paramsBE prin instruc#iunile GLfloat colorCTDS glGet:loatv

un)e params este a)resa un)e se )epun &al%rile c%mp%nente ale parametrului e?emplu AG ^CURRENT^CO OR< c%l%rB< se %b#in cele patru c%mp%nente ale cul%rii curente Are)< green< blue< alp/aB *n &ect%rul c%l%r. +rimitive geometrice OpenG e?ecut+ sec&en#a )e %pera#ii grafice asupra fiec+rei primiti&e ge%metrice< )efinit+ printr;% mul#ime )e &@rfuri >i tipul acesteia. C%%r)%natele unui &@rf sunt transmise c+tre OpenG glHerte?[ABF 3BE H@rfurile p%t fi specificate *n plan< *n spa#iu sau *n c%%r)%nate %m%gene< f%l%sin) apelul func#iei c%respun-+t%are. O primiti&+ ge%metric+ se )efine>te printr;% mul#ime )e &@rfuri Acare )au )escrierea ge%metric+ a primiti&eiB >i printr;unul )in tipurile prestabilite< care in)ic+ t%p%l%gia< a)ic+ m%)ul *n care sunt c%nectate &@rfurile intre ele. 1ul#imea )e &@rfuri este )elimitat+ intre func#iile gl)egin(% >i gl.nd(%. Aceea>i mul#ime )e &@rfuri A&5< &1< &!<_.&nP1B p%ate fi tratat+ ca puncte i-%late< linii< p%lig%n< etc< *n func#ie )e tipul primiti&ei< care este transmis ca argument al func#iei gl)egin(%F void gl)egin(GLenum mode%. Hal%rile argumentului m%)e >i< )eci< tipurile )e primiti&e acceptate )e OpenG ulteri%r. sunt pre-entate &%i) glHerte?!)AG )%uble ?< G )%uble DBE &%i) glHerte?')AG )%uble ?< G )%uble D< G )%uble -BE &%i) glHerte?'fAG fl%at ?< G fl%at D< G fl%at -BE &%i) glHerte?")AG )%uble ?< G )%uble D< G )%uble -< G )%uble prin apelul unei func#ii glMerte1L(%. Aceasta are mai multe &ariante< )up+ num+rul >i tipul argumentel%r. Iat+< )e e?emplu< numai c@te&a )in pr%t%tipurile func#iil%r

!,

OPRIAN Sabina Diana

CUPRINS

K4ig. !.6.L

K4ig. !...L Acest tabel< *mpreun+ cu figura '... sunt suficiente pentru *n#elegerea m%)ului *n care OpenG interpretea-+ primiti&ele ge%metrice.

'5

OPRIAN Sabina Diana

CUPRINS

Primiti&ele )e tip suprafa#+ Atriung/iuri< patrulatere< p%lig%aneB p%t fi )esenate *n m%)ul Xca)ru )e s@rm+T A(ireframeB< sau *n m%)ul plin AfillB< prin setarea &ariabilei )e stare GLP,OLVGONPMOD. f%l%sin) func#ia void gl,ol"gonMode(GLenum face, GLenum mode%,un)e argumentul m%)e p%ate lua una )in &al%rileF )reapt+. GLP:#LLF se )esenea-+ p%lig%nul plin. Argumentul face se refer+ la tipul primiti&ei ge%metrice A)in punct )e &e)ere al %rient+riiB c+reia i se aplic+ m%)ul )e re)are m%)e. Din punct )e &e)ere al %rient+rii< OpenG a)mite primiti&e %rientate )irect Afr%ntfaceB >i primiti&e %rientate in&ers AbacCfaceB. Argumentul face p%ate lua una )in &al%rileF GLP:'ON7, GLP)&CQ sau GLP:'ON7P&NDP)&CQ< pentru a se specifica primiti&e %rientate )irect< primiti&e %rientate in&ers >i< respecti& ambele tipuri )e primiti&e. :n m%) implicit< sunt c%nsi)erate %rientate )irect suprafe#ele ale c+r%r &@rfuri sunt parcurse *n %r)inea in&ers+ acel%r )e ceas. Aceast+ setare se p%ate m%)ifica prin func#ia gl:ront:ace(GLenum mode%, un)e m%)e p%ate lua &al%area GLPCC4< pentru %rientare *n sens in&ers acel%r )e ceas Acountercloc-(iseB sau GLPC4< pentru %rientare *n sensul acel%r )e ceas%rnic Acloc-(iseB. GLP,O#N7 F se )esenea-+ numai &@rfurile primiti&ei< ca puncte *n GLPL#N.F muc/iile p%lig%anel%r se )esenea-+ ca segmente )e

spa#iu< in)iferent )e tipul acesteia.

2.1...
&arianteF

/lternative OpenGL

Pentru crearea )e aplicaii grafice un pr%gramat%r nu are la )isp%-iie )ec@t )%u+ Direct3D 0 un API pr%prietar ce %fer+ funcii )e ran)are a

elementel%r )e grafic+ tri)imensi%nale i f%l%sete accelerare ard(are )ac+ este pre-ent+ pe placa &i)e%. A f%st creat )e Microsoft pentru a fi f%l%sit pe platf%rma 2in)%3s. &i)e% sup%rt+ accelerare Open L P un API open standard ce cuprin)e funcii )e ran)are a ard(are< OpenGL % &a f%l%si. elementel%r !D i 'D i este )isp%nibil pe ma=%ritatea sistemel%r )e %perare. Dac+ placa :n general< Direct8D este c%nceput ca % interfa+ /ar)3are 'D. Capabilit+ile Direct8Dului sunt )eri&ate )in capabilit+ile ce sunt puse la )isp%-iie )e c+tre sup%rtul ard(are. Spre )e%sebire )e acesta< OpenGL este c%nceput ca un sistem )e ran)are 'D ce p%ate fi accelerat )e ard(are. Aceste )%u+ API;uri sunt c%nstruite *n )%u+ m%)uri

'1

OPRIAN Sabina Diana

CUPRINS

fun)amental )iferite. u@n) *n c%nsi)erare acest lucru< faptul c+ au a=uns sa fie similare *n funci%nalitate arat+ ca ne&%ile utili-at%rului au *mpins )e-&%ltarea p+rii )e ard(are. C/iar i aa e?ist+ )iferene fun)amentale *ntre acestea. Direct8D %blig+ aplicaia s+ gesti%ne-e resursele ard(are pe c@n) OpenGL implemetarea A)ri&er;ulB s+ fac acest lucru. Aceasta *nseamn+ c+ OpenGL facilitea-+ )e-&%ltarea pentru API )ar *n acelai timp sp%re>te c%mple?itatea cre+rii unei implementHri. Ab%r)area Direct8D permite )e-&%ltat%ril%r s+ al%ce in)epen)ent resursele necesare cu puin mai mult ef%rt< )ar implementarea este mai simpl+ i )e-&%ltat%rii p%t al%ca resursele *n m%)ul cel mai eficient pentru aplicaia l%r. Din punctul )e &e)ere al perf%rmanei )iferena cea mai imp%rtant+ c%nst+ *n m%)ul )e gesti%nare a sc/imb+rii m%)ului )e lucru. Aceast+ )iferen+ apare )at%rit+ structurii implement+rii ard(are )e c+tre )e-&%ltat%rii ard(are. Sub DirectX implementarea este *n m%)ul -ernel< driver;e ce sunt instalate pe sistemul )e %perare. 1%)ul utili-at%r este gesti%nat )e aplicaia DirectX. Implement+rile pentru OpenGL sunt *mp+rite *n )%u+F partea m%)ului utili-at%r ce implementea-+ API;ul OpenGL i partea m%)ului -ernel ce este apelat+ )e partea m%)ului utili-at%r. 1%ti&ul pentru care acest lucru este % pr%blem+ este faptul c+ apelarea )e %peraii a m%)ului -ernel )in m%)ul utili-at%r necesit+ crearea unui apel )e sistem. Acest apel este f%arte *ncet i necesit+ micr%secun)e pentru a se e?ecuta< iar *n acest timp pr%ces%rul nu p%ate e?ecuta alte instruciuni. Din acest punct )e &e)ere % met%)+ )e %ptimi-are ar fi re)ucerea num+rului )e astfel )e apeluri )e sc/imbare )e m%). Acest lucru se p%ate reali-a prin st%carea inf%rmaiil%r )e pr%cesat *ntr;un !uffer i s+ se trimit+ la pr%ces%r un set )e c%men-i i nu numai una. Dat%rit+ faptului c+ implement+rile DirectX sunt numai *n m%)ul -ernel iar c%)ul )in m%)ul user se afl+ *n afara driver;ului< nu e?ist+ p%sibilitatea reali-+rii acestei %ptimi-+ri. Efectul acestui fapt este c+ fiecare apel Direct8D ce trimite c%men-i c+tre ard(are trebuie sa reali-e-e % sc/imbare )e m%). De%arece implementarea OpenGL c%nine i m%)ul utili-at%r< acesta p%ate reali-a %ptimi-area< iar num+rul ma?im te%retic )e apeluri )e sc/imbare )e m%) este acelai cu cel al c%mp%rtamentului stan)ar) al Direct8D;ului. E?ist+ )%ar )%u+ tipuri )e utili-+ri ale acest%r API;uriF utili-area pr%fesi%nal+ i utili-area pentru =%curi. Dat%rit+ *nceputului OpenGL care a f%st creat s+ lucre-e pe staii )e lucru< acesta este preferat )e c+tre utili-at%rii pr%fesi%niti. Acest API c%nine apr%?imati& !65 )e apeluri )ar pentru )e-&%ltarea )e =%curi mai puin )e 155 )in aceste apeluri sunt rele&ante.

'!

OPRIAN Sabina Diana

CUPRINS

Alegerea )e c+tre pr%fesi%niti a acestei platf%rme este parial+ )in m%ti&e ist%rice< )at%rit+ faptului c+ la *nceput pl+cile &i)e% pr%fesi%niste sup%rtau )%ar OpenG < acest lucru s; a sc/imbat )ar utili-at%rii au r+mas. De asemenea e?istena acel%r apeluri inutili-abile pentru )e-&%ltarea )e =%curi )ar facile *n alte c%nte?te a c%ntribuit la aceast+ alegere. Un alt fact%r a f%st m%)ul )e pre-entare< c/iar )e la *nceput DirectU s;a &rut a fi un API )e ni&el =%s< cu perf%rmane ri)icate pentru acces rapi) la /ar)3are pentru )e-&%ltarea )e =%curi< pe c@n) OpenG s;a remarcat prin aplicaii pr%fesi%niste utili-ate *n )iferite )%menii.

2.1.1. %escriere 2'L


%espre 3'L U1 P AeXtensi!le Mar-up LanguageB este un limba= )e a)n%tareJstructurare a

)atel%r. Ist%ria apari#iei sale p%rne>te )e la SG1 A$tandard Generali=ed Mar-up LanguageB ap+rut *n anii (5. Acest limba= *i pr%punea la apari#ie sa cree-e )%cumente ce p%t fi anali-ate )e c+tre ma>ini prin intr%)ucerea )e marca=e Asau tag;uriB. SG1 nu a f%st un succes a ba-a )e%arece era f%arte c%mple? i astfel crearea )e pr%grame care sa;l anali-e-e. :n anii ,5 la CERN a ap+rut 7T1 ;ul A*"per7e1t Mar-up LanguageB. acestui limba= a f%st SG1 ;ul i sc%pul sau a f%st marcarea )%cumentel%r astfel *nc@t s+ p%at+ fi transmise prin re#ea. Una )in i)eile acestui )%cument este ca br%3serele trebuie sa ign%re marca=ele i atributele pe care nu le *n#eleg. Aceasta i)ee a a&ut ca efect apari#ia unui limba= mai simplu care sa p%at+ fi parsat rapi) )e c+tre br%3ser;e. i astfel s;a )e-&%ltat 7T1 ;ul. Succesul a&ut )e 2eb a cau-at % )e-&%ltare rapi)+ a br%3ser;el%r care anali-au marca=ele 7T1 . Astfel au ap+rut % gama larg+ )e marca=e i atribute care puteau fi scrise f+r+ prea multe c%nstr@ngeri. 9r%3ser;ele au trebuit s+ tin+ c%nt )e aceste c%nstr@ngeri i au )e&enit f%arte c%mple?e. Pe )e alt+ parte s;a sesi-at utili-area 7T1 ;ului pentru a)n%tarea )%cumentel%r i % sl+biciune )e;a sa< faptul ca nu se p%t a)+uga marca=e n%i. :n acest c%nte?t *n )ecembrie 1,,$ 2'C A2%rl) 2i)e 2eb C%ns%rtiumB a lansat ca rec%man)are pr%pus+ &ersiunea 1.5 )e U1 . :n acest )%cument se afirma ca U1 este un subset al SG1 afirma ca U1 care p+strea-+ caracteristici cum ar fi p%sibilitatea cre+rii )e marca=e< este creat pentru a fi f%l%sit pentru a)n%t+ri< sc/imb )e )ate< publicare p%sibilitatea )e &ali)are< p%sibilitatea )e a fi citit i *neles )e c+tre %ameni. T%t%)at+ se )%cumente i prelucrare aut%mat+ )e c+tre clien#i Aagen#iB inteligen#i. P+str@n) un subset al ''

OPRIAN Sabina Diana

CUPRINS

SG1 *mpreun+ cu un set )e c%nstr@ngeri )%cumentele U1 &%r putea fi prelucrate f%arte rapi) )e c+tre parsere nea&@n) limitele )ate )e c%mple?itatea SG1 . H%m &e)ea care sunt ca-urile )e utili-are actuale pentru U1 )up+ ce ii &%m *n#elege sinta?a P )up+ care ii &%m *n#elege mai clar i a&anta=ele i sl+biciunile.

Sinta4a Un marca= este un te?t care )escrie sensul sau structura un%r )ate. Acest te?t este inserat *ntre semnele SVT i SWT. 1arca=ele p%t a&ea *nceput i sf@r>it ca )e e?empluF VnumeWP%pescuVJnumeW sau p%t fi &i)e Af+r+ te?t *n interi%rul marca=uluiB Vcasat%rit JW 1arca=ele sunt case;sensiti&e. a *nt@lnirea unui marca= )e tipul VnumeWP%pescuVJNU1EW parserul &a )a % er%are. Un element este t%t ceea ce se afl+ intre marca=ul )e *nceput i marca=ul )e sf@r>it. :n ca-ul )e mai sus numele elementului este SnumeT. Aceste nume trebuie sa *n)eplineasc+ c@te&a c%n)i#ii. P%t sa c%n#in+ litere< cifre >i alte caractere Nu p%t *ncepe cu cifre i cu semne )e punctua#ie Nu p%t *ncepe cu S?mlT Nu p%t c%n#ine spa#ii

Un element p%ate c%n#ine mai multe elemente. Acest lucru )etermin+ apari#ia un%r rela#ii )e ru)enie intre elemente i a un%r c%nstr@ngeri suplimentare. Cea mai imp%rtanta )intre aceste c%nstr@ngeri este aceea c+ intr;un fi>ier U1 trebuie sa e?iste un element r+)+cin+ care sa le c%n#in+ pe t%ate celelalte. O a )%ua c%nstr@ngere este ca elementele nu p%t fi *ncruci>ate. Astfel urm+t%area c%nstruc#ie este inc%recta Vtran-actieWV)ataW!556;11; 56VJtran-actieWVJ)ataW. Cu alte cu&inte marca=ele trebuie *nc/ise in&ers fa#+ )e cum sunt )esc/ise. Rela#iile )e ru)enie p%t fi p+rinte;c%pil sau frate;frate. Un e?emplu )e rela#ie p+rinte;c%pil *n ca)rul unui element este urm+t%area. Vtran-ac#ieW V)ataW!5;5$;!556VJ)ataW V%raW1'F55F55VJ%raW

'"

OPRIAN Sabina Diana

CUPRINS

VJtran-actieW :n acest e?emplu elementul Vtran-actieW este p+rinte al elementel%r V)ataW i V%raW care sunt Xfra#iT. Un element p%ate s+ c%nin+ unul sau mai multe atribute. Atributele se specifica *n ca)rul marca=ului )e *nceput al elementului i sunt )e tip nume^atributIT&al%areT. Un e?empluF Vsumam%ne)aITRONTW 1555 VJsumaW. Atributul *n acest ca- este m%ne)a iar &al%area atributului este RON. Hal%rile atributel%r se pun *nt%t)eauna intre g/ilimele. Ar mai fi )e men#i%nat ca *nt%t)eauna un )%cument U1 *ncepe cu un r@n) *n care se men#i%nea-+ &ersiunea limba=ului i c%)ificarea f%l%sit+. De e?emplul se p%ate specifica faptul c+ se f%l%se>te &ersiunea 1.5 i ca se f%l%se>te c%)ificarea ISO;((6,;!< care este c%)ificarea f%l%sit+ pentru limba r%m@n+. Respect@n) aceste simple reguli )e sinta?a &%m putea %b#ine ceea ce se nume>te un )%cument U1 bine f%rmat. Acest )%cument se &ali)ea-+ la r@n)ul lui cu a=ut%rul unui alt fi>ier *n care se )efinesc tag;urile f%l%site. Acest alt fi>ier p%ate fi )e tip DTD sau Usc/ema.

Ca"uri de utili"are
U1 ;ul este un limba= care permite structurarea i a)n%tarea )atel%r intr;un m%) li-ibil at@t )e c+tre %ameni cat i )e c+tre calculat%are. A&@n) aceste calit+i putem %arecum )e)uce un)e se p%ate f%l%si *n m%) practic i un)e este mai pu#in rec%man)at. P%ate cel mai e&i)ent ca- )e utili-are este cel al fi>ierel%r )e c%nfigurare. :n m%mentul )e fata f%arte multe aplica#ii *i p+strea-+ fi>ierele )e c%nfigurare *n U1 . 1%ti&ele sunt cele enun#ate mai sus P parsare rapi)a pentru calculat%are< u>%r )e citit )e c+tre %ameni< structura l%gic+ a )atel%r. Un alt ca- *n care se f%l%se>te U1 i *n care se pare c+ &a )e&eni un stan)ar) este cel al st%c+rii inf%rma#iil%r )in fi>iere tip %ffice. De-&%ltat%rii )e s%lu#ii %ffice %pen;s%urce au stan)ar)i-at un f%rmat numit Open D%cument. Acest f%rmat presupune sal&area %ric+rui )%cument )e tip %ffice P )%cument< f%aie )e calcul Asprea)s/eetB< pre-entare P intr;un f%rmat U1 . Inf%rma#ia este st%cata *n mai multe fi>iere care sunt ar/i&ate i astfel utili-at%rul p%ate &e)ea numai un singur fi>ier )e tip ].s?3 sau ].%)t< etc. De ce s;a ales U1 pentru un astfel )e f%rmat` Pentru ca %fer+ a&anta=ele structur+rii inf%rma#iei i mai ales pentru ca s;au )e-&%ltat )e=a f%arte multe alte limba=e i stan)ar)e pe ba-a lui. Aceste limba=e AU7T1 < SHG< US < S1I < U inC< U4%rms< 1at/1 < Dublin C%reB sunt f%l%site i ele *n acest f%rmat i )e%arece t%ate au la ba-+ U1 inter%perabilitatea este garantat+. U1 are i un )e-a&anta= care este )at )e faptul c+ intr%)uce inf%rma#ie re)un)ant+ A%&er/ea)B. Inf%rma#ia '6

OPRIAN Sabina Diana

CUPRINS

re)un)ant+ este repre-entat+ )e numele marca=el%r care se repeta *n )%cument. Aceast+ pr%blem+ a f%st re-%l&ata )e cei )e la Open Office prin ar/i&area fi>ierel%r U1 intr;% ar/i&a -ip. Astfel s;a re-%l&at pr%blema spa#iului suplimentar ap+rut prin intr%)ucerea unei mici pier)eri *n &ite-a. 1ai recent A*ncep@n) cu 1icr%s%ft Office !55$B i 1icr%s%ft a a)%ptat f%rmatul OOU1 care )up+ cum ii spune i numele este t%t ba-at pe U1 i care este *n acest m%ment *n curs )e stan)ar)i-are. Un alt ca- )e utili-are este *n st%carea efecti&a a )atel%r P mai precis ba-e )e )ate. :n m%mentul )e fata U1 p%ate fi f%l%sit cu succes pentru ba-e )e )ate mici. :n m%mentul *n care ba-ele )e )ate cresc ca )imensiune %&er/ea)ul )e&ine inacceptabil. Din cau-a spa#iului mare %cupat i a necesit+ii accesului f%arte rapi) la )ate ar/i&area fi>ierel%r U1 cu )ate nu p%ate fi % s%lu#ie i *n acest ca-. Oricum< multe interfe#e pentru ba-e )e )ate permit e?p%rtarea ba-ei )e )ate *n f%rmat U1 P at@t )efini#ia tabelel%r i a rela#iil%r intre ele cat i )atele pr%priu -ise. D%u+ e?emple )e aplica#ii care au aceasta facilitate sunt 1S Access i P7P1DA)min. Un alt e?emplu )e ca- *n care U1 ;ul nu a a&ut succes este legat t%t )e st%carea un%r cantit+i mari )e )ate i )e acces rapi) la acestea P mai precis p+strarea fi>ierel%r =urnal ale ser&erel%r. :n acest )%meniu este f%l%sit printre altele un stan)ar) numit C 4 P Common Logfile :ormat P care are a&anta=ul c+ nu intr%)uce inf%rma#ie suplimentar+. U1 fi>iere U1 st+ la ba-a mult%r te/n%l%gii i limba=e n%i. Astfel pentru pre-entare )e e?ista X$c ema< pentru transf%rmarea fi>ierel%r U1 pentru a fi repre-entate c%n#inut pe 3eb e?ista U7T1 i 21 Apentru )isp%-iti&e m%bileB< pentru )escrierea un%r e?ista X$L< pentru reali-area un%r pre-ent+ri e?ista $M#L< pentru )escrierea %biectel%r grafice e?ista $MG< pentru repre-entarea semanticii un%r )%menii e?ist+ 'D: iJsau O4L< pentru sc/imb )e inf%rma#ii intre aplica#ii e?ist+ $O&, i a>a mai )eparte< lista aceasta fiin) )eparte )e a cuprin)e t%ate te/n%l%giileJlimba=ele e?istente ba-ate pe U1 . De ce au ap+rut at@tea limba=e ba-ate pe U1 ` Pentru ca are % structur+ simpl+ i t%tu>i strict+< pentru ca este f%arte u>%r )e anali-at i f%arte u>%r )e )efinit i )e-&%ltat. #ool5uri E?ista % larg+ &arietate )e instrumente pentru e)itarea fi>ierel%r U1 . Din seria cel%r c%merciale cele mai cun%scute sunt U1 SpD i StDlusStu)i%. Ambele %fer+ &ersiuni )e StrialT pentru a &e)ea ce facilit+i %fer+.

'.

OPRIAN Sabina Diana

CUPRINS

Dat%rita simplit+#ii sinta?ei % gam+ larg+ )e e)it%are au facilit+i pentru crearea fi>ierel%r U1 < Notepad++< C%nte?t )in gama e)it%arel%r mai simple i .clipse sau Net!eans )in gama e)it%arel%r mai c%mple?e. 6abloane de proiectare a fi,ierelor 3'L 4%l%sirea >abl%ane permite crearea un%r )%cumente mai u>%r )e citit< f%l%sit i prelucrat< permite gesti%narea mai facil+ a inf%rma#iil%r %ferite. :n aceasta sec#iune &%m re-uma abl%anele cele mai imp%rtante. a. Wa!loane pentru folosirea Metadatelor (date despre date%. C@n) 7ea)09%)D P &arianta f%l%sita i *n 7T1 P )atele )espre )ate se pun intr;% sec#iune special+ a )%cumentului numit+ /ea) i )atele efecti&e se &%r plasa *n sec#iunea b%)D. 1eta;)atele se pun *naintea )atel%r *n )%cument. 1%ti&ul este )estul )e simplu i anume *n c%n)i#iile *n care pr%cesarea U1 ;ului se face sec&en#ial s;ar putea ca un pr%ces< )up+ ce interpretea-+ meta;)atele sa nu mai )%reasc+ sa prelucre-e i restul )%cumentului i implicit sa nu;l mai *ncarce sau parse-e. :n ca-ul *n care e?ist+ un mare num+r )e meta;)ate< p%ate fi util ca acestea sa fie plasate intr;un fi>ier separat. Acest lucru este rec%man)abil mai ales *n ca-ul *n care este &%rba )e meta)ate c%mune mai mult%r fi>iere. b. &!stracti=are. Cum se p%t alege i respecti& grupa elementele astfel C%ntainere P *n c%ntainere se p%t pune mai multe elemente )iferite *nc@t structura U1 ;ului f%rmat sa fie cat mai inteligibila. )ar care caracteri-ea-+ un Sp+rinteT c%mun )intr;un anumit punct )e &e)ere. De e?emplu pentru un %m putem pune intr;un c%ntainer S)ate )e i)entificareT elementele SnumeT< SprenumeT< SCNPT C%lec#ii P c@n) *n ca)rul unui element p%t ap+rea ca i c%pii mai multe elemente )e acela>i tip acestea este rec%man)abil s+ se grupe-e ca i c%pii al unui element separat. E?emplu un %m are mai mul#i c%pii ceea ce putem e?prima *n mai multe feluriF V%mW V)ate^i)entificareW_VJ)ate^i)entificareW Vc%pilWVJc%pilW '$ e?ist+ meta;)ate intr;un )%cument p%t fi f%l%site mai multe s%lu#ii pentru integrarea l%rF

OPRIAN Sabina Diana

CUPRINS

Vc%pilWVJc%pilW... .. VJ%mW Sau V%mW V)ate^i)entificareW_VJ)ate^i)entificareW Vc%piiW Vc%pilWVJc%pilW Vc%pilWVJc%pilW... VJc%piiW .. VJ%mW A )%ua &arianta presupune a)+ugarea elementului Sc%piiT care repre-int+ % c%lec#ie )e elemente )e tip Sc%pilT. c. Este bine ca elementele s+ aib+ % c%resp%n)en#+ *n ca)rul Organi=area datelor Declararea elementel%r *nainte )e a fi referite. Cu a=ut%rul atributel%r )e tip IDRE4 elemente p%t fi referite *n ca)rul alt%r elemente. Este rec%man)abil ca *nt@i sa apar+ *n )%cument elementul i ap%i referin#a At%t pentru u>urin#a pr%ces+riiB Referirea )atel%r i nu repetarea l%r. Datele p%t fi )eclarate f%l%sin)

)%meniului )escris.

)eclara#ii )e tip .ntit" sau p%t fi i)entificate *n m%) unic f%l%sin) atribute )e tip #D >i referite prin atribute )e tip #D'.:. Clasificare f%l%sin) atribute P c@n) p%t clasifica anumite elemente *n mai multe feluri se p%t intr%)uce atribute pentru a nu c%mplica ierar/ia. :n e?emplul )e mai sus elementului c%pil i se p%ate intr%)uce atributul Sse?T care practic intr%)uce % clasificare suplimentar+ f+r+ a a)+uga elemente suplimentare. d. &ltele Reutili-are atribute P )ac+ mai multe elemente au acelea>i atribute

nu trebuie )efinite atributele )e mai multe %ri.

'(

OPRIAN Sabina Diana

CUPRINS

Nume scurte )ar inteligibile P Sl%c^)e^muncaT este preferat

elementului Xser&T.

Conclu"ii
U1 ;ul este un limba= cu % sinta?+ simpl+ i care permite )%ar structurarea )atel%r intr;% manier+ pr%prie prin )efinirea pr%priil%r taguri. Aceasta facilitate )e structurare a )atel%r a permis f%l%sirea sa pentru a )e-&%lta limba=e n%i precum i pentru a fi f%l%sit *n n%i stan)ar)e )e st%care a )atel%r. Nu *n ultimul r@n) U1 ;ul p%ate fi f%l%sit pentru a sc/imba )ate intre aplica#iile care au ne&%ie )e a c%munica intr;un limba= c%mun. C/iar i *n ciu)a )e-a&anta=el%r pe care le are A%&er/ea)B calit+#ile U1 mai sus men#i%nate ii permit s+ fie f%l%sit cu succes *n multe )%menii i s+ fie piatra )e temelie pentru i mai multe )%menii. Pentru a u>ura m@nuirea aplica#iei am reali-at un sistem )e sal&are i *nc+rcare a unei st+ri c+tre i )intr;un fi>ier *n f%rmat U1 . A&anta=ele pe care le pre-int+ acest limba= au u>urat f%arte mult acest tasC. 4%rmatul fi>ierului este simplu i u>%r )e interes< at@t )e un utili-at%r cat i )e calculat%rF VOb=ectsW ... VOb=ect TDpeIaS%li)Cubea I)Ia1a NameIaCubula Selecte)Ia4alseaW VCenter UIa5a bIa1.a 8Ia5a JW VSi-e UIa!a bIa!a 8Ia!a JW VR%tati%n UIa5a bIa5a 8Ia5a JW VC%l%r UIa!"5a bIa65a 8Ia1"5a JW V9%?1in UIa;!a bIa1"a 8Ia;!a JW V9%?1a? UIa!a bIa1(a 8Ia!a JW V1%&ement UIa5a bIa5a 8Ia5a JW VResistanceAir UIa5.1a bIa5.1a 8Ia5.1a JW VResistance4l%%r UIa5.6a bIa5.6a 8Ia5.6a JW V4%rcesW ... V4%rce NameIaGra&itDa I)Ia1a PersistantIaTrueaW VDirecti%n UIa5a bIa;5.!a 8Ia5a JW VJ4%rceW ... VJ4%rcesW ',

OPRIAN Sabina Diana

CUPRINS

VJOb=ectW ... VJOb=ectsW R+)+cina )%cumentului este tag;ul VOb=ectsWVJOb=ectsW intre care se afl+ )escrierea %biectel%r )in scen+. 4iecare %biect are atributeF TDpeITS%li)CubeT< I)IT!TE )ar i c%pii care )escriu pr%priet+iF Si-e< R%tati%n< C%l%r. De asemenea c%n#ine i elementul V4%rcesWVJ4%rcesW care p%ate c%n#ine mai mul#i c%pii )e tipul V4%rceWVJ4%rceW fiecare )escriin) % f%r+ care este e?ercitata asupra %biectului p+rinte. 4%l%sin) capabilit+ile platf%rmei .Net la care am acces )at%rita utili-+rii 1anage) C00 pentru scrierea c%)ului< nu a f%st greu sa cree- clasa XML:ile7ran=action care are r%lul )e a scrie i a citi )intr;un fi>ier scena curent+ &i-ibil+. 7ea)er;ul acestei clase este urm+t%rulF using namespace SDstemE using namespace SDstemFFUmlE ref class U1 4ileTran-acti%n Y Stringc Pat/E UmlD%cumentc )%cE publicF U1 4ileTran-acti%nAStringc pat/BE arraDV%glOb=ectcWc %a)4r%mU1 Aint dlBE %glOb=ectc 9uil)Ob=ectAUmlN%)ec %BE Punctc 9uil)Pr%pertDAUmlN%)ec %< Stringc nameBE &%i) 9uil)4%rcesAUmlN%)ec %<%glOb=ectc %b=BE &%i) Sa&eT%U1 AarraDV%glOb=ectcWc %b=s<int lBE UmlN%)ec CreateOb=ectN%)eA%glOb=ectc %BE UmlN%)ec CreateInnerPr%pertDN%)eAStringc nume< Punctc pBE UmlN%)ec Create4%rcesN%)eA%glOb=ectc %BE ZE i se p%ate %bser&a imp%rturile )in .Net pentru lucru cu fi>iere i cu U1 )in namespace; urile $"stem i $"stem<<Xml. Se p%ate %bser&a c+ este % clas+ ref ceea ce *nseamn+ ca al%carea mem%riei se reali-ea-+ aut%mat i este gesti%nat+ )e gar!age collector i )eci nu este ne&%ie )e un )estruct%r. Cele mai imp%rtante met%)e ale acestei clase suntF cea )e *nc+rcare )intr;un "5

OPRIAN Sabina Diana

CUPRINS

fi>ier Load:romXML(% i cea )e sal&are intr;un fi>ier U1 $ave7oXML(%. Celelalte met%)e sunt )%ar func#ii a=ut+t%are.

2.2. %iagrama claselor

!"lO#$ect
A#stract Class

%iel&s
9%?1a?F Punct 9%c1inF Punct CenterF Punct C%l%rF Punct 4%rcesF arraDV4%rce<1Wc 4%rces engt/F int I)F unsigne) int 1%&ementF Punct 1%&ingSpee)F )%uble NameF Stringc Ob=ectsI)F unsigne) int ResistanceAirF Punct Resistance4l%%rF Punct R%tati%nF Punct Selecte)F b%%l Si-eF Punct

'et(!&s
e%glOb=ectsAB A))4%rceABF b%%l ApplD4%rcesABF &%i) Delete4%rceABF b%%t A0' %&erl%a)sB Dra3ABF &%i) GetClassTDpeABF String GetRea)ableNameABF String 7it4l%%rABF b%%l 1%&eABF &%i) %glOb=ectsAB A0! %&erl%a)sB %l!!r S!li&C)#e Class Class e4l%%rAB eS%li)CubeAB Dra3ABF &%i) Dra3ABF &%i) 4l%%rAB A01 GetClassTDpeABF %&erl%a)B String GetClassTDpeAB S%li)CubeAB A01 F String %&erl%a)B

K4ig. !.$.L

L*in&!+
Class %iel&s
Animate)F b%%l Dra3ablaF arraDV%glOb=ect<1Wc Dra3able engt/F int gra&itDF 4%rce 7eig/tF int m^/DCF 7DC 1m^/glrcF 7G RC %gl2in)%3F G 2in)%3 2i)t/F int

'et(!&s
eG 2in)%3AB A))Ob=ectABF b%%l DeleteOb=ectABF b%%l A0' %&erl%a)sB G PicCingABF &%i) G 2in)%3AB InitG ABF b%%l InitSceneABF &%i) 1%use1%&eABF &%i) 1%use2/eelABF &%i) 1DSetPi?el4%rmatABF Glint

"1

OPRIAN Sabina Diana Ren)erABF &%i) ReSi-eG SceneABF &%i) SetPerspecti&eABF &%i) S3apOpenG 9uffersABF &%i)

CUPRINS

K4ig. !.(.L

%!r,'ain
Class

%iel&s
Acti%nsF TabPage c%l%rDial%g1F C%l%rDial%g c%mp%nentsF IC%ntainerc Current4ileF Strinc Ob=ectsF TabPage OG PanelF Panel %pen4ileDial%gF Ope4ileDial%g OpenG F G 2in)%3 Pr%pertiesF TabPge sa&e4ileDial%gF Sa&e4ileDial%g Selecte)4%ceFint Selecte)Ob=ectF int splitC%ntainer1F SplitC%ntainer statusStripF StatusStrip tabC%ntr%l1F TabC%ntr%l timer1F Timer tracC9arSpee)F TracC9ar

'et(!&s
e4%rm1ainAB Clear4%rceABF &%i) ClearOb=ectABF&%i) CreatCurrent4%rcesABF arraDVString<1W CreateCurrentNamesABF arraDVString<1W 4%rm1ainAB GetC%l%rABF Punct GetDirecti%nABF Punct GetP%-ABF punct GetR%tati%nABF Punct GetSi-eABF Punct Initiali-eC%mp%nentABF &%i) Rel%a)C%mb%4%rcesABF &%i) Rel%a)C%mb%Ol)ABF &%i) SetC%l%rABF &%i) SetDirecti%nABF &%i) SetP%-ABF &%i) SetR%tABF &%i) SetSi-eABF &%i) timer1^TicCABF &%i)

K4ig. !.,.L

%!rce
Class

%iel&s
Directi%nF Punct 4%rceI)F unsigne) int I)F unsigne) int NameF Stringc PersistantF b%%l

'et(!&s
e4%rceAB 4%rceAB A0' %&erl%a)s GetRea)ablaNameABF String %perat%rIABF 4%rce

K4ig. !.15.L "!

OPRIAN Sabina Diana

CUPRINS

-'L%ile Tranzacti!n
Class

%iel&s
)%cF UmlD%cument Pat/F Stringc

'et(!&s
9uil)4%rcesABF &%i) 9uil)Ob=ectABF %glOb=ect 9uil)Pr%pertDABF Punct Create4%rcesN%)eABF UmlN%)e CreateInnerPr%pertDN%)eABF UmlN%)e CreateOb=ectN%)eABF UmlN%)e %a)4r%mU1 ABF arraDV%glOb=ect<1W Sa&eT%U1 ABF &%i) U1 4ileTran-acti%nAB

K4ig. !.11.L

P)nct
Class

%iel&s
UF )%uble bF )%uble 8F )%uble

'et(!&s
ePunctAB %perat%r;ABF Punct %perat%r0ABF Punct %perat%r0IABF Punct %perat%rIABF Punct %perat%r;IABF Punct PunctAB A0! %&erl%a)sB Safe1inusABF &%i) Scalar1ultiplierABF &%i)

K4ig. !.1!.L

2.3. 7eali"area leg turii intre (indo)s *orms i OpenGL


Crearea unei ferestre OpenG *ntr;un &ie3 14C era % c/estiune simpl+ i )irect+. O)at+ cu trecerea la 2in)%3s 4%rms acest lucru s;a c%mplicat< fiin) ne&%ie re-%l&area un%r pr%bleme. C%nceptul )e De&ice C%nte?t al ferestrei ne mai fiin) pre-ent *n 2in)%3s 4%rms. E?ist+ implement+ri )e OpenG pe 2in)%3s 4%rms< )ar acestea se ba-ea-+ *n mare parte pe D ;uri sau pe c%mp%nente Acti&eU ce c%nin apeluri 14C sau )e 2in)%3s API. De asemenea acestea presupun f%l%sirea limba=ului C[< ceea ce nu e neap+rat un lucru r+u< )ar %blig+ )e-&%ltat%rul sa rescrie *ntreaga aplicaie *n C[ i une%ri nu este a&anta=%s s+ se fac+

"'

OPRIAN Sabina Diana

CUPRINS

aceasta numai pentru a&anta=ele lucrului cu 2in)%3s 4%rms. De aceea am ales cea mai Scurat+T &ariant+ i anume f%l%sirea numai a c%)ului 1anage) C00 i al platf%rmei .Net. :n primul r@n) este ne&%ie )e % clas+ ce &a reali-a< efecti&< re)area c%nte?tului OpenG pe ecran i care &a funci%na ca % fereastr+ OpenG . Pentru a a&ea acces la p%inter; ii ferestrei *n care se &a face )esenarea trebui ca aceast+ clas+ s+ m%teneasc+ )in $"stem<<4indo(s<<:orms<<Native4indo(. ref class G 2in)%3Fpublic SDstemFF2in)%3sFF4%rmsFFNati&e2in)%3 Y pri&ateF 7DC /DCE 7G RC /glrcE int 2i)t/E int 7eig/tE publicF static G 2in)%3 c%gl2in)%3E JJt/is static JJen& fl%at astUE fl%at astbE fl%at P%sUE fl%at P%sbE fl%at 8%%mE fl%at R%tUE fl%at R%tbE b%%l Is1a?imi-e)E publicF G 2in)%3ASDstemFF2in)%3sFF4%rmsFFPanel c parent<G int i2i)t/< Glint i7eig/tBE &irtual eG 2in)%3A&%i)BE JJOG &%i) SetPerspecti&eABE &%i) InitSceneABE &%i) Ren)erAG enum m%)eBE &%i) S3apOpenG 9uffersABE G int 1DSetPi?el4%rmatA7DC /)cBE b%%l InitG ABE &%i) ReSi-eG SceneAG si-ei 3i)t/< G si-ei /eig/tBE ZE Accesul la De&ice C%nte?t se reali-ea-+ prin p%inter;ii /DC i /G CR care sunt iniiali-ai *n c%nstruct%rul claseiF m^/DC I GetDCAA72NDBparent;W7an)le.T%P%interABBE m^/glrc I 3glCreateC%nte?tAm^/DCBBE Trebuie meni%nat parametrul c%nstruct%rului care este c%ntainer;ul un)e se reali-ea-+ afiarea< acesta p%ate fiF fereastra *n sine< un ,icture)o1 sau un simplu ,anel. Se

""

OPRIAN Sabina Diana

CUPRINS

p%ate %bser&a c+ GL4indo( are parametru la c%nstruct%r un p%inter manage) $"stem<<4indo(s<<:orms<<,anelX parent. De asemenea se %bser&+ pre-ena funciei 'ender care efectuea-+ re)area c%ninutului *n fereastr+< mai e?act pe acel ,anel. 9ine*neles este ne&%ie )e un 4%rm care s+ c%nin+ t%ate elementele )e interfa+ cu utili-at%rul ce &%r fi afiate. Aceasta &a c%nine un membru )e tip GL4indo( i un ,anel pentru a putea afia c%nte?tul OpenG utili-at%rului. public ref class 4%rm1ain F public SDstemFF2in)%3sFF4%rmsFF4%rm Y publicF int Selecte)Ob=ectE int Selecte)4%rceE Stringc Current4ileE G 2in)%3 c OpenG E ... pri&ateF SDstemFF2in)%3sFF4%rmsFFPanelc OG PanelE ... 4%rm1ainA&%i)B Y Initiali-eC%mp%nentABE OpenG I gcne3 G 2in)%3At/is;WOG Panel<OG Panel; W2i)t/<OG Panel;W7eig/tBE _ Z ... Z :n c%nstruct%rul ferestrei se %bser&+ iniiali-area clasei mai sus meni%nat+ i parametrul )at< care este )e tipul ,anel.

2.!.
OpenG E glos.

Crearea unei aplicaii n OpenGL

Pentru a crea % aplica#ie OpenG &%m f%l%si *n principal " bibli%teci F gl. P bibli%tec+ e?clusi& )up+ stan)ar)ul OpenG E glu. P bibli%tec+ au?iliar+ pentru integrarea OpenG *n me)iul )e

pr%gramare >i nu numaiE glau1. P bibli%tec+ au?iliar+ pentru crearea >i testarea rapi)+ )e aplica#ii

P micr%bibli%tec+ pentru c%rec#ia unui mic bug )in bibli%tecile

OpenG )in Hisual C. Al+turi )e acestea mai a&em ne&%ie )e ' libr+riiF glu83.li!, glau1.li! i opengl83.li! ce se g+sesc *n )irect%rul I9 al Hisual C< *n plus sistemul )e %perare trebuie s+ inclu)+ neap+rat *n )irect%rul sDstem'! P %pengl'!.)ll.

"6

OPRIAN Sabina Diana

CUPRINS

H%m utili-a pentru aceste lab%rat%are Hisual C00 ..5. Pr%gramele put@n) func#i%na >i *n Misual C++ 6.; < ca )e altfel >i *n Misual $tudio Net< >i ultima &ersiune )e Misual $tudio 3;;Y. a. Ini#ial &%m lucra *n m%)ul c%ns%l+. b. H%m pr%ce)a astfelF c. Rul+m Hisual C00E ). Din 4ile alegem Ne3E e. Trecem pe primul tab 4ilesE f. Alegem >i select+m C00 s%urce fileE g. Denumim fi>ierul ????E /. Scriem pr%gramul. i. Ap+sam 4$ pentru a c%mpila pr%gramul. =. Ap+s+m bes pentru a crea un spa#iu )e lucru pentru pr%gram. C. Urm+t%rul meniu bes <sal&+m m%)ific+rileE l. Din meniul Pr%=ect P alegem Settings E m. Alegem tabul inC )in fereastra Pr%=ect Settings ce s;a )esc/isE n. a pr%=ect %pti%ns scriem libr+riile f%l%site )e OpenG P glu'!.lib< glau?.lib< %pengl'!.lib cu spa#ii *ntre ele >i f+r+ &irgul+ >i la sf@r>it ap+s+m OG. %. Rul+m pr%gramul cu 46. p. E?emplu )e pr%gramF [inclu)e Vgl%s./W f [inclu)e Vglggl./W f [inclu)e Vglgglu./W JJun singur buffer P afi>are )irect pe ecran P afi>are f [inclu)e f

Vglgglau?./W f [inclu)e Vc%ni%./W f &%i) mainAB f Y JJini#iali-are m%)ului )e afi>are P JJcul%ri )up+ stan)ar)ul RG9A au?InitDisplaD1%)eAAUU^SING E h AUU^RG9AB f JJp%-i#ia i )imensiunile ferestrei )e f au?InitP%siti%n A155<155<!65<!65B f JJiniiali-+m fereastra preci-@n) titlul acesteia f au?Init2in)%3 Aa1D first OpenG Pr%gramaB f JJ aici se scrie c%)ul OpenG pentru afi>are f JJ>tergem fereastra f%l%sin) cul%area albastru f glClearC%l%rA5.5f< 5.5f< 1.5f< 1.5fB f glClear AG ^CO OR^9U44ER^9ITB f gl4lus/AB f JJ Nu *nc/i)ei A>teapt+ ap+sarea unei taste f getc/AB f Z Obser&a#i c+ a&em % sec&en#+ )e ini#iali-are a me)iului OpenG F au?InitDisplaD1%)eAAUU^SING E h AUU^RG9ABE au?InitP%siti%nA155<155<!65<!65BE ".

OPRIAN Sabina Diana

CUPRINS

OpenG )e afi>are.

au?Init2in)%3Aa1D first OpenG Pr%gramaBE

ji % sec&en#+ )e sf@r>it care p%ate lipsi. :ntre aceste put@n) scrie instruc#iuni A&em instruc#iunea glClearC%l%rA_B care stabile>te cul%are )e >tergere a ferestrei sau a buferului a&@n) pr%t%tipulF &%i) glClearC%l%rAG clampf r%>u< G clampf &er)e< G clampf albastru<G clampf alp/aBE G clampf este un tip )e )ate numeric asem+n+t%r cu fl%at )in C.

Cul%are se specific+ prin c%mp%nen#ii ei r%>u< &er)e >i albastru< >i % c%mp%nent+ )e transparen#+ alp/a care )ac+ nu este f%l%sit+ este setat+ pe 1< a)ic+ c%mplet %pac. @.;f este intensitatea ma?im+ a c%mp%nentei ;.;f cea minim+. Obser&a#i c+ )up+ fiecare c%nstant+ numeric+ )e tip fl%at se pune litera f< pentru a se e&ita ambiguit+#ile >i *n special mesa=ele )e a&erti-are A(arningB )e la c%mpilare. Instruc#iunea glClear A_B stabile>te buferul care &a fi >ters prin cul%are specificat+ *n glClearColor< ea are pr%t%tipulF void glClear(GL!itfield mas-%S un)e masC p%ate lua &al%rileF G ^CO OR^9U44ER^9ITE G ^DEPT7^9U44ER^9ITE G ^ACCU1^9U44ER^9ITE G ^STENCI ^9U44ER^9IT.

Pentru primele aplica#ii % &%m f%l%si )%ar cu masca GLPCOLO'P)2::.'P)#7. Pentru a )esena un )reptung/i f%l%sim func#ia gl'ect cu urm+t%arele pr%t%tipuriF D!BE &%i) glRectfAG fl%at ?1< G fl%at D1< G fl%at ?!< G fl%at D!BE &%i) glRectiAG int ?1< G int D1< G int ?!< G int D!BE &%i) glRectsAG s/%rt ?1< G s/%rt D1< G s/%rt ?!< G s/%rt D!B &%i) glRect)AG )%uble ?1< G )%uble D1< G )%uble ?!< G )%uble

Se %bser&+ c+ OpenG lucrea-+ at@t cu )ate specificate prin tipuri *ntregi c@t >i prin )ate cu &irgul+. Re-ultatul &a fi )esenarea unui )reptung/i ce are c%l#ul )in st@nga sus )escris )e ?1<D1 >i cel )in )reapta =%s )escris )e ?!<D!. :n OpenG sistemul )e c%%r)%nate nu mai este ca cel )efinit *n 2in)%3s sau 9GI< a?a OD este *n)reptat+ *n sus >i nu *n =%s ca *n ca-ul acesta. A?a O- iese )in ecran< O? este )e la st@nga spre )reapta.

"$

OPRIAN Sabina Diana

CUPRINS

2...

*uncii de iniiali"are

4unc#ia au1#nitDispla"Mode reali-ea-+ ini#iali-area m%)ului grafic kf%l%sit )e OpenG < ea a&@n) pr%t%tipul au1#nitDispla"Mode(GL!itfield mas-%, un)e masC este % masc+ cu )iferite %p#iuni )e c%nfigurare P aceste %p#iuni suntF &2XP$#NGL. P imaginea se &a afi>a prin interme)iul unui singur buffer )irect legat )e ecranE &2XPDO2)L. P imaginea &a fi )esenat+ mai *nt@i *ntr;un buffer au?iliar< fiin) afi>at+ ap%i pe ecran prin interme)iul bufferului principal E &2XP'G)& P cul%are &a fi specificat+ prin cele trei c%mp%nente )e cul%are r%>u< &er)e< albastru >i % c%mp%nent+ )e transparen#+ alfaE &2XP#ND.X P cul%are &a fi specificat+ prin in)e? >i nu )irectE &2XPD.,7* P specific+ c+ bufferul )e a)@ncime f%l%sit &a fi pe '! )e bi#iE &2XPD.,7*@Z P specific+ c+ bufferul )e a)@ncime f%l%sit &a fi pe 1. )e bi#iE &2XP$7.NC#L P specific+ c+ &a fi f%l%sit un buffer >abl%nE &2XP&CC2M P specific+ c+ &a fi f%l%sit un buffer )e acumulareE &2XP&L,*& P specific+ c+ &a fi f%l%sit un buffer pentru parametrul )e transparen#+ alfa E &2XP:#X.DP883P,&L P specific+ % palet+ )e cul%are ';';! pentru fereastr+ E au1#nitDispla"Mode

:n m%) %bi>nuit &%m f%l%si aceasta func#ie astfel

(&2XPDO2)L. [ &2XP'G)&%, pentru a lucra cu )%u+ buffere< e&it@n) astfel efectul )e p@lp@ire la anima#ii sau c%mp%-i#ii c%mple?e. Grafica &a fi afi>at+ )irect pe ecran< relati& nepreten#i%s pentru *nceput. Pentru a specifica p%-i#ia ferestrei )e afi>are se &a f%l%si func#ia au1#nit,osition cu pr%t%tipul void au1#nit,osition(GLint 1, GLint ", GLsi=ei lungime, GLsi=ei KnHlime%< *n care sunt specificate c%%r)%natele c%l#ului st@nga P sus >i )imensiunile ferestrei.

2.1.

*uncii de interfa i ciclare

P@n+ acum pentru a putea &e)ea grafica )esenat+ *n fereastr+< e&it@n) *nc/i)ere ime)iat+ a ferestrei am f%l%sit func#ia getc (% )in bibli%teca conio. . Acela>i lucru se p%ate reali-a *ns+ prin f%l%sirea un%r func#ii )e ciclare. Acestea au pr%t%tipul F "(

OPRIAN Sabina Diana

CUPRINS

&%i) au?I)le4uncAAUUID EPROC Numele4uncieiBE &%i) au?1ain %%pAAUU1AINPROC Numele4uncieiBE

4unc#ia au1#dle:unc este apelat+ atunci c@n) pr%gramul a terminat )e )esenat % scen+ >i a>teapt+ alte c%men-i< % putem f%l%si f+r+ pr%bleme pentru afi>area acelea>i scene sau pentru generarea )e anima#ii. au1MainLoop este utili-at+ e?clusi&e pentru cicl+ri< %)at+ terminat ciclul< acest ciclu este reapelat< t%tul termin@n)u;se la *nc/i)erea ferestrei. Hariabila Numele:unciei este numele unei func#ii )efinit+ astfelF &%i) CA 9ACG Numele4uncieiA&%i)B f Y f JJc%)ul OpenG prin care )esenam ce&a *n m%) repetat f Z. :n pr%gram putem apela )%ar %)at+ %ri una %ri alta )in func#iile )e ciclare. Numele funciei % putem )enumi fie XDesenareT< fie X'andare$cenHT< cum anume ni se pare mai sugesti&.

",

OPRIAN Sabina Diana

CUPRINS

CAPITOLUL 3.

Instalarea i )tilizarea aplicaiei

Aceast+ aplicaie c%nst+ intr;un singur e?ecutabil i nu necesit+ nici un fel )e instalare special+. :n sc/imb pentru a putea rula acest pr%gram este ne&%ie ca user;ul s+ aib+ instalat anumite elemente eseniale. Pentru c+ a f%st scris+ utili-@n) 1anage) C00 e ne&%ie sa fie pre-ent+ ma ina &irtual+ .Net. Aceasta se g+sete *n pac/etul Microsoft .Net :rame(or- 8.6 care se g+se>te )e )esc+rcat gratis )e pe site;ul 1icr%s%ft. Este imp%rtant ca &ersiunea sa fie minim '.6 )e%arece aceasta este &ersiunea *n care a f%st scris+< iar %rice &ersiune n%u ap+rut+ pentru aceast+ main+ &irtual+ pre-int+ c%mpatibilitate *nap%i< asigur@n) c+ %rice &ersiune n%u+ p%ate rula t%ate aplicaiile scrise pentru &ersiunea prece)ent+. De asemenea pentru a &e)ea spaiul &irtual pe calculat%rul inta trebuie instalat libr+ria %pen;s%urce freeGL27. Acest lucru este mai )ificil< nea&@n) la )isp%-iie un installer< )ar urm+rin) instruciunile care &in cu libr+ria este u%r )e trecut peste acest %bstac%l. a p%rnirea aplicaiei se )isting cu uurina )%u+ -%ne )e lucru. :n partea st@ng+ se afl+ afiat+ lumea &irtual+ *ntr;un spaiu tri;)imensi%nal. Aceast+ -%n+ %cup+ $6l )in suprafaa ferestrei. 4%l%sin) m%use;ul se p%ate na&iga prin spaiul &irtual astfelF Aci%n@n) clic- dreapta se reali-ea-+ %peraiunea )e pan< mutarea Dac+ se reali-ea-+ clic- 8< cun%scut i sub numele )e clic- miJloc< spaiului )e &i-uali-are spre st@nga< )reapta< mai sus sau mai =%s. i se menine ap+sat se reali-ea-+ % r%tire a spaiului )e &i-uali-are mic@n) m%use;ul *n )ireciile c%respun-+t%are. 4%l%sin) mouse scroll se reali-ea-+ =oom+ul< permi@n) apr%pierea )e un anumit %biect sau %bser&area scenei *n ansamblu< astfel na&igarea *n lumea &irtual+ este c%mplet+< put@n)u;se reali-a % &i-uali-are a fiec+rui punct )in spaiul creat. Dac+ se aci%nea-+ clic- stRnga atunci c@n) curs%rul m%use;ului este )easupra unui %biect< se reali-ea-+ selectarea %biectului< iar )ac+ sunt mai multe %biecte unul )easupra altui< se selectea-+ )%ar cel care este mai apr%ape )e fereastra )e &i-uali-are. Pentru aceasta %peraiune e?ist+ )%u+ ab%r)+ri stan)ar)F pic-ing i ra" tracing.

65

OPRIAN Sabina Diana

CUPRINS

K4ig. '.1.L Operaiunea )e ra" tracing c%nst+ *n calcularea )ireciei unui &ect%r *n ca)rul spaiului &irtual astfel *nc@t acesta s+ repre-inte )irecia pe care utili-at%rul a inteni%nat s+ selecte-e. :n OpenG acest lucru se p%ate reali-a f%l%sin) funciile )e m%use puse la )isp%-iie )e c+tre aceste libr+rii< astfel c+ )ac+ se apelea-+ funcia )e m%use pentru planul apr%piat utili-at%rului< as%ciat trunc/iului )e pirami)+ al p%rtului )e &i-uali-are< i se reali-ea-+ un al )%ilea apel pentru planul )ep+rtat al p%rtului )e &i-uali-are< atunci se p%ate calcula )irecia &ect%rului )irect%r al seleciei. Dei aceasta ab%r)are nu e )ificil+< pre-int+ )e-a&anta=e )at%rate limit+rii calculat%rului i anume preci-ia calculel%r. Acest lucru nu pare at@t )e gra& la prima &e)ere< calculat%rul fiin) c%nsi)erat un instrument precis< *ns+ realitatea este mai )ur+ i )e aceea i % er%are )e % sutime creea-+ % er%are remarcabil+ cu %c/iul liber< ceea ce )istruge imersia *n lumea &irtual+. De aceea f%l%sirea mecanismului )e pic-ing implementat *n m%t%rul intern al OpenG ;ului este )e preferat. Acest mecanism c%nst+ *n re)area scenei pe !uffer;ul pl+cii &i)e%< *ntr;un m%) puin )iferit )@n) nume fiec+rui %biect. :n m%) n%rmal acest !uffer ar fi f%l%sit pentru crearea imaginii ce ar urma sa fie pre-entat+ utili-at%rului< )ar *n acest ca- este f%l%sit pentru reali-area un%r calcule f%arte precise. C@n) utili-at%rul aci%nea-+ m%)ul select *n l%c )e %biecte pr%priu;-ise se )esenea-+ c%ntururi i se utili-ea-+ % sti&+ )e nume pentru fiecare. Acest lucru asigur+ % preci-ie *mbun+t+it+ )e%arece< pe m+sur+ ce c%nturul este )esenat se &erific+ l%caia un)e s;a reali-at clic- iar *n pr%gram se returnea-+ % list+ )e nume cu %biectele care au f%st Sl%&iteT i )e asemenea a)@ncimea minim+ i ma?im+ la care acel specific %biect se g+sete. Dat%rit+ acest%r inf%rmaii suplimentare i preci-iei *mbun+t+ite am ales aceast+ met%)+. E?ist+ i % a treia met%)a care nu este mult )iferit+ )e prece)ent+ i f%l%sete cul%area pi?el;ului )e sub m%use ca in)icat%r al seleciei. Pentru aceast+ met%)a trebuie ca 61

OPRIAN Sabina Diana

CUPRINS

t%ate %biectele s+ aib+ cul%ri )iferite< acest lucru nu e practic pentru aplicaie i )eci se f%l%sete aceeai met%)+ )e re)are a c%ninutului *n !uffer i nu pe ecran. Dei se p%t crea multe cul%ri *ntr;% scen+ c%mple?+< f%l%sirea )e cul%ri )istincte pentru t%ate %biectele este imp%sibil. Pentru reme)ierea acestui fapt se reali-are % )i&i-are a scenei astfel *nc@t la un pas pr%cesul )e selecie s+ mic%re-e c@mpul )e &i-uali-are. :ns+ acest pr%ces este mai c%mplicat< reali-area *n mai muli pai ir%sete cicluri )e pr%ces%r i )e asemenea este mai greu )e implementat.

+anoul de propriet i
.I Ob=ects Tab

K4ig. '.!.L Acest pan%u este *mp+rit *n )%u+ grupuri )e c%ntr%ale. Primul grup este intitulat %b=ects i este f%l%sit pentru a a)+uga %biecte *n scen+ sau pentru a m%)ifica un %biect e?istent. 1ai *nt@i trebuie selectat unul )in but%anele ra)i% pentru a acti&a una )in listele *n casca)+ ce i#i permit selecia )iferitel%r pr%priet+i. Dac+ se selectea-+ crearea unui %biect n%u *n lista )in )reapta &a ap+rea %piuni pentru tipul n%ului %biect. Dup+ selectarea tipului trebuie c%mpletate t%ate c@mpurile ce se g+sesc mai =%sF 6!

OPRIAN Sabina Diana

CUPRINS

c%mpletat )iferit ce a f%st aleas+

Center P p%-iia centrului %biectului n%u creat $i=e P )imensiunea %biectului< *n funcie )e tipul %biectului trebuie R%tati%n P ung/iul )e r%taie fa+ )e fiecare a?+ )e c%%r)%nate Color P ap+sarea acestui but%n &a )esc/i)e un )ial%g )e tipul c%l%r

c/%%ser pentru a alege cul%area %biectuluiE *n )reapta but%nului se afla un pre&ie3 al cul%rii *as Mass P Aceasta c+su+ )e bifare specific+ )ac+ la %biectul n%u Name P acest c@mp nu este %bligat%riu )ar este )e preferat s+ se

creat se &a a)+uga implicit f%ra ce repre-int+ gra&itaia c%mplete-e pentru a face mai u%r c+utarea %biectului *n lista %biectel%r e?istente. Pentru a c%ntinua cu a)+ugarea %biectului trebuie aci%nat but%nul )e a)+ugare< add o!Ject. :n ca-ul *n care se selectea-+ m%)ificarea unui %biect e?istent< *n )reapta but%nului ra)i% c%respun-+t%r lista se p%pulea-+ cu numele %biectel%r e?istente la care se a)aug+ i);ul intern pentru a nu a&ea elemente )uplicate i pentru a putea i)entifica fiecare %biect *n parte. Dup+ selectarea %biectului )%rit< t%ate c@mpurile se *ncarc+ cu &al%rile aferente %biectului. Dup+ efectuarea m%)ific+ril%r )%rite f%l%sin) t%t but%nul a)) %b=ect se reali-ea-+ sal&area %biectului i m%)ificarea scenei pentru a reflecta m%)ific+rile a)use. De asemenea *n acest ca- a&em acces la but%nul )elete %b=ect pentru a terge %biectul selectat. Cel )e;al )%ilea grup este )enumit 4%rces i nu este acti&< nu se p%ate m%)ifica nici un c@mp< )ec@t )up+ selectarea unui %biect e?istent i )eci sal&at. :n ca-ul *n care a&em selectat un %biect e?istent )in scena lista )e selecie este *nc+rcat+ cu t%ate f%rele ce se aplic+ acelui %biect la m%mentul respecti&. Ime)iat )up+ aceea se afl+ c@mpuri ce )escriu % f%r+. Pentru a a)+uga % f%r+ trebuie c%mpletateF e?istente. Direction P )irecia pe care n%ua f%r+ &a aci%na #s ,ersistent P acest c/ecC b%? specific+ )ac+ f%ra &a fi luat+ *n Name P un nume pentru a face c+utarea mai facil+ *ntre f%rele

c%nsi)erare la fiecare pas sau numai ca un impuls iniial

6'

OPRIAN Sabina Diana

CUPRINS

Dup+ c%mpletarea acest%r )ate pentru sal&area i a)+ugarea la %biectul selectat a n%ii f%re trebuie aci%nat but%nul &dd :orce. Dac+ se aci%nea-+ selecia unei f%re )e=a e?istente *n c@mpurile mai sus meni%nate sunt *nc+rcate caracteristicile acelei f%re. Prin ap+sarea but%nului &dd :orce se reali-ea-+ sal&area m%)ific+ril%r. De asemenea *n acest ca- a&em acces i la but%nul )e tergere a f%rei selectate. .II Acti%ns Tab

K4ig. '.'.L ,entru a salva Kn fiNier

6"

OPRIAN Sabina Diana

CUPRINS

Dac+ nu este c%mpletat c%ntr%lul ce arat+ calea )e sal&are se apas+ but%nul )e )ro(se care )esc/i)e un )ial%g )e selectare a fiierului )%rit. Acesta filtrea-+ implicit inf%rmaiile afiate astfel *nc@t s+ fie &i-ibile )%ar fiierele )e tip U1 < )ar e?ist+ i p%sibilitatea )e a m%)ifica filtru pentru a se afia t%ate fiiereleF sa&e4ileDial%g;WDefaultE?t I a?mlaE sa&e4ileDial%g;WA))E?tensi%n I trueE sa&e4ileDial%g;W4ilter I aUml files A].?mlBh].?mlhAll files A].]Bh].]aBE De asemenea la intr%)ucerea unui nume )e fiier nu este ne&%ie intr%)ucerea i a e?tensiei< aceasta fiin) a)+ugat+ aut%mat< )ei pentru utili-at%rii ne*ncre-+t%ri< intr%)ucerea manual+ a e?tensiei nu &a m%)ifica *n nici un fel re-ultatul.

K4ig. '.".L Dup+ selectarea unui fiier c%respun-+t%r i ap+sarea but%nului Sa&e se p%ate %bser&a c%mpletarea aut%mata a c@mpului )e cale. Pentru a efectua sal&area pr%priu;-is+ trebuie sa se aci%ne-e i but%nul Sa&e t% 4ile. :n acest m%ment )ac+ fi ierul e?ista< acesta &a fi suprascris< *n ca- c%ntrar &a fi creat.

66

OPRIAN Sabina Diana

CUPRINS

:n ca-ul *n care aceast+ %peraiune a mai f%st efectuat+< pentru sal&+ri ulteri%are *n acelai fiier se p%ate f%l%si )%ar but%nul )e Sa&e t% 4ile fac@n)u;se suprascrierii inf%rmaiil%r prece)ente.

,entru a KncHrca din fiNier

:nainte )e a se putea *nc+rca )in fiier trebuie asigurat c+ *n c%ntr%lul )e cale spre fiier este intr%)us+ % cale &ali)+ spre un fiier U1 . Pentru a face acest lucru se apas+ but%nul )ro(se c%respun-+t%r %peraiunii )e *nc+rcare. a aci%narea acestuia utili-at%rului *i este pre-entat un )ial%g )e selectare a fiierului )%rit. De asemenea inf%rmaia )in acesta este filtrat+ )up+ tipul )e fiier )%rit< *n ca-ul acesta< fiierele cu e?tensia .?ml. %pen4ileDial%g;WDefaultE?t I a?mlaE %pen4ileDial%g;W4ilter I aUml files A].?mlBh].?mlhAll files A].]Bh].]aE Dup+ aci%narea but%nului Open c%ntr%lul )e cale spre fiier este m%)ificat astfel *nc@t sa c%nin+ calea c+tre fiierul n%u selectat. Pentru efectuarea *nc+rc+rii trebuie aci%nat but%nul %a) fr%m 4ile )up+ care se &a %bser&a m%)ificarea spaiului &irtual c%respun-+t%r cu inf%rmaiile c%ninute *n fiierul )in care s;a efectuat *nc+rcarea.

K4ig. '.6. L 6.

OPRIAN Sabina Diana

CUPRINS

:n partea inferi%ar+ a pan%ului se afla un grup )e but%ane ce afectea-+ scena &irtual+ i )e aceea sunt grupate sub numele )e $cene Control. 9ut%anele suntF ,la" P aci%narea acestui but%n pr%)uce efectual )e a pune *n $top P *n %rice m%ment acest but%n p%ate fi aci%nat pentru a %pri micare %biectele c%nf%rm f%rel%r ce aci%nea-+ asupra acest%ra. %biectele )in scen+< pentru a fi anali-ate mai )e apr%ape %ri pentru c+ s;a a=uns la un m%mentul )%rit i aciunea )%rit+ a f%st )e=a %bser&at+. .III Pr%perties Tab 'eset P aci%narea acestui but%n este singura m%)alitate )e a relua un e?periment i )e a se *nt%arce la scena iniial+.

K4ig. '...L Acest pan%u c%nine *n partea superi%ar+ un grup )e c%ntr%ale grupate sub )enumirea )e 'esistance. Aici se p%t re)efini )%u+ c%nstante ce aci%nea-+ asupra sceneiF

6$

OPRIAN Sabina Diana

CUPRINS

c%%r)%nate.

&ir ; f%ra )e frecare cu aerul< *nsemn@n) &al%area care se sca)e )in

f%ra care aci%nea-+ asupra fiec+rui %biect< implicit aceasta este )e 1 pe t%ate cele trei a?e )e :loor P f%ra )e frecare a suprafeei scenei< repre-ent@n) &al%area

care se sca)e )in f%rele care aci%nea-+ asupra fiec+rui %biect atunci c@n) este pe ba-a scenei< implicit aceasta are &al%area )e ' pe t%ate a?ele )e c%%r)%nate< )ei pe a?a Ob nu este necesar+. Dup+ c%mpletarea c@mpuril%r< pentru a se efectua m%)ific+rile astfel *nc@t sa se %bser&e *n scen+ trebuie aci%nat but%nul )e Up)ate. Sub acest grup se g+sete un c%ntr%l glisant pentru &ite-a )e )eplasare *n interi%rul scenei. Acesta este )e fapt fact%rul cu care t%ate f%rele ce se aplic+ *n scena sunt *nmulite pentru a %bine efectul )e *ncetinit%r< sau )e accelerat%r. Acest sli)er are un pas 5.! i p%ate lua &al%ri *ntre 5.55551 i !. 1%ti&ul pentru care nu se *ncepe )e la 5 este e&i)ent< fact%rul 5 *nsemn@n) anularea tutur%r f%rel%r< iar pentru aceasta este mai facil+ f%l%sirea but%nului St%p. Sub pan%ul )e pr%priet+i se afl+ % bar+ )e status ce are r%lul )e a pre-enta )i&erse inf%rmaii utili-at%rului. De e?emplu cel mai *n st@nga se g+sete scris statusul scenei< )ac+ este %prit+ micarea sau )ac+ m%)ul este ,la"ing. K4ig. '.$.L

Ime)iat )up+ aceast+ inf%rmaie este afiat un num+r. Acest repre-int+ &al%area multiplicat%rului )e &ite-+.

6(

OPRIAN Sabina Diana

CUPRINS

CONCLU.II
Prin )escrierea lumii *n care tr+im *ntr;un m%) rigur%s putem s+ cream cu a=ut%rul calculat%rului % lume &irtual+ care s+ ne a=ute s+ *nelegem mai bine ceea ce se petrece *n =urul n%stru. OpenGL f%l%sete pentru afiarea punctel%r un spaiu pr%iecti& pentru ca trebuie s+ re)ea pe % suprafa+ plan+ % lume tri;)imensi%nal+. D%ar )at%rit+ matematicii s;a putut reali-a aceast+ ilu-ie. Deci f%l%sin) un sup%rt matematic s;a creat % lume &irtual+ i f%l%sin) aplicaii ale matematicii *n lumea real+< )in )%meniul fi-icii< putem simula realitatea n%astr+. Acest lucru este c%mple? i )e aceea aplicaia este reali-at+ astfel *nc@t s+ fie u%r )e e?tins< separ@n) partea funi%nal+ )e cea a interfeei utili-at%rului. Principalul a&anta= este e?istena unui pr%t%tip )e %biect< acesta put@n)u;se e?tin)e pentru a simula %rice %biect f%arte u%r< )at%rit+ funci%nalit+ii incluse *n acesta. De-&%ltat%rul ce e?tin)e aceast+ clas+ nu este scutit *ns+ )e anumite calcule i )e implementare )e funci%nalit+i< *ns+ munca acestuia este *nlesnit+.

6,

OPRIAN Sabina Diana

CUPRINS

/I/LIO RA%IE
1. Ric/ar) S. 2rig/t \r.< 1ic/ael R. S3eet< OpenG Super 9ible< 2aite Gr%up Press.< !55$ !. T/e Re) 9%%C %f OpenG '. /ttpFJJ333.%pengl.%rg ". /ttpFJJ333.sgi.c%mJs%ft3areJ%pengl 6. /ttpFJJ333.cs.uta/.e)uJenar%binsJ%pengl./tml .. /ttpFJJ333.c%)epr%=ect.c%mJG9JmiscctrlJOpenG Hie32in4%rms.asp? $. Da&e Astle< Ge&in 7a3Cins 9eginning OpenG Premier Press< 9%st%n< !55" (. 4elicia I%nescu< Pr%gramarea Aplica#iil%r Grafice< e)itura PRINTEC7< 1,,, ,. 1arC Segal< Gurt ACeleD< T/e OpenG Grap/ics SDstemF A Specificati%n AHersi%n 1.6B< !55' 15. Culea Ge%rge< G+bureanu C+t+lin< Prelurare Grafic+< E)itura Alma 1ater 9ac+u< !55$ Game Pr%gramming<

.5

S-ar putea să vă placă și