Išplėstinė paieška
 
 
 
Pradžia>Informatika>Programavimas>Objektinė trimačio modeliavimo biblioteka
   
   
   
naudingas 0 / nenaudingas 0

Objektinė trimačio modeliavimo biblioteka

  
 
 
123456789101112131415161718192021222324252627282930
Aprašymas

Įvadas. Teorinė dalis analizė. Bibliotekos struktūra. Matematinė biblioteka. Kompiuterijos biblioteka. Pagalbinė biblioteka. Darbo įrankiai. Darbo eigos aprašymas. Problemos ir jų sprendimo būdai. Programos testavimas ir derinimas. Išvados. Priedai. Techniniai reikalavimai. Techninė užduotis.

Ištrauka

Šiais laikais interaktyvi trimatė grafika praktiškai darosi nepakeičiama informacijai vaizduoti, nes masiškai paplito grafinės plokštės-akseleratoriai, kurie leidžia pavaizduoti tokio lygio grafiką, kurią prieš keletą metų būtų galėjęs pavaizduoti tik superkompiuteris. Mano tikslas susipažinti su šiuolaikinės kompiuterinės trimatės grafikos programavimo ypatumais ir naudojantis OpenGL bibliotekomis sukurti objektinę trimačio modeliavimo klasių biblioteką, kuri būtų universali ir programiškai išplečiama. Ši biblioteka bus skirta kompiuterio sisteminio bloko vidinei sandarai atvaizduoti. Konkrečiau tai būtų motininės plokštės bei ant jos esančių komponentų, tokių kaip centrinis procesorius, grafinė plokštė, atminties mikroschemos bei standusis diskas, atvaizdavimas. Ši klasių biblioteka taip pat leis vartotojui keisti savo padėtį bei orentaciją erdvėje motininės plokštės atžvilgiu. Nebus pamirštas ir tekstūravimas: motininės plokštės bei jos komponentų įvilkimas į tekstūras bei galimybė tas tekstūras keisti.

Mano užduotis buvo parašyti trimatės grafikos kompiuterinių komponentų modeliavimo biblioteką, kuri būtų kuo universalesnė bei išplečiama. Rašant tokio tipo bibliotekas sunkiausia problema yra išanksto nuspėti kokio funkcionalumo reikės ir kaip ją ateityje gali naudoti.
Taigi teko apsiriboti reikalingiausiu minimumu – branduoliu, kuris būtų reikalingas visada. Tai yra pagrindinė klasių infrastruktūra, iš kurios paveldėjus dukterines klases su minimaliu pakeitimų kiekiu būtų gaunama veikianti programa.
Pagrindinės dvi bazinės klasės, šios bibliotekos ašis, yra RenderingComponent bei GLApplication. Pirmojoje sudėtos funkcijos bei kintamieji reikalingi bet kokiam grafiškai vaizduojamam objektui. Ši klasė yra abstrakti, tai yra, pačios jos negalima panaudoti, būtina iš jos paveldėti ir perrašyti render ir update metodus, skirtus konkretaus grafinio objekto atvaizdavimui bei animavimui. RenderingComponent klasė buvo sukurta norint atsikratyti pasikartojančio kodo, kuris butu atsiradęs Box, Motherboard, CPU, RamChip, HardDisk bei GraphicCard klasėse, nes joms visoms reikia panašių metodų bei kintamųjų. Todėl įdėjus bendrą anksčiau paminėtų klasių funkcionalumą į RenderingComponent klasę ir iš jos netisiogiai paveldėjus, sumažėjo kodo apimtis bei atsirado galimybė lengviau ištaisyti programines klaidas, nes taisyti reikia tik vienoje vietoje. Box klasės prireikė, nes kiekvieną motininės plokštės komponentą galima vaizduoti kaip gretasienį apvilktą tekstūromis su trimačiu užrašu virš gretasienių. Gretasienis piešiamas naudojant OpenGL keturkampių primityvus, tačiau OpenGL tvarkyklė juos skaido į trikampius. Motherboard klasė reikalinga motininei plokštei bei joje esantiem komponentam vaizduoti. CPU, RamChip, HardDisk ir GraphicCard klasės naudojamos atitinkamiem komponentam vaizduoti bei saugoti informaciją apie jų savybes.

Antroji bazinė klasė – GLApplication yra OpenGL programos griaučiai. Joje yra sudėtos funkcijos, leidžiančios sukurti Windows langą, inicializuoti OpenGL biblioteką, gaudyti Windows sisteminius pranešimus, klavišų paspaudimus, manipuliatoriaus pelės judesius ir jos klavišų paspaudimus. Ši klasė nėra abstrakti, todėl galima ja naudotis net iš jos nepaveldėjus, bet iš to nebus didelės naudos, nes ji sukurs tik tuščia OpenGL langą ir nusplavins jį juodai. Jos dukterinėse klasėse konstruktoriuje sukūrus reikalingus vaizduojamus objektus (irgi paveldėtus iš RenderingComponent) ir perrašius GLApplication klasės render metodą, kad šiame būtų kviečiami vaizduojamų objektų render metodai, gaunama pilnai veikianti OpenGL programa. Ši klasė padeda išvengti pasikartojančio programavimo kuriant Windows langą, inicializuojant OpenGL bibliotekas. Kiekviena Windows programa privalo turėti funkcijas apdorojančias sisteminius Windows pranešimus, perpaišančias programos langus. Visas šis kiekvienai Windows programai privalomas funkcionalumas yra GLApplication klasėje. Naudojantis šia klase programuotojas gali sutelkti dėmesį į keliamus uždavinius, o ne į tai, kaip susikurti Windows langą ar gauti įrenginio kontekstą.
Trimatės grafikos klasių biblioteka būtų neišbaigta, jei neturėtų klasės Camera leidžiančios keisti savo padetį ir orentaciją erdvėje. Jos pagalba galime judėti net 6 laisvės laipsniais: pirmyn/atgal, į kairę/dešinę, aukštyn/žemyn ir suktis aplink tris ašis.
Kartais gana sunku suvokti OpenGL kameros judėjimo greitį, padėtį ar orentaciją erdvėje. Čia į pagalbą ateina CoordGrid klasė, kuri vaizduoja trimatį koordinačių tinklelį. Ji yra gana universali, ją kuriant galima nurodyti tinklelio dydį, atstumą tarp linijų bei spalvą. Ši klasė labai praverčia įvertinant vaizduojamų objektų dydžius bei tarpusavio išsidėstymą. ...

Rašto darbo duomenys
Tinklalapyje paskelbta2007-10-10
DalykasProgramavimo diplominis darbas
KategorijaInformatika >  Programavimas
TipasDiplominiai darbai
Apimtis28 puslapiai 
Literatūros šaltiniai6
Dydis206.88 KB
Autoriuslina
Viso autoriaus darbų5 darbai
Metai2003 m
Klasė/kursas4
Mokytojas/Dėstytojasasist. G.Lūža
Švietimo institucijaŠiaulių Universitetas
FakultetasMatematikos ir informatikos fakultetas
Failo pavadinimasMicrosoft Word Objektine trimacio modeliavimo biblioteka [speros.lt].doc
 

Panašūs darbai

Komentarai

Komentuoti

 

 
[El. paštas nebus skelbiamas]

 
 
  • Diplominiai darbai
  • 28 puslapiai 
  • Šiaulių Universitetas / 4 Klasė/kursas
  • asist. G.Lūža
  • 2003 m
Ar šis darbas buvo naudingas?
Taip
Ne
0
0
Pasidalink su draugais
Pranešk apie klaidą