• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于GPU底層渲染的海量采集數(shù)據(jù)參數(shù)曲線顯示研究?

    2021-05-25 02:54:32高偉亮李大龍
    艦船電子工程 2021年4期
    關(guān)鍵詞:投影繪制坐標(biāo)系

    夏 棟 高偉亮 李大龍 馬 玲

    (1.海軍航空大學(xué)青島校區(qū) 青島 266041)(2.佛吉亞(即墨)排氣控制技術(shù)有限公司 青島 266200)

    1 引言

    在數(shù)據(jù)分析領(lǐng)域數(shù)據(jù)曲線顯示直觀,是最常用的分析途徑[1~2]。由于采集器性能的提高[3],參數(shù)記錄數(shù)據(jù)量越來越大。以采集頻率1000Hz為例,1小時(shí)采集的數(shù)據(jù)個(gè)數(shù)將達(dá)到3,600,000個(gè)。高性能采集器的采集頻率甚至可以達(dá)到MHz甚至GHz[4],對應(yīng)采集數(shù)據(jù)量也會(huì)達(dá)到每秒幾百萬甚至更多。如此巨大的數(shù)據(jù)量采用Matlab或GDI等普通繪制軟件會(huì)出現(xiàn)程序卡滯甚至程序崩潰[5]。DirectX利用GPU通過硬件底層完成圖像渲染,不占用CPU資源,畫圖效率高[6~7]。通過DirectX完成曲線作圖能夠有效解決海量記錄數(shù)據(jù)的曲線回放問題,本文將研究利用DirectX實(shí)現(xiàn)海量記錄數(shù)據(jù)的曲線回放繪制。

    2 DirectX曲線繪制

    2.1 DirectX對象渲染過程

    DirectX采用三維渲染技術(shù),為提高渲染效率DirectX對圖形對象的渲染通過兩個(gè)處理步驟組成:

    1)坐標(biāo)轉(zhuǎn)換和光照效果(簡稱為T&L)。該步驟實(shí)現(xiàn)了三維自由空間到二維計(jì)算機(jī)屏幕坐標(biāo)的轉(zhuǎn)換,該處理過程在DirectX中稱為頂點(diǎn)轉(zhuǎn)換流水線[8],在該步驟中自由空間的頂點(diǎn)坐標(biāo)從前端送入GPU,在GPU內(nèi)部完成若干處理和操作后,經(jīng)過頂點(diǎn)坐標(biāo)轉(zhuǎn)換和光照效果處理從另一端出來。在該階段DirectX通過設(shè)定一組坐標(biāo)變換矩陣、視口及光線來控制T&L流水線處理過程;

    2)光柵處理[9]。經(jīng)過前面流水線處理的對象頂點(diǎn)在本步處理中,以點(diǎn)、線、三角形為基本圖元應(yīng)用頂點(diǎn)的顏色屬性和紋理貼圖[10],并依據(jù)渲染設(shè)置狀態(tài)決定每個(gè)顯示像素的顏色值,最后在計(jì)算機(jī)屏幕上進(jìn)行顯示。

    這兩個(gè)處理步驟均在GPU(圖形處理器)上實(shí)現(xiàn),并不占用CPU(中心處理器)資源[11]。在采集數(shù)據(jù)參數(shù)曲線繪制過程中,圖元只涉及到線,并且不用考慮紋理和光照效果。

    圖1 坐標(biāo)變換和光照渲染流水線

    2.2 DirectX的坐標(biāo)系[12]

    DirectX采用三維渲染技術(shù),而參數(shù)曲線顯示為二維作圖。為了實(shí)現(xiàn)DirectX下的二維作圖,需要進(jìn)行科學(xué)的坐標(biāo)變換與投影,因此首先要搞清楚各種坐標(biāo)系的關(guān)系。DirectX包含了若干類坐標(biāo)系以及不同類型坐標(biāo)系之間的轉(zhuǎn)換以實(shí)現(xiàn)T&L渲染操作的控制,T&L流水線中坐標(biāo)變換和坐標(biāo)系主要包括:

    1)局部坐標(biāo)系、全局坐標(biāo)系和全局變換。局部坐標(biāo)系指對象或物體描述各頂點(diǎn)位置所使用的本地的坐標(biāo),也稱為本地坐標(biāo)系。不同的渲染對象可以在三維空間中通過平移、旋轉(zhuǎn)和尺度壓縮,轉(zhuǎn)換到統(tǒng)一的坐標(biāo)系中顯示,該坐標(biāo)系稱為全局坐標(biāo)系,對應(yīng)變換過程稱為全局變換。

    2)窺探坐標(biāo)系和景觀變換。立體空間的物體在兩維空間(即計(jì)算機(jī)顯示器)顯示的原理與相機(jī)拍照的取景過程類似。以相機(jī)所在位置為參考點(diǎn)、相機(jī)窺探方向?yàn)樽鴺?biāo)軸建立的坐標(biāo)系稱為窺探坐標(biāo)系,從全局坐標(biāo)系到窺探坐標(biāo)系的變換稱為景觀變換。

    3)投影坐標(biāo)系和投影變換。對象由世界坐標(biāo)系變換到觀察坐標(biāo)系后,三維物體被投影到二維平面上,原理類似于投影到虛擬的相機(jī)底片上,該變換過程稱為投影變換。以該底片中心為坐標(biāo)原點(diǎn)建立的坐標(biāo)系稱為投影坐標(biāo)系,對應(yīng)地,對象在該坐標(biāo)系中的坐標(biāo)稱為投影坐標(biāo)。

    4)屏幕坐標(biāo)系和視區(qū)變換。計(jì)算機(jī)屏幕像素顯示的坐標(biāo)值為整數(shù)型,該坐標(biāo)稱為屏幕坐標(biāo)。而投影坐標(biāo)系的坐標(biāo)取值為浮點(diǎn)型,將投影坐標(biāo)系的浮點(diǎn)型坐標(biāo)值轉(zhuǎn)化為計(jì)算機(jī)屏幕上可顯示的整數(shù)型像素坐標(biāo)稱為視區(qū)變換。

    2.3 參數(shù)曲線繪制

    利用DirectX繪制參數(shù)曲線,本質(zhì)上是二維作圖,這可以通過將三維空間對象正交投影到兩維空間來實(shí)現(xiàn),如圖2所示。需要注意,正交投影在z軸上有一個(gè)視景范圍(znear~zfar),對象z坐標(biāo)只有在該范圍內(nèi)才能被投影到二維空間。因此在設(shè)置曲線上點(diǎn)的z坐標(biāo)時(shí),取值不能超出該范圍,否則曲線將不能顯示。另外,由于曲線繪制不涉及光照效應(yīng),為提高渲染效率,應(yīng)將光照效應(yīng)關(guān)掉。

    圖2 正交投影效果示意圖

    在DirectX中繪制曲線,可通過將數(shù)值點(diǎn)連成線來實(shí)現(xiàn),連線的繪制可通過將繪制圖元設(shè)置為線段條帶(D3DPT_LINESTRIP)實(shí)現(xiàn)。生成參數(shù)曲線點(diǎn)的坐標(biāo)取值方法如下:x坐標(biāo)為時(shí)間,即采集參數(shù)某一固定數(shù)值發(fā)生的時(shí)刻;y坐標(biāo)為采集的參數(shù)數(shù)值;z坐標(biāo)可以在(znear~zfar)內(nèi)任意取值。此時(shí)的參數(shù)曲線點(diǎn)坐標(biāo)系為局部坐標(biāo)系,參數(shù)曲線能夠在界面某區(qū)域正確顯示,還需要通過世界變換切換到世界坐標(biāo)系中。由于不同參數(shù)的采集頻率不一致,如果參數(shù)數(shù)據(jù)來自不同的采集器,起始時(shí)間也會(huì)不同。設(shè)參數(shù)的采集頻率為f0,采集器的起始時(shí)間為t0。對于參數(shù)第n點(diǎn)的x坐標(biāo)值可由下式得到。

    3 采集數(shù)據(jù)參數(shù)曲線繪制坐標(biāo)變換

    在局部坐標(biāo)系中,x軸為時(shí)間,y坐標(biāo)為某個(gè)采集參數(shù)在x時(shí)刻對應(yīng)的采集數(shù)值,這種顯示方式也是數(shù)據(jù)分析人員需要的。而在DirectX顯示坐標(biāo)系中,x軸的顯示范圍為(-1,1),y軸的顯示范圍也是(-1,1),因此需要通過世界變換將曲線從局部坐標(biāo)系變換到世界坐標(biāo)系。由于還需要顯示坐標(biāo)刻度、參數(shù)名等信息,并且同一面板需要顯示多條曲線,參數(shù)曲線顯示范圍一般不覆蓋整個(gè)顯示面板,因此從局部坐標(biāo)系到世界坐標(biāo)系的變換如圖3所示。

    圖3 參數(shù)曲線從局部坐標(biāo)系變換到世界坐標(biāo)系

    圖3中參數(shù)曲線從局部坐標(biāo)系中的真實(shí)坐標(biāo)變化到的坐標(biāo)變化到屏幕顯示的世界坐標(biāo)系,可以通過壓縮和平移兩個(gè)坐標(biāo)變換來實(shí)現(xiàn)。這兩個(gè)坐標(biāo)變換在DirectX中通過正確設(shè)置坐標(biāo)壓縮變換矩陣和坐標(biāo)平移變換矩陣實(shí)現(xiàn),并且將兩者相乘得到新矩陣,將新矩陣設(shè)置為世界矩陣,用DirectX繪制線段條帶(D3DPT_LINESTRIP)圖元就可以得到正確顯示的參數(shù)曲線。在實(shí)際操作過程中,既可以先計(jì)算壓縮變換矩陣再計(jì)算平移變換矩陣,也可以先計(jì)算平移變換矩陣再計(jì)算壓縮變換矩陣,但是需要注意不同順序求得的矩陣取值會(huì)不同。本文采用先計(jì)算壓縮矩陣后計(jì)算平移矩陣的順序。

    3.1 壓縮變換矩陣的計(jì)算

    為提高GPU計(jì)算效率,DirectX提供了強(qiáng)大的矩陣運(yùn)算庫。其中,D3DXMatrixScaling()函數(shù)實(shí)現(xiàn)了壓縮矩陣的計(jì)算。該函數(shù)有3個(gè)輸入變量和1個(gè)輸出變量,輸入變量sx、sy和sz分別為x軸、y軸和z軸上的壓縮因子,輸出變量pOut為需要計(jì)算得到的壓縮矩陣。只要計(jì)算出壓縮因子sx、sy和sz調(diào)用D3DXMatrixScaling()函數(shù)就可以得到。因?yàn)椴捎谜煌队?,z軸上的壓縮因子可以不考慮,一般設(shè)為sz=1.0,因此只需要計(jì)算出x軸和y軸上的壓縮因子sx和sy。

    以圖3中參數(shù)數(shù)據(jù)為例,在局部坐標(biāo)系中x(即參數(shù)采集時(shí)間)的取值范圍為(xmin~xmax),變換到世界坐標(biāo)系后x的取值范圍為(x'min~x'max),那么x軸壓縮因子sx可由下式得到。

    同理,在局部坐標(biāo)系中y(即參數(shù)數(shù)值)的取值范圍為(ymin~ymax),變換到世界坐標(biāo)系后y的取值范圍為(y'min~y'max),那么y軸壓縮因子sy可由下式得到。

    3.2 平移變換矩陣的計(jì)算

    壓縮變換確定了參數(shù)顯示尺度,參數(shù)顯示位置的確定則需要平移變換來實(shí)現(xiàn)。DirectX矩陣運(yùn)算庫中D3DXMatrixTranslation()實(shí)現(xiàn)了平移矩陣的運(yùn)算。該函數(shù)的3個(gè)輸入變量Δx、Δy和Δz分別為x軸、y軸和z軸的平移量,輸出變量pOut為需要計(jì)算得到的平移舉證。由于采用正交投影,z軸平移量可忽略,一般設(shè)為Δz=0.0,只需要計(jì)算x軸、y軸的平移量Δx和Δy。平移因子的計(jì)算比較復(fù)雜,x軸平移會(huì)造成同一面板中不同參數(shù)時(shí)間沒有對準(zhǔn),y軸平移錯(cuò)誤會(huì)造成參數(shù)數(shù)值顯示錯(cuò)誤。下面分別研究x軸平移量Δx和y軸平移量Δy的求解方法。

    1)x軸平移量計(jì)算

    要計(jì)算x軸平移量Δx,首先要知道顯示曲線的起始和終止時(shí)間。數(shù)據(jù)分析人員在分析數(shù)據(jù)時(shí)為了觀察細(xì)節(jié),可能會(huì)對參數(shù)曲線進(jìn)行時(shí)間尺度上的放大和縮小,即x數(shù)據(jù)的起止時(shí)間是隨著用戶選擇而變化。設(shè)用戶選擇的起始時(shí)刻為xmin,終止時(shí)刻為xmax,曲線顯示區(qū)域x軸范圍為(x'min~x'max)。x軸平移量的計(jì)算方法可由下式得到。

    2)y軸平移量計(jì)算

    y軸平移量Δy的計(jì)算方法與Δx計(jì)算時(shí)間相似。需要注意的是,數(shù)據(jù)分析人員為了對比不同參數(shù)數(shù)值,可能在同一個(gè)面板上顯示多條參數(shù)曲線,并且為方便對比分析人員可能會(huì)調(diào)整曲線的縱向位置(即顯示在y軸上的位置)。設(shè)某曲線調(diào)整y軸位置后y軸坐標(biāo)顯示范圍為(y'min~y'max),對應(yīng)參數(shù)真實(shí)值范圍為(ymin~ymax)。平移量Δy可由下式計(jì)算得到。

    4 軟件設(shè)計(jì)及顯示結(jié)果

    參數(shù)數(shù)據(jù)曲線回放軟件實(shí)現(xiàn)了以下基本功能:顯示多個(gè)參數(shù)的數(shù)值曲線,數(shù)值曲線的橫坐標(biāo)(x軸)為時(shí)間,縱坐標(biāo)(y軸)為參數(shù)不同時(shí)刻參數(shù)的取值。除此以外回放軟件還應(yīng)具備的功能有:顯示數(shù)值刻度以便于分析人員觀察參數(shù)數(shù)值;根據(jù)分析人員設(shè)置的起止時(shí)間顯示一段時(shí)間內(nèi)的參數(shù)曲線值;準(zhǔn)確顯示固定時(shí)刻參數(shù)數(shù)值。根據(jù)需要實(shí)現(xiàn)的功能軟件界面設(shè)計(jì)如圖4所示。界面組成包括功能區(qū)、曲線顯示區(qū)和浮動(dòng)的數(shù)值面板,曲線顯示區(qū)又由刻度軸顯示區(qū)和曲線繪制區(qū)組成。

    圖4 參數(shù)曲線回放界面

    功能區(qū)由命令按鈕組成,分析人員通過命令按鈕執(zhí)行參數(shù)顯示屬性的設(shè)置,如放大、設(shè)置參數(shù)時(shí)間起始點(diǎn)、重繪等功能。曲線繪制區(qū)顯示多條參數(shù)曲線,刻度軸區(qū)域在參數(shù)曲線對應(yīng)的y軸位置顯示刻度信息。數(shù)值面板將選定時(shí)刻參數(shù)的準(zhǔn)確數(shù)值顯示在列表中。

    根據(jù)前述DirectX操作和軟件設(shè)計(jì)需求進(jìn)行軟件開發(fā)。以參數(shù)采集頻率1MHz為例,采集時(shí)間持續(xù)1h。參數(shù)曲線回放運(yùn)行結(jié)果如圖5所示。根據(jù)運(yùn)行結(jié)果,采用DirectX坐標(biāo)變換渲染可以實(shí)現(xiàn)采集數(shù)據(jù)曲線準(zhǔn)確回放,對多個(gè)參數(shù)的多條曲線進(jìn)行回放時(shí),程序流暢,顯示平滑,渲染效果遠(yuǎn)好于GDI效果。

    圖5 參數(shù)曲線回放程序運(yùn)行結(jié)果

    5 結(jié)語

    隨著計(jì)算機(jī)技術(shù)的進(jìn)步與發(fā)展,數(shù)據(jù)采集設(shè)備的帶寬越來越高,對應(yīng)產(chǎn)生的采集數(shù)據(jù)數(shù)量巨大,使得采集數(shù)據(jù)的回放和分析變得困難,普通的GDI不能正?;胤湃绱舜罅康臄?shù)據(jù)。DirectX采用GPU實(shí)現(xiàn)硬件底層渲染,不占用計(jì)算機(jī)的CPU資源。DirectX通過正確的投影設(shè)置、坐標(biāo)縮放/平移變換和合理的渲染圖元設(shè)置,能夠?qū)?shù)巨量數(shù)據(jù)進(jìn)行曲線回放。運(yùn)行結(jié)果表明,利用DirectX實(shí)現(xiàn)參數(shù)數(shù)據(jù)曲線回放,程序運(yùn)行流程,曲線顯示平滑,可以滿足數(shù)據(jù)分析的要求。

    猜你喜歡
    投影繪制坐標(biāo)系
    Art on coffee cups
    解變分不等式的一種二次投影算法
    基于最大相關(guān)熵的簇稀疏仿射投影算法
    找投影
    找投影
    放學(xué)后
    童話世界(2018年17期)2018-07-30 01:52:02
    解密坐標(biāo)系中的平移變換
    坐標(biāo)系背后的故事
    基于重心坐標(biāo)系的平面幾何證明的探討
    在轉(zhuǎn)變中繪制新藍(lán)圖
    宿州市| 宜城市| 常熟市| 鹿邑县| 合肥市| 汉川市| 抚顺市| 铁岭县| 治多县| 页游| 海晏县| 任丘市| 和林格尔县| 京山县| 太仆寺旗| 长春市| 台安县| 兴义市| 沐川县| 凤山县| 乌苏市| 邻水| 平和县| 清河县| 宜兰市| 攀枝花市| 新邵县| 长顺县| 莱西市| 永年县| 麟游县| 通城县| 贵德县| 鹤山市| 浠水县| 绥德县| 温宿县| 汉源县| 江阴市| 家居| 宜丰县|