新技藝在多維勘驗及摹擬儀表里的踐行
OpenGL和圖形顯示OpenGL是一個開放圖形庫。而更嚴(yán)格地講,OpenGL被定義為“圖形硬件的一種軟件接口”,它被設(shè)計成獨(dú)立于硬件的高效接口,可以在很多硬件平臺上實現(xiàn)。不同平臺的具體實現(xiàn)方式可能有所差異,但其接口必須符合OpenGL規(guī)范,因此代碼具有高度的可移植性。OpenGL標(biāo)準(zhǔn)組成部分包括核心庫與實用庫,共有300多個函數(shù),可以運(yùn)行在任何OpenGL的工作平臺上。
MicrosoftWindows在內(nèi)部已經(jīng)通過動態(tài)鏈接庫的形式對這兩個函數(shù)庫提供了支持,對大量應(yīng)用可以直接編程進(jìn)行。因此,本系統(tǒng)選用了OpenGL做為三維表現(xiàn)的底層開發(fā)工具。
作為圖形顯示的開發(fā)庫,OpenGL具有執(zhí)行速度快、可移植性好的優(yōu)點(diǎn)。但OpenGL只包含最基本的繪圖和渲染方式,沒有提供幾何實體圖元,在系統(tǒng)中需要封裝相應(yīng)的幾何繪圖函數(shù)、滿足測試需求的三維場景描述函數(shù)、平臺的外觀和構(gòu)建函數(shù)等等。
目前,本系統(tǒng)平臺能夠滿足測試對三維場景的需求,具有較完備的函數(shù)描述和包裝,能夠?qū)崿F(xiàn)建立幾何形體和虛擬儀器、產(chǎn)生光照效果、進(jìn)行紋理映射等各種與圖形顯示有關(guān)的功能。這些功能已經(jīng)實現(xiàn)。
三維坐標(biāo)的構(gòu)建要在三維空間中繪圖必須先建立一個三維坐標(biāo)系。OpenGL提供了投影視圖用以建立三維空間的參照系,操作者只需要關(guān)注如何在這個參照系中繪圖,將其投影到計算機(jī)屏幕的工作則由OpenGL完成。但OpenGL建立的參考系是基于一般的計算機(jī)圖形顯示,它的原點(diǎn)位于計算機(jī)屏幕中心,并以計算機(jī)屏幕為XY平面,Z軸正方向指向用戶,但實際中需要不同的。為此,系統(tǒng)建立了這兩種參考系的描述函數(shù),以便于模型建立及觀察。函數(shù)中:lengthX:X軸長度,lengthY:Y軸長度,lengthZ:Z軸長度;intervalX:X軸坐標(biāo)單位間隔,intervalY:Y軸坐標(biāo)單位間隔,intervalZ:Z軸坐標(biāo)單位間隔;colorX、colorY、colorZ:坐標(biāo)軸顏色,gridColor:網(wǎng)格顏色,gridPattern:網(wǎng)格的線型,為0時不繪制網(wǎng)格三維場分布的描述和構(gòu)建計算機(jī)屏幕是一個二維的平面,對于一維的分布,如一個探測器返回的溫度隨時間變化的情況,可以直接在屏幕上通過一個二維的曲線來描述。對于二維的分布,如在一個平面上的多個探測器返回的溫度,則一般可以通過在一個二維點(diǎn)處用高度來描述該點(diǎn)處的值,最終形成一個以該二維坐標(biāo)為底面的一個曲面來展示,此時通過將一個三維的曲面以不同視角投影到二維屏幕來展示一個三維形貌。
但對于三維場,上述的方法難以再適用。
解決三維場分布的問題可以通過引入第四維―――顏色維的方式來解決,即用三維空間中點(diǎn)的位置處的顏色來描述該點(diǎn)處的值,此時有兩種方式選擇,一是用不同顏色值來表示該點(diǎn)的值(一般按由紅到藍(lán)表示由強(qiáng)到弱),一種是用顏色的明暗強(qiáng)度來表示值的大小;當(dāng)然也可將二者結(jié)合使用。由于用不同顏色值表示不同的值需要約定,因此系統(tǒng)中主要使用的是第二種方式,即在空間中按照指定位置測試系列分布點(diǎn)的值,使用者可指定某顏色,并用顏色的明暗強(qiáng)度來表示場強(qiáng)大小。保持顏色的明暗將使用相同比例不同數(shù)值的RGB方式來表征。
例如用黃色來表示場強(qiáng)強(qiáng)弱,在A點(diǎn)處的場強(qiáng)最大,我們可以將該點(diǎn)的顏色設(shè)為(1,1,0);在B點(diǎn)處的場強(qiáng)為A點(diǎn)的90%,則B點(diǎn)的顏色設(shè)為(0.9,0.9,0),依此類推。需要注意的是RGB分量的最大值必須限制在0到1之間,所以點(diǎn)的顏色通常要?dú)w一化,即把強(qiáng)度最大的點(diǎn)顏色分量限制為1。同時,為了觀察的需要,系統(tǒng)提供了點(diǎn)、網(wǎng)格、曲面的三種面形表現(xiàn)形式,如圖1(a,b,c)。
確定三維場空間中各個點(diǎn)的位置及顏色后,需要考慮如何將各點(diǎn)聯(lián)系起來展示出整體效果。系統(tǒng)考慮的方式是取定某個坐標(biāo),即在空間中固定一個觀察平面,然后根據(jù)該平面上的二維點(diǎn)位置及顏色進(jìn)行渲染,這樣就得到場在該觀察平面上的分布情況。逐個平面觀察,即可獲得整個場的三維分布,如圖2為一個高斯場在不同z坐標(biāo)下的截圖分布。
圖2的方式適合于場點(diǎn)分布均勻的情況,對于另一些情形,我們并不需要分布均勻的場點(diǎn),這時可以在場點(diǎn)之間通過連線方式繪制。比如兩個電荷的空間電場,我們可以考慮從一個電荷引出場線:首先設(shè)置好一定步長比如1,然后選擇一個方向,從電荷中心沿該方向延伸1的距離,記錄下該處的位置及場強(qiáng),然后沿該點(diǎn)場強(qiáng)方向再延伸1的距離,并記錄位置、場強(qiáng),重復(fù)以上步驟直到超出觀察空間或場強(qiáng)已小到無需考慮,最后將記錄下的點(diǎn)連接起圖2高斯場在不同z坐標(biāo)下的截面(a)點(diǎn)(b)網(wǎng)格(c)曲面圖1不同的面形表現(xiàn)模來,這就形成了一條場線。選擇不同的初始方向并重復(fù)上述步驟即可得到空間中的電場分布。如圖3。
上述示例的場強(qiáng)度基本是用單色的亮度表達(dá),由于人眼對顏色更敏感,系統(tǒng)中還提供了用不同顏色表現(xiàn)不同強(qiáng)度,一般由―――藍(lán)―――紅表示由弱―――強(qiáng)。同時,測試獲得的點(diǎn)是離散的,不利于對整體的描述,為此系統(tǒng)對面形(平面、曲面)均提供了插值方式的面形描述。系統(tǒng)還可直接對空間進(jìn)行平面切片,直接觀察多個截圖的方式,觀察空間的場分布。圖4為一個每面8×8點(diǎn)的溫度場分布的彩色切片描述,共4個面。其中4(a)為點(diǎn)模式表示,4(b)為系統(tǒng)插值后的面分布,4(c)為一個點(diǎn)面結(jié)合的表示。
結(jié)束語通過VC和OpenGL編寫的系統(tǒng),可以良好地展示三維場的分布結(jié)構(gòu)和虛擬儀器的三維形貌,包括其不同部件運(yùn)動的形貌。相信系統(tǒng)能夠在虛擬儀器應(yīng)用和三維場分布描述等方面進(jìn)一步展現(xiàn)其特點(diǎn)和能力。
【中國糧油儀器在線】部分信息來自互聯(lián)網(wǎng),力求安全及時、準(zhǔn)確無誤,目的在于傳遞更多信息,并不代表本網(wǎng)對其觀點(diǎn)贊同或?qū)ζ湔鎸嵭载?fù)責(zé)。