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


