Felicia Ionescu - Programarea aplicatiilor grafice

  • View
    3.893

  • Download
    11

Embed Size (px)

Text of Felicia Ionescu - Programarea aplicatiilor grafice

Felicia IonescuPROGRAMAREAAPLICAIILOR GRAFICEEditura PRINTECHBucuretiDescrierea CIP a Bibliotecii NaionaleIONESCU, FELICIA Programarea aplicaiilor grafice.Felicia Ionescu, Bucureti: PRINTECH, 1999 203 p. :il. ; cm.ISBN 973-9475-93-01.Programare004.42 Refereni tiinifici:Prof. Dr. Ing. R. Strungaru.l. Dr. Ing. O. GrigoreEditura PRINTECHSplaiul Independenei 313, Bucureti, Sector 6Tel: 092 355 664Director Editur:Ecaterina MilicConsilier Editorial:Mihaela TomaToate drepturile asupra acestei ediii aparin autorului. Reproducerea parial sau total a textului sau a ilustraiilor din aceast carte este posibil numai cu acordul scris al autorului. Cuprins1 Introducere n grafica pe calculator 11.1 Aplicaii ale graficii pe calculator 11.2 Sisteme grafice 31.3 Sisteme de referin tridimensionale 42 Modelarea obiectelor 72.1Modelarea poligonal a obiectelor 82.1.1 Reprezentarea poligoanelor 82.1.2 Reprezentarea poliedrelor 112.1.3 Implementarea modelului poligonal 132.1.4 Generarea modelului din descrierea matematic 162.1.5 Generarea modelului prin baleiere spaial 172.1.6 Generarea modelului pornind de la o mulime de puncte care aparin suprafeei de frontier a obiectului182.1.7 Redarea imaginii obiectelor poligonale 192.2 Modelarea obiectelor prin reele de petice 82.3 Modelarea prin compunerea obiectelor 212.4 Modelarea prin divizare spaial 223 Transformri geometrice 253.1Transformri geometrice n spaiu 253.1.1 Transformri geometrice primitive 253.1.2 Sistemul de coordonate omogene 283.1.3 Compunerea transformrilor geometrice 313.1.4 Transformri inverse 353.1.5 Transformarea sistemelor de referin 373.1.5.1 Rotaia fa de o ax paralel cu una din axele sistemului de referin403.1.5.2 Scalarea fa de un punct oarecare n spaiu 423.1.5.3 Rotaia fa de o dreapt oarecare n spaiu 423.1.5.4 Transformarea de modelare 443.1.6 Alte transformri geometrice n spaiu 463.2Transformri geometrice n plan 474 Sisteme de vizualizare 494.1 Transformarea de observare 514.2 Transformarea de proiecie 564.2.1 Proiecia paralel 574.2.2 Proiecia perspectiv 574.2.3 Sistemul de referin normalizat 594.3 Sistemul de vizualizare standard 664.3.1 Definirea sistemului de referin de observare 674.3.2 Definirea transformrii de normalizare 674.4 Sistemul de referin ecran 3D 724.5 Decuparea obiectelor 744.5.1 Decuparea n plan 744.5.2 Decuparea suprafeelor relativ la volumul de vizualizare 794.5.3 Eliminarea obiectelor aflate n exteriorul volumului de vizualizare824.5.4 Volumul de delimitare 834.5.5 Detecia coliziunii 845 Transformarea de rastru 855.1 Reprezentarea culorilor n sistemele grafice 865.1.1 Modelul RGB 865.1.2 Modelul HSV 885.2 Generarea segmentelor de dreapt 895.3 Generarea poligoanelor 915.4 Eliminarea suprafeelor ascunse 935.4.1 Compararea adncimilor 945.4.2 Eliminarea suprafeelor ascunse n spaiul obiect 955.4.3 Eliminarea suprafeelor ascunse n spaiul imagine: algoritmul Z-buffer965.4.4 Eliminarea suprafeelor orientate invers 995.5 Anti-aliasing 1025.6 Texturarea 1035.6.1 Aplicaia texturilor 1045.6.2 Filtrarea texturilor 1066 Biblioteca grafic OpenGL 1096.1 Dezvoltarea programelor grafice folosind utilitarul GLUT 1116.1.1 Funcii de control ale ferestrei de afiare 1116.1.2 Funcii callback 1126.1.3 Funcii de execuie 1136.1.4 Generarea obiectelor tridimensionale 1136.2 Caracteristicile biobliotecii OpenGL1146.2.1 Poarta de afiare OpenGL 1146.2.2 Bufferul de cadru 1156.2.3 Operaiile de baz OpenGL 1176.2.4 Primitive geometrice 1206.2.5 Reprezentarea culorilor n OpenGL 1236.3 Sistemul de vizualizare OpenGL1256.3.1 Sistemele de referin 1256.3.2 Transformri geometrice 1276.4 Decuparea suprafeelor i eliminarea obiectelor aflate n exteriorul volumului de vizualizare1416.4.1 Eliminarea suprafeelor ascunse 1426.4.2 Selecia suprafeelor n funcie de orientare 1426.5 Liste de display OpenGL 1436.6 Texturarea n OpenGL 1456.6.1 Definirea texturilor 1456.6.2 Filtrarea texturilor 1527 Modele de reflexie i iluminare1577.1 Consideraii teoretice asupra reflexiei luminii 1577.2 Modelul Phong de reflexie a luminii 1607.3 Modele de umbrire 1627.3.1 Modelul de umbrire constant 1627.3.2 Modelul de umbrire Gouraud 1627.3.3 Modelul de umbrire Phong 1667.4 Funciile OpenGL de calcul a iluminrii 1677.4.1 Definirea surselor de lumin 1677.4.2 Definirea proprietilor materialelor 1697.4.3 Normalele n vrfurile primitivelor geometrice 1747.4.4 Controlul poziiei i al direciei surselor de lumin 1767.4.5 Combinarea culorilor 1807.4.5.1 Transparena 1817.4.5.2 Anti-aliasing 1848 Crearea i vizualizarea scenelor virtuale 1878.1 Reprezentarea scenelor virtuale 1898.2 Limbajul VRML 1928.2.1 Construirea formelor geometrice 1958.2.2 Noduri de grupare 1968.2.3 Animaia n VRML 201Bibliografie 203PrefaDomeniile de aplicaie ale graficii pe calculator s-au extins o dat cu creterea puterii decalcul acalculatoarelori cuieftinireaadaptoarelori aacceleratoarelor grafice: realizarea interfeelor utilizator dezvoltate n numeroase programe utilitare i medii deprogramare, proiectareaasistat decalculator (CADComputer Aided Design), prezentrile grafice interactive, vizualizarea datelor tiinifice, tehnologia multimedia, realitatea virtual. n acelai timp, apariia a numeroase biblioteci, limbaje i programe utilitare (toolkits) care propun diferite modaliti de abordare a aplicaiilor graficefacei mai dificilsarcinaprogramatorului deaselectaceamai adecvat tehnic de soluionare a problemei dorite. n aceast lucrare se pune accentul pe conexiunea dintre aspectele teoretice ale graficii i implementareaprogramelordegenerareaimaginii obiectelori scenelor virtuale tridimensionale. Lucrarea se bazeaz pe materialul de cursGrafica pe Calculator, predat laanul IV, specializareaIngineriaInformaiei, seciaElectronic Aplicati IngineriaInformaiei aFacultii deElectronici Telecomunicaii. n primele capitole sunt prezentate operaiile de baz n grafica pe calculator: modelarea obiectelor tridimensionale, transformri geometrice n spaiu, sisteme de vizualizare, transformarea de rastru. n cea de-a doua parte a lucrrii se reiau toate aceste aspecte ale generrii imaginilor din perspectiva programrii, folosind biblioteca grafic OpenGL, sistemul de dezvoltare GLUT i limbajul de modelare n realitatea virtual VRML. Deasemenea, sunt prezentate aspectele avansate ale generrii imaginilor tridimensionale (anti-aliasing, umbrire, texturare), att din punct de vedere teoretic, ct i al abordrii n programare.Unul din scopuri principale ale crii este de a oferi soluii de implementare a aplicaiilor graficeprinprezentareametodelor actualei accesibilederezolvarea fiecrei etapeaprocesului degenerareaimaginilor.nacest sens, aproape toate imaginile ilustrative ale diferitelor tehnici au fost produse de autoare prin programe grafice descrise n text. Octombrie, 1999 Autoarea1Introducere n grafica pe calculator n standardul ISO (International Standardization Office) se definete grafica pe calculator (computer graphics) ca metode i tehnici de conversie a datelor ctre i delaun dispozitivgrafic(display)prin intermediulcalculatorului. nplus,se mai menioneaz c aceste metode reprezint modul cel mai puternic de comunicare ntre om i calculator. Informaia prezentat vizual este perceput de om n modul cel mai natural. Structuri complexe i relaiile ntre ele pot fi percepute ntr-un timp mai scurt, ntr-un numr mai mare i cu mai puine erori n prezentarea vizual dect n oricare alt mod de prezentare. Noiunea degrafic pe calculatoreste asimilat n cele mai multe referine din domeniu cu aceea de grafic generativ (sau sintez de imagine), avnd ca direcie de conversie i transformare a datelor aceea de a crea pe display imaginea unor obiecte a cror descriere este stocat n memoria calculatorului. 1.1Aplicaii ale graficii pe calculatorDomeniile de aplicaie ale graficii pe calculator s-au extins o dat cu creterea puterii decalcul acalculatoarelori cuieftinireaadaptoarelori aacceleratoarelor grafice. ncontinuaresunt prezentatectevadincelemai importantedomenii de aplicaie ale graficii pe calculator. Una din cele mai extinse utilizri ale graficii este n realizarea interfeelor utilizator dezvoltate n numeroase programe utilitare, medii de dezvoltare i programare, sistemedeoperare, bazededate. Intefeelegraficesunt mult mai prietenoasedect interfeeleprincomenzi datenliniade comandi permit instruirearapidautilizatorilor neexeperimentai n folosirea unor astfel de aplicaii. O alt ramur important de aplicare a graficii pe calculator o constitue proiectarea asistat de calculator (CADComputer Aided Design), folosit n electronic,mecanic,aeronautic, arhitectur, etc.Domeniul de proiectare asistat CAD a reprezentat mult vreme cea mai important aplicaieagraficii pecalculator i aprilejuit dezvoltareaanumeroase tehnici de generare i vizualizare a modelelor tridimensionale. Prezentrile grafice interactive (n administraie, tehnologie, statistic, management, planificare, comandaiconducereaproceselorindustriale) genereaz o gam variat de reprezentri sugestive ale datelor numerice. Astfel deprezentri permit analizasistemelormult mai sugestivdect datele prezentate n tabele. n tehnologiamultimedia prezentarea de imagini grafice sintetizate, texte, imagini video i sunet sunt integrate ntr-o singur aplicaie (de instruire interactiv, teleconferine, etc). Conexiuneadintregenerareadeimagini tridimensionale i prezentarea de imagini video animate reprezint cel mai important aspect al soluiei multimedia. Realitatea virtualeste tehnica prin care se obine imersiunea (total sau parial) a observatorului ntr-un mediu tridimensional generat interactiv de calculator. Realitatea Virtual a cunoscut n ultimii ani o imens dezvoltare i publicitate. n reviste, magazine, la televiziune, s-a prezentat aceast nou i fantastic tehnologie din cele mai variate puncte de vedere. Cuvntul virtual este folosit n mod obinuit n domeniul calculatoarelor pentru a desemna o entitate care simuleaz o alt entitate. De exemplu, termenul memorie virtual se refer la simularea memoriei principale prinmemoria hard-discului. Cuvntul realitateserefer la mediul perceput de omprin