• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Qwt類庫在二維云圖繪制中的應(yīng)用

      2014-07-24 18:29:09高菲袁媛林成地黃少華
      現(xiàn)代電子技術(shù) 2014年14期

      高菲+袁媛+林成地+黃少華

      摘 要: 介紹了Qwt類庫在數(shù)值模擬軟件中的開發(fā)方法。首先簡要介紹了開發(fā)工具Qt和圖形庫Qwt,然后給出數(shù)值模擬軟件的可視化分析,最后重點(diǎn)闡述了實(shí)現(xiàn)Qwt云圖繪制功能的關(guān)鍵技術(shù)。通過Qwt在軟件中的應(yīng)用,實(shí)現(xiàn)了計(jì)算數(shù)據(jù)的可視化,并取得了良好的云圖可視化效果。基于Qwt的開發(fā)結(jié)果表明,Qwt在數(shù)值模擬軟件后處理的開發(fā)中具有很強(qiáng)的優(yōu)勢。

      關(guān)鍵詞: Qt; Qwt; 數(shù)值模擬軟件; 二維云圖

      中圖分類號: TN919?34; TP391.9 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2014)14?0100?03

      Application of Qwt in two?dimensional spectrogram drawing

      GAO Fei, YUAN Yuan, LIN Cheng?di, HUANG Shao?hua

      (Northwest Institute of Nuclear Technology, Xian 710024, China)

      Abstract: The exploitation methods of numerical simulation software based on class libraries Qwt are introduced. The deve?

      lopment tool Qt and graphic library Qwt are presented briefly. The visualization analysis about the numerical simulation software is described. The key technology to achieve the spectrogram drawing function of Qwt is elaborated. With the application of Qwt in the software, the visualization of the calculated data was realized. The development result of Qwt shows that Qwt has strong superiority in the development of numerical simulation software postprocessing.

      Keywords: Qt; Qwt; numerical simulation software; two?dimensional spectrogram

      0 引 言

      Qwt,全稱為Qt Widgets for Technical Applications,是一個面向技術(shù)領(lǐng)域的畫圖組件Qt類庫包[1],專門為開發(fā)科學(xué)領(lǐng)域方面的數(shù)值模擬軟件提供實(shí)用的GUI部件和輔助工具以及常用的二維繪圖功能,在此基礎(chǔ)上還提供了諸如刻度盤等控件類進(jìn)行開發(fā)使用。Qwt類庫基于Qt圖形庫開發(fā),因而Qwt也繼承了Qt的跨平臺特性。

      Qt圖形庫是用于桌面系統(tǒng)和嵌入式開發(fā)的跨平臺圖形界面應(yīng)用程序框架,具有良好的平臺無關(guān)性和面向?qū)ο筇匦?。它包括了直觀的應(yīng)用程序編程接口、豐富的C++類庫、用于GUI開發(fā)和國際化的集成工具,并支持JAVA和C++語言進(jìn)行開發(fā)[2]。Qt極大地豐富了圖形界面的繪制功能,在跨平臺的軟件系統(tǒng)開發(fā)中具有絕對優(yōu)勢。

      數(shù)值模擬軟件開發(fā)的目標(biāo)在于將數(shù)值計(jì)算獲得的大量數(shù)據(jù)按照其自身的物理背景進(jìn)行有機(jī)結(jié)合,用可視化的方式來展示數(shù)據(jù)所表現(xiàn)的內(nèi)容及相互關(guān)系,進(jìn)而把握物理過程的整體演進(jìn)規(guī)律。本文通過Qwt類庫和Qt圖形庫在數(shù)值模擬軟件中的開發(fā)應(yīng)用,根據(jù)讀入的數(shù)據(jù)文件實(shí)現(xiàn)了數(shù)據(jù)的二維彩色云圖分布,充分體現(xiàn)出Qwt在計(jì)算數(shù)據(jù)可視化方面的優(yōu)勢。

      1 Qwt類庫簡介

      1.1 Qt圖形庫

      Qt是挪威Trolltech公司的旗艦產(chǎn)品,作為跨平臺的應(yīng)用程序和UI框架,是開源的桌面系統(tǒng)KDE的基石[3]。它包括了跨平臺類庫、集成開發(fā)工具和跨平臺IDE,可以為程序開發(fā)者提供頂級的圖形用戶界面所需的應(yīng)用功能。

      Qt包括一系列滿足各種應(yīng)用的窗口部件集(widgets),窗口部件可以是控件,也可以是容器,在Qt的開發(fā)過程中,Qt的各類窗口都是QWidget類或其子類的實(shí)例[4]。所以編寫Qt應(yīng)用程序的主要工作就是在繼承已有的QWidget類基礎(chǔ)上擴(kuò)展自定義類,以實(shí)現(xiàn)其具體功能。圖1是QWidget的類繼承關(guān)系。

      在Qt編程中,可以通過設(shè)計(jì)器規(guī)劃子窗體的顯示位置,也可以編寫代碼通過布局管理器來進(jìn)行設(shè)置。

      圖1 QWidget的類繼承關(guān)系

      1.2 Qwt類庫

      Qwt是一個基于LGPL版權(quán)協(xié)議的開源項(xiàng)目,利用Qwt庫中的類可以快速地生成出符合要求的各種具有專業(yè)背景的統(tǒng)計(jì)圖。Qwt類庫為軟件程序開發(fā)提供了豐富的GUI組件和一組實(shí)用類,并最終以二維窗體部件的方式來輸出計(jì)算數(shù)據(jù),其可視化方式包括曲線、羅盤、旋轉(zhuǎn)體等[5]。由于Qwt繼承了Qt良好的跨平臺性,在所有使用Qt開發(fā)的圖形界面環(huán)境中都可以應(yīng)用Qwt。

      1.3 Qwt開發(fā)環(huán)境編譯

      本文所用的編譯環(huán)境為:vs2010,qt4.8.4,qwt6.0.1,操作系統(tǒng)win7。

      打開Qt命令窗口Qt4.8.4 command prompt并進(jìn)行文件解壓,在該文件目錄下存放有designer,example,src以及doc文件。Designer文件里是所有Qwt插件的源代碼,example文件里是所有Qwt所附例子的源代碼,src文件里存放Qwt源代碼,doc文件中存放Qwt的幫助文檔。

      Qwt通過qmake命令編譯所有的組件和示例。qmake讀取工程文件,工程文件包含了如何編譯特定工程的規(guī)則。工程文件是以“*.pro”結(jié)尾的。

      主要編譯的三個工程文件為:qwt.pro,designer.pro,examples.pro。

      執(zhí)行完上面的命令后,Qwt組件就編譯完成。如果在工程中使用Qwt控件的話,還需要進(jìn)一步操作。以F:\Qt\Qwt安裝在C:\Qt\4.8.4目錄下為例:

      (1) 將F:\Qt\Qwt\lib的qwtd.dll,qwt.dll拷貝到C:\Qt\4.8.4\bin目錄下;

      (2) 將F:\Qt\Qwt\lib的qwtd.lib,qwt.lib拷貝到C:\Qt\4.8.4\lib目錄下;

      (3) 將F:\Qt\Qwt\designer\plugins\designer的qwt_designer_plugin.dll,qwt_designer_plugin.lib拷貝到C:\Qt\4.8.4\plugins\designer目錄下;

      (4) 將F:\Qt\Qwt\include下的所有文件拷貝到C:\Qt\4.8.4\include目錄下。

      通過以上步驟即完成了Qwt的編譯和配置。

      2 數(shù)值模擬軟件設(shè)計(jì)實(shí)現(xiàn)

      2.1 可視化需求分析

      隨著數(shù)值模擬軟件的逐步發(fā)展,在仿真過程中計(jì)算求解的時間逐步縮短,而針對運(yùn)算結(jié)果的“可視化”問題卻日益突出[6]。為實(shí)現(xiàn)良好的“可視化”效果,眾多軟件通過建立友好的圖形用戶界面使用戶能夠直觀快速地將大量的計(jì)算數(shù)據(jù)結(jié)果整理成可視圖的形式進(jìn)行操作。

      在數(shù)值模擬軟件開發(fā)過程中,通過軟件的GUI參數(shù)界面輸入模型參數(shù)和計(jì)算參數(shù),調(diào)用數(shù)值模擬計(jì)算模塊進(jìn)行計(jì)算,獲得大量的計(jì)算數(shù)據(jù)。這些數(shù)據(jù)抽象且不直觀,通過調(diào)用Qwt類庫進(jìn)行軟件的開發(fā),可以方便地實(shí)現(xiàn)數(shù)據(jù)處理可視化。如圖2所示。

      當(dāng)用戶在本軟件的GUI界面選擇“指定高度通量分布”單選按鈕后,則在視圖區(qū)的“圖形分析”視圖中以二維云圖形式繪制“高度指示器”指定高度處路徑起點(diǎn)的模型參數(shù)。若要顯示其他高度處的模型參數(shù),用戶可對“高度指示器”進(jìn)行拖動設(shè)置不同高度,如圖3所示。

      圖2 數(shù)值模擬軟件GUI界面

      圖3 數(shù)值模擬軟件GUI界面

      2.2 云圖繪制功能

      QwtPlotItem類是所有繪圖控件的基類,可以派生出多個控件對象,如網(wǎng)格(QwtPlotGrid類)、曲線(QwtPlotCurve類)等[7],如圖4所示。本文中將用到QwtPlotSpectrogram類。

      圖4 Qwt類繼承圖

      (1) 定義光柵類

      QwtPlotSpectrogram類,頻譜圖圖元,繼承自QwtPlotRasterItem類,主要用來繪制云圖,顯示云圖中的三維數(shù)據(jù)。在繪制過程中,Qt提供了RGB顏色映射表來進(jìn)行計(jì)算數(shù)據(jù)幅度值的顏色映射[8]。本軟件的二維云圖中,縱坐標(biāo)為網(wǎng)格點(diǎn)緯度,橫坐標(biāo)為網(wǎng)格點(diǎn)經(jīng)度,顏色由中子注量率確定:

      d_spectrogram = new QwtPlotSpectrogram(); //定義一個光柵類

      (2) 數(shù)據(jù)柵格化

      為了顯示算法輸出數(shù)據(jù),首先須對計(jì)算數(shù)據(jù)進(jìn)行柵格化。QwtRasterData類定義了可以對任意類型數(shù)據(jù)進(jìn)行柵格化的接口,它的派生類根據(jù)畫布的分辨率和尺寸執(zhí)行再采樣操作,可以將矩陣數(shù)據(jù)映射到已定義好的柵格中[9]。QwtMatrixRasterData類繼承自QwtRasterData類,它主要是對矩陣類型數(shù)據(jù)進(jìn)行柵格化,由于本軟件的計(jì)算參數(shù)全部儲存在數(shù)組中,本文采用QwtMatrixRasterData類進(jìn)行數(shù)據(jù)柵格化:

      QwtMatrixRasterData::setValueMatrix(Const

      QVector& values,size_t numColumns )函數(shù)用來分配矩陣值。

      QwtPlotSpectrogram::setData(QwtRasterData * data)函數(shù)用來進(jìn)行光柵數(shù)據(jù)的設(shè)置。

      (3) 顏色映射

      QwtColorMap是一個抽象基類,用來實(shí)現(xiàn)數(shù)值到顏色的映射功能,用該類實(shí)現(xiàn)中子注射率云圖的顏色映射。QwtColorMap類有兩個派生類,其中一個是QwtLinearColorMap類。該類是根據(jù)顏色偏移量來繪制顏色映射,每一個顏色偏移量都是一個特殊位置,以這一偏移量為依據(jù)來開始過渡到下一種顏色[10]。

      QwtLinearColorMap::addColorStop( double value, const QColor & color)函數(shù)用來在0和1之間指定一個顏色偏移量。0是漸變一端的偏移量,1是另一端。

      QwtPlotSpectrogram::setColorMap(QwtColorMap * colorMap)函數(shù)用來指定圖像顏色。

      rightAxis?>setColorBarEnabled(true);

      rightAxis?>setColorMap(zInterval, new ColorMap());

      //設(shè)置右邊中子注射率顏色條

      (4) 設(shè)置顯示模式

      QwtPlotSpectrogram::setDisplayMode(QwtPlotSpectrogram::ImageMode, true); 函數(shù)用來設(shè)置顯示模式。

      (5) 添加圖元

      QwtPlot本身并不具備添加圖元的操作,一個圖元自己有權(quán)力決定被添加到哪個QwtPlot,圖元通過以下接口實(shí)現(xiàn)這項(xiàng)功能:

      void attach(QwtPlot *plot);

      圖5,圖6為Qwt控件顯示的計(jì)算數(shù)據(jù)分布云圖。

      圖5 高度為50時計(jì)算數(shù)據(jù)分布云圖

      圖6 高度為70時計(jì)算數(shù)據(jù)分布云圖

      3 結(jié) 語

      通過Qwt類庫在數(shù)值模擬軟件中的應(yīng)用,實(shí)現(xiàn)了計(jì)算數(shù)據(jù)的二維彩色云圖可視化。與其他的后處理可視化軟件相比,Qwt可以極大地簡化數(shù)值模擬軟件的開發(fā)流程,縮短軟件研發(fā)周期,減少重復(fù)勞動。充分體現(xiàn)出Qwt控件在數(shù)值模擬軟件后處理方面的優(yōu)勢。

      參考文獻(xiàn)

      [1] 楊旭光.基于QWT插件實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)圖表顯示[J].福建電腦,2012(12):158?159.

      [2] 楚穎超.基于Qt_E的嵌入式綠色鍍膜監(jiān)控系統(tǒng)GUI研究與實(shí)現(xiàn)[D]. 蘭州:蘭州交通大學(xué),2011.

      [3] 盧華偉.基于Qt/Qwt的操作監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2010,26(1):72?74.

      [4] 蔡志明.精通Qt4編程[M].北京:電子工業(yè)出版社,2011.

      [5] 邵平凡,徐霖.基于Qt 的嵌入式GUI開發(fā)的應(yīng)用研究[J].工業(yè)控制計(jì)算機(jī),2011,24(10):49?51.

      [6] 黃淵,吳磊.基于Qt面向?qū)ο蟪绦蛟O(shè)計(jì)[J].湖南農(nóng)機(jī),2011,38(5):59?61.

      [7] 劉強(qiáng),廬山鷹.Qt在光學(xué)芯片仿真軟件設(shè)計(jì)中的應(yīng)用[J].電子器件,2011(1):72?74.

      [8] [加]布蘭切尼.C++GUI Qt 3編程[M].北京:北京航空航天大學(xué)出版社,2006.

      [9] 王愛文.Linux平臺下基于Qt的電子海圖的研究與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工程大學(xué),2004.

      [10] 王靖.淺談Qt編程[J].電腦開發(fā)與應(yīng)用,2007(10):72?73.

      (5) 添加圖元

      QwtPlot本身并不具備添加圖元的操作,一個圖元自己有權(quán)力決定被添加到哪個QwtPlot,圖元通過以下接口實(shí)現(xiàn)這項(xiàng)功能:

      void attach(QwtPlot *plot);

      圖5,圖6為Qwt控件顯示的計(jì)算數(shù)據(jù)分布云圖。

      圖5 高度為50時計(jì)算數(shù)據(jù)分布云圖

      圖6 高度為70時計(jì)算數(shù)據(jù)分布云圖

      3 結(jié) 語

      通過Qwt類庫在數(shù)值模擬軟件中的應(yīng)用,實(shí)現(xiàn)了計(jì)算數(shù)據(jù)的二維彩色云圖可視化。與其他的后處理可視化軟件相比,Qwt可以極大地簡化數(shù)值模擬軟件的開發(fā)流程,縮短軟件研發(fā)周期,減少重復(fù)勞動。充分體現(xiàn)出Qwt控件在數(shù)值模擬軟件后處理方面的優(yōu)勢。

      參考文獻(xiàn)

      [1] 楊旭光.基于QWT插件實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)圖表顯示[J].福建電腦,2012(12):158?159.

      [2] 楚穎超.基于Qt_E的嵌入式綠色鍍膜監(jiān)控系統(tǒng)GUI研究與實(shí)現(xiàn)[D]. 蘭州:蘭州交通大學(xué),2011.

      [3] 盧華偉.基于Qt/Qwt的操作監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2010,26(1):72?74.

      [4] 蔡志明.精通Qt4編程[M].北京:電子工業(yè)出版社,2011.

      [5] 邵平凡,徐霖.基于Qt 的嵌入式GUI開發(fā)的應(yīng)用研究[J].工業(yè)控制計(jì)算機(jī),2011,24(10):49?51.

      [6] 黃淵,吳磊.基于Qt面向?qū)ο蟪绦蛟O(shè)計(jì)[J].湖南農(nóng)機(jī),2011,38(5):59?61.

      [7] 劉強(qiáng),廬山鷹.Qt在光學(xué)芯片仿真軟件設(shè)計(jì)中的應(yīng)用[J].電子器件,2011(1):72?74.

      [8] [加]布蘭切尼.C++GUI Qt 3編程[M].北京:北京航空航天大學(xué)出版社,2006.

      [9] 王愛文.Linux平臺下基于Qt的電子海圖的研究與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工程大學(xué),2004.

      [10] 王靖.淺談Qt編程[J].電腦開發(fā)與應(yīng)用,2007(10):72?73.

      (5) 添加圖元

      QwtPlot本身并不具備添加圖元的操作,一個圖元自己有權(quán)力決定被添加到哪個QwtPlot,圖元通過以下接口實(shí)現(xiàn)這項(xiàng)功能:

      void attach(QwtPlot *plot);

      圖5,圖6為Qwt控件顯示的計(jì)算數(shù)據(jù)分布云圖。

      圖5 高度為50時計(jì)算數(shù)據(jù)分布云圖

      圖6 高度為70時計(jì)算數(shù)據(jù)分布云圖

      3 結(jié) 語

      通過Qwt類庫在數(shù)值模擬軟件中的應(yīng)用,實(shí)現(xiàn)了計(jì)算數(shù)據(jù)的二維彩色云圖可視化。與其他的后處理可視化軟件相比,Qwt可以極大地簡化數(shù)值模擬軟件的開發(fā)流程,縮短軟件研發(fā)周期,減少重復(fù)勞動。充分體現(xiàn)出Qwt控件在數(shù)值模擬軟件后處理方面的優(yōu)勢。

      參考文獻(xiàn)

      [1] 楊旭光.基于QWT插件實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)圖表顯示[J].福建電腦,2012(12):158?159.

      [2] 楚穎超.基于Qt_E的嵌入式綠色鍍膜監(jiān)控系統(tǒng)GUI研究與實(shí)現(xiàn)[D]. 蘭州:蘭州交通大學(xué),2011.

      [3] 盧華偉.基于Qt/Qwt的操作監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2010,26(1):72?74.

      [4] 蔡志明.精通Qt4編程[M].北京:電子工業(yè)出版社,2011.

      [5] 邵平凡,徐霖.基于Qt 的嵌入式GUI開發(fā)的應(yīng)用研究[J].工業(yè)控制計(jì)算機(jī),2011,24(10):49?51.

      [6] 黃淵,吳磊.基于Qt面向?qū)ο蟪绦蛟O(shè)計(jì)[J].湖南農(nóng)機(jī),2011,38(5):59?61.

      [7] 劉強(qiáng),廬山鷹.Qt在光學(xué)芯片仿真軟件設(shè)計(jì)中的應(yīng)用[J].電子器件,2011(1):72?74.

      [8] [加]布蘭切尼.C++GUI Qt 3編程[M].北京:北京航空航天大學(xué)出版社,2006.

      [9] 王愛文.Linux平臺下基于Qt的電子海圖的研究與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工程大學(xué),2004.

      [10] 王靖.淺談Qt編程[J].電腦開發(fā)與應(yīng)用,2007(10):72?73.

      龙南县| 仁布县| 福清市| 周至县| 云南省| 浦江县| 文昌市| 南溪县| 台南市| 松溪县| 台东市| 江华| 定西市| 安陆市| 易门县| 郯城县| 西宁市| 霍林郭勒市| 高雄县| 嵩明县| 焉耆| 青浦区| 那坡县| 临沂市| 罗田县| 五原县| 吉木萨尔县| 格尔木市| 衡山县| 循化| 和田市| 沙坪坝区| 宝清县| 九江县| 大安市| 龙南县| 隆安县| 菏泽市| 邓州市| 江川县| 泸溪县|