




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基于OpenGL的實(shí)驗(yàn)室用滑動(dòng)變阻器的設(shè)計(jì)與實(shí)現(xiàn)摘要本文介紹了基于penGL的實(shí)驗(yàn)室用滑動(dòng)變阻器的設(shè)計(jì)與實(shí)現(xiàn)技術(shù),并介紹模板緩存在圖形設(shè)計(jì)中的應(yīng)用、滑動(dòng)變阻器的三維可視化以及通過鼠標(biāo)實(shí)現(xiàn)其縮放和挪動(dòng)等技術(shù)實(shí)現(xiàn)功能。關(guān)鍵字penGL;滑動(dòng)變阻器;仿真;紋理;模板緩存物理學(xué)是一門實(shí)驗(yàn)科學(xué),學(xué)生不僅可以從物理實(shí)驗(yàn)中獲取感性認(rèn)識(shí),加強(qiáng)探究才能和培養(yǎng)動(dòng)手技巧,而且物理實(shí)驗(yàn)在增加物理教學(xué)的興趣性方面也有著舉足輕重的作用。隨著現(xiàn)代科學(xué)技術(shù)及計(jì)算機(jī)技術(shù)的飛速開展,計(jì)算機(jī)在輔助物理實(shí)驗(yàn)教學(xué)中,如模擬實(shí)驗(yàn)過程、演示實(shí)驗(yàn)原理、進(jìn)展數(shù)據(jù)處理、實(shí)驗(yàn)控制和測量等方面都有了廣泛的應(yīng)用,這也有力地促進(jìn)了實(shí)驗(yàn)教學(xué)的改革步伐。在
2、計(jì)算機(jī)輔助物理實(shí)驗(yàn)教學(xué)中,AI課件在輔助實(shí)驗(yàn)教學(xué)中起著舉足輕重的作用。物理實(shí)驗(yàn)AI課件模擬實(shí)驗(yàn)過程、演示實(shí)驗(yàn)原理、進(jìn)展實(shí)驗(yàn)控制等的仿真程度越高,對(duì)實(shí)驗(yàn)教學(xué)的效果影響就越好。目前,老師多以Flash等工具來制作多媒體實(shí)驗(yàn)教學(xué)課件,很多情況下不能模擬實(shí)驗(yàn)過程,更加難實(shí)現(xiàn)進(jìn)展實(shí)驗(yàn)控制,如實(shí)現(xiàn)直流電路中的滑動(dòng)變阻器根據(jù)滑塊的挪動(dòng)來及時(shí)準(zhǔn)確地控制電路,實(shí)現(xiàn)直流電路的仿真控制。本文將要介紹在penGL環(huán)境下,實(shí)驗(yàn)室用滑動(dòng)變阻器的設(shè)計(jì)思路和實(shí)現(xiàn)方法。penGL是一個(gè)工業(yè)標(biāo)準(zhǔn)的三維計(jì)算機(jī)圖形軟件接口,是美國高級(jí)圖形和高性能計(jì)算機(jī)系統(tǒng)公司SGL開發(fā)的三維圖形庫。它實(shí)際上是與圖形硬件完全無關(guān)的程序設(shè)計(jì)API,獨(dú)立
3、于操作系統(tǒng),有著強(qiáng)大的圖形功能和良好的跨平臺(tái)移植才能,具有可靠性、可擴(kuò)展性強(qiáng)、伸縮性好、靈敏性強(qiáng)、易用等特點(diǎn)。penGL實(shí)現(xiàn)二維和三維的高級(jí)圖形技術(shù),在性能上表現(xiàn)得異常優(yōu)越,它包括建模、變換、顏色形式設(shè)置、光照與材質(zhì)設(shè)置、雙緩存動(dòng)畫以及更先進(jìn)的才能,如紋理映射、物體運(yùn)動(dòng)模糊等。penGL的這些才能為實(shí)現(xiàn)逼真的三維渲染效果,建立交互的三維景觀等提供了優(yōu)秀的軟件工具。3.1需求分析實(shí)驗(yàn)室用滑動(dòng)變阻器是直流電路中最常用的實(shí)驗(yàn)儀器之一。系統(tǒng)應(yīng)提供多種交互手段,用戶和系統(tǒng)的交互主要通過鼠標(biāo)和鍵盤進(jìn)展。鍵盤主要應(yīng)用在輔助鼠標(biāo)進(jìn)展多個(gè)物體的選擇,其他的交互都是用鼠標(biāo)來完成。系統(tǒng)設(shè)計(jì)中的滑動(dòng)變阻器可以根據(jù)所連
4、接在電路中的接線柱和滑塊的位置來及時(shí)準(zhǔn)確地改變電路中的電阻,同時(shí)系統(tǒng)也必須提供將滑動(dòng)變阻器連接到電路中的接口。3.2功能縮放和挪動(dòng)。主要實(shí)現(xiàn)滑動(dòng)變阻器在上下左右和對(duì)角線方向的縮放功能,可以通過鼠標(biāo)的拖動(dòng)來完成如圖1。圖1鼠標(biāo)縮放圖像滑塊挪動(dòng)。滑動(dòng)變阻器在電路中電阻的變化主要是通過滑動(dòng)滑塊來實(shí)現(xiàn)的。在正確連接的情況下,滑塊挪動(dòng)可以改變滑動(dòng)變阻器在電路中的有效電阻,從而實(shí)現(xiàn)變阻器在電路中的限流、分壓作用等。本文中的滑塊挪動(dòng)功能是通過在滑塊上綁定一個(gè)點(diǎn),這個(gè)點(diǎn)和滑塊彼此關(guān)聯(lián)來實(shí)現(xiàn)的,通過鼠標(biāo)拖動(dòng)點(diǎn)來實(shí)現(xiàn)滑塊挪動(dòng),效果如圖2所示。圖2使用鼠標(biāo)拖動(dòng)滑塊接線柱。滑動(dòng)變阻器在電路中起到保護(hù)電路、限制電路電流
5、和分擔(dān)電壓等作用,是通過使用接線柱將滑動(dòng)變阻器連接到電路中來實(shí)現(xiàn)的,所以接線柱的連接功能是必不可少的如圖3。圖3接線柱功能4.1紋理貼圖技術(shù)紋理貼圖技術(shù)又稱為紋理映射技術(shù),它是計(jì)算機(jī)圖形學(xué)中廣泛應(yīng)用的一項(xiàng)重要技術(shù)。本文選用紋理貼圖技術(shù)是出于兩方面的考慮,第一,使用penGL建模所創(chuàng)立的幾何造型不可以描繪物體的微觀細(xì)節(jié),而利用紋理圖像可以到達(dá)模擬物體外表豐富的細(xì)節(jié)的目的,在很大程度上可以進(jìn)步圖形的真實(shí)性;第二,采用紋理映射的方法,可以很好地簡化建模過程。本文中的滑動(dòng)變阻器造型,假如使用penGL直接建模時(shí)有許多的細(xì)節(jié)需要表現(xiàn),想要?jiǎng)?chuàng)立出真實(shí)感非常強(qiáng)的滑動(dòng)變阻器,需要的工作量是很大的,假設(shè)采用紋理
6、映射,只要?jiǎng)?chuàng)立簡單的模型。在這里使用penGL繪制兩個(gè)簡單的正方形模型,分別使用經(jīng)過處理的三維立體效果很好的不含滑動(dòng)變阻器滑塊的圖片和單獨(dú)的滑塊圖片貼到模型外表即可。相比擬而言,使用紋理貼圖的工作量要小很多。紋理映射Textureap是將指定的圖像數(shù)據(jù)應(yīng)用到一個(gè)幾何圖元上,使用紋理繪制的一般步驟為:導(dǎo)入紋理,將紋理貼圖到幾何圖形上。4.1.1導(dǎo)入紋理應(yīng)用紋理繪制的第一步就是要將紋理載入到內(nèi)存中,同時(shí)設(shè)置紋理圖像。下面的代碼能實(shí)現(xiàn)該功能::glGenTextures(1,_textureNaes);BITAPB;HBITAPhBp=(HBITAP):LadIage(NULL,_bpFile,IA
7、GE_BITAP,0,0,LR_LADFRFILE|LR_REATEDIBSETIN);:Getbjet(hBp,sizef(B),B);:glBindTexture(GL_TEXTURE_2D,_textureNaes);glTexIage2D(GL_TEXTURE_2D,0,GL_RGB,B.bidth,B.bHEight,0,GL_BGR_EXT,GL_UNSIGNED_BYTE,B.bBits);其中_textureNaes表示的是需要載入的紋理圖片的文件名參數(shù),可以實(shí)現(xiàn)對(duì)24位位圖文件的載入。在將紋理應(yīng)用到幾個(gè)圖形之前,還需要指定紋理時(shí)的過濾方式。4.1.2將紋理貼圖到幾何圖形上將紋
8、理貼圖到幾何圖形上的關(guān)鍵問題就是指定紋理坐標(biāo),紋理坐標(biāo)控制紋理圖像中的像素是按照什么樣的方式映射到幾何圖形上。penGL中指定紋理坐標(biāo)的函數(shù)是vidglTexrd1234sifdv(TYPErds),貼圖效果如圖4所示。圖4紋理貼圖效果4.2模板緩沖區(qū)的使用從圖4可以看到,紋理貼圖以后,滑塊上有一局部白色區(qū)域覆蓋了下一層的貼圖,使得兩個(gè)圖片不可以很好地交融在一起,通過使用penGL中的模板緩沖技術(shù)可以解決這樣的問題,就是使用一個(gè)模板圖案來渲染一個(gè)不規(guī)那么的形狀,將滑塊上的白色區(qū)域去掉。4.2.1模板緩存在現(xiàn)實(shí)世界中,模板就是一塊平的紙板或其它材料,模板緩存的用處之一,就是將繪圖范圍限制在屏幕的
9、特定區(qū)域。模板緩存用來進(jìn)展復(fù)雜的掩模(asking)操作。一個(gè)復(fù)雜的形狀可以存儲(chǔ)在模板緩存里,然后繪制子序列操作可以使用模板緩存里的內(nèi)容來決定是否更新象素。4.2.2使用模板緩存的操作方法申請(qǐng)模板緩存區(qū)為了使用penGL的模板功能,首先必須使用平臺(tái)特定的penGL設(shè)置過程懇求一個(gè)模板緩存區(qū)。在以V+.NET為根底的penGL平臺(tái)中,是在設(shè)置像素格式時(shí)在PIXELFRATDESRIPTR構(gòu)造中指定的模板緩存,并且需要指定模板緩存的位數(shù)。假如使用GLUT,在初始化顯示形式時(shí)懇求一個(gè)模板緩存區(qū),下面的代碼設(shè)置了帶模板緩存的雙緩存RGB顏色緩存區(qū):glutInitDisplayde(GL
10、UT_RGB|GLUT_DUBLE|GLUT_STENIL)。模板測試在現(xiàn)代硬件加速的penGL現(xiàn)實(shí)中,模板操作相對(duì)較為快速,但是仍然可以并且有必要使用glEnable/glDisable來及時(shí)翻開和關(guān)閉模板測試功能。翻開模板測試以后,繪圖只在那些通過了模板測試的位置進(jìn)展。在進(jìn)展模板測試之前,指定要寫入模板緩存區(qū)的去除值,通過函數(shù)gllearStenil來完成,函數(shù)原型為vidgllearStenil(Glints)。模板測試的設(shè)置可以通過下面的函數(shù)完成:vidglStenilFun(Glenufun,Glintref,Gluintask)。fun參數(shù)的值是告訴penGL如何把已
11、經(jīng)存儲(chǔ)在模板緩存中的與ref參數(shù)所指定的值進(jìn)展比擬。也可以指定一個(gè)掩碼,在進(jìn)展比擬之前,將指定的掩碼與ref值和模板緩存區(qū)中的值進(jìn)展AND操作。創(chuàng)立模板圖案在繪圖之前,要確保模板緩存區(qū)被去除,調(diào)用函數(shù)gllear()來去除緩存,函數(shù)原型為vidgllear(Glbitfieldask),在去除操作中所使用的值是由前面的函數(shù)gllearStenil(Glints)設(shè)置的。在啟用了模板測試之后,就使用glSteneFun函數(shù)的參數(shù)與存儲(chǔ)在模板緩存區(qū)內(nèi)的值進(jìn)展測試。根據(jù)測試結(jié)果,值片段或者被寫入,或者丟棄。模板緩存區(qū)本身在測試過程中也會(huì)進(jìn)展修改,進(jìn)入模板緩存區(qū)的值取決于如何調(diào)用glSt
12、enilp函數(shù):vidglStenlp(Glenufail,Glenuzfail,Glenuzpass)。函數(shù)中的參數(shù)值告訴penGL假如模板測試失敗,應(yīng)該如何修改模板緩存區(qū)的值。接下來要?jiǎng)?chuàng)立模板圖案,本文中所創(chuàng)立的模板圖案是滑塊中的白色區(qū)域,使用自定義函數(shù)vidDraveRhestat()來實(shí)現(xiàn)。實(shí)現(xiàn)代碼在本文中使用模板緩存來實(shí)現(xiàn)去除滑動(dòng)變阻器滑塊中的白色區(qū)域的實(shí)現(xiàn)代碼如下所示:glDraBuffer(GL_NNE);glEnable(GL_STENIL_TEST);gllearStenil(0 x1);glStenilFun(GL_ALAYS,0 x1,0 x1);glSte
13、nilp(GL_ZER,GL_ZER,GL_ZER);gllear(GL_STENIL_BUFFER_BIT);DraPlygn();glDraBuffer(GL_BAK);glStenilFun(GL_EQUAL,0 x0,0 x1);glStenilp(GL_KEEP,GL_KEEP,GL_KEEP);Dra(_textureNaes);glDisable(GL_STENIL_TEST);其中Dra(_textureNaes)函數(shù)是自定義,完成對(duì)紋理圖片的繪制,_textureNaes表示的是需要載入的紋理圖片的文件名參數(shù)。實(shí)現(xiàn)效果如圖5所示。實(shí)現(xiàn)代碼中的函數(shù)DraPlygn
14、()通過上面的分析可以知道,使用模板緩存是為了去除滑塊中的白色區(qū)域,而自定義函數(shù)DraPlygn()在程序中的功能是用來創(chuàng)立模板圖案,也就是在函數(shù)中繪制滑塊中白色區(qū)域以外的那局部區(qū)域,這局部是一個(gè)不規(guī)那么的多邊形。penGL中多邊形的創(chuàng)立規(guī)那么,一是所有的多邊形都必須是平面的,二是多邊性的邊必須不相交,并且多邊形必須是凹的。根據(jù)第二個(gè)規(guī)那么,函數(shù)DraPlygn()中繪制的多邊形必須是凸的,因此要把所要繪制的模板圖案分解成多個(gè)凸多邊形。繪制凸多邊形使用glBegin(GL_PLYGN)/glEnd()來完成,glBegin()與glEnd()之間用來指定所要繪制的凸多邊形的頂點(diǎn)坐標(biāo),而這些頂點(diǎn)坐標(biāo)可以通過滑塊
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 復(fù)混肥料在農(nóng)業(yè)現(xiàn)代化進(jìn)程中的角色考核試卷
- 智能交通管理系統(tǒng)的運(yùn)營與維護(hù)考核試卷
- 體育表演跨國合作案例考核試卷
- 辦公設(shè)備培訓(xùn)課程考核試卷
- 推廣會(huì)議合同范本
- 工地噴錨合同范本
- 兼職項(xiàng)目加工合同范本
- 物聯(lián)網(wǎng)技術(shù)在智能家居領(lǐng)域的合同
- 年度項(xiàng)目進(jìn)度計(jì)劃及任務(wù)分配方案書
- 智慧農(nóng)業(yè)技術(shù)服務(wù)合同
- 青少年社會(huì)支持評(píng)定量表
- kW直流充電樁的設(shè)計(jì)
- 施工圖總目錄
- 《裝配化工字組合梁鋼橋六車道3x30m通用圖》(3911-05-2021)【可編輯】
- 02S404給排水圖集標(biāo)準(zhǔn)
- 人民醫(yī)院診斷證明書
- 六年級(jí)勞動(dòng)與技術(shù)下冊(cè)《課程綱要》
- 掛牌督辦安全生產(chǎn)重大事故隱患銷號(hào)申請(qǐng)表
- 2023纖維增強(qiáng)水泥擠出成型中空墻板
- 頸源性頭痛課件
- 關(guān)于與旅游發(fā)展集團(tuán)成立合資公司的可行性研究報(bào)告
評(píng)論
0/150
提交評(píng)論