亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于VC++的二維繪圖程序設(shè)計

        2019-09-21 01:14:42張亞寧劉春光吳詩帆
        科技與創(chuàng)新 2019年17期
        關(guān)鍵詞:坐標(biāo)軸刻度繪圖

        張亞寧,劉春光,吳詩帆

        基于VC++的二維繪圖程序設(shè)計

        張亞寧,劉春光,吳詩帆

        (91550部隊,遼寧 大連 116023)

        對工程數(shù)據(jù)進行繪圖是數(shù)據(jù)分析中的一項重要內(nèi)容,基于VC++開發(fā)環(huán)境從數(shù)據(jù)讀取、選定坐標(biāo)范圍、繪制數(shù)據(jù)曲線等方面對二維數(shù)據(jù)繪圖程序設(shè)計流程進行了詳細描述,通過繪圖實驗驗證了程序的正確性和科學(xué)性,具有一定的工程意義。

        VC++;二維數(shù)據(jù);測量設(shè)備;繪圖軟件

        1 緒論

        在工程實踐中,對測量設(shè)備或傳感器采集的數(shù)據(jù)進行實時顯示、事后分析等工作較為普遍[1]。通過計算機繪制出的數(shù)據(jù)曲線走勢對數(shù)據(jù)分析具有重要的意義。當(dāng)前使用較廣泛的繪圖軟件有AutoCAD、Solidworks、MATLAB、OriginPro等,經(jīng)過多年的發(fā)展,以上繪圖軟件的功能較完善。在實際工程中,有時需要對數(shù)據(jù)進行較快速度的處理,或者需要與計算機硬件接口進行信息互換,此時,利用上述繪圖軟件處理不方便。Visual Studio C++是Microsoft公司推出的一款基于Windows平臺、可視化的集成開發(fā)環(huán)境,在其平臺下開發(fā)的程序具有效率高、占用內(nèi)存低、與硬件接口銜接方便等特點[2-4]?;诖?,本文利用VC++平臺開發(fā)了二維數(shù)據(jù)繪圖程序,并進行了數(shù)據(jù)繪圖實驗,實驗證明了程序的可行性和科學(xué)性,具有一定的工程意義。

        2 程序?qū)崿F(xiàn)

        程序設(shè)計主要分為4部分,分別是:①獲取數(shù)據(jù);②選定坐標(biāo)范圍;③繪制坐標(biāo)刻度及標(biāo)注;④繪制數(shù)據(jù)曲線。程序各模塊代碼的實現(xiàn)如下。

        2.1 獲取數(shù)據(jù)

        獲取數(shù)據(jù)是程序處理的源頭,在工程中數(shù)據(jù)獲取分為實時獲取和事后獲取。實時獲取主要從計算機硬件接口獲取,而事后獲取可以從文本、表格等文件中獲取。本文以從TXT文本文件獲取數(shù)據(jù)為例進行程序設(shè)計:

        因不同文件數(shù)據(jù)的行數(shù)列數(shù)一般不同,所以在定義數(shù)據(jù)存儲數(shù)組前,需要先編寫程序獲取數(shù)據(jù)的行數(shù)和列數(shù)。同時,因為數(shù)組的維數(shù)一般用常量來定義,本程序選擇動態(tài)分配空間的方式定義存儲數(shù)據(jù)數(shù)組[*]。數(shù)據(jù)獲取之后,通過循環(huán)語句按照行或列拆分數(shù)組,具體如下:

        2.2 確定坐標(biāo)范圍

        科學(xué)、合理地選擇坐標(biāo)范圍具有重要的意義,數(shù)據(jù)范圍過大或過小都將導(dǎo)致看圖不便。本文根據(jù)數(shù)據(jù)(數(shù)據(jù)同理)的最大、最小值確定坐標(biāo)范圍,以數(shù)據(jù)為例程序處理如下:

        x_max=max_double(x,N);//計算x的最大值x_max

        x_min=min_double(x,N);//計算x的最小值x_min

        x_abs_max=abs_max_double(x_max,x_min);//計算x絕對值的最大值

        int x_power;//x_power為x的指數(shù),例如:10^2

        int xd_start;// xd_start為x軸的左側(cè)

        int xd_end;// xd_end為x軸的右側(cè)

        x_power=e_pow_double(xx_abs_max);//計算數(shù)值的10的冪次

        xd_start=xx_min/pow(10,xx_power)-1;//左側(cè)邊界減少1

        xd_end =xx_max/pow(10,xx_power)+1;//右側(cè)邊界增加1

        坐標(biāo)軸的范圍確定之后,需要確定坐標(biāo)軸在屏幕上的位置,即:

        const int psc_left=400;//繪圖左側(cè)邊界

        const int psc_right=1000; //繪圖右側(cè)邊界

        const int psc_up=100; //繪圖上側(cè)邊界

        const int psc_down=400; //繪圖下側(cè)邊界

        確定完屏幕范圍后,需要計算坐標(biāo)范圍和屏幕范圍之間的變換系數(shù),即單位長度的數(shù)據(jù)在屏幕上的長度,計算公式為=(psc_right-psc_left)/(xd_end-xd_start)//變換系數(shù),=(psc_down-psc_up)/((-yd_start)-(-yd_end))//變換系數(shù)。

        此處需要注意屏幕橫向是從左向右,縱向是從上向下,所以在計算和兩個變換系數(shù)時有所差異。

        2.3 繪制坐標(biāo)軸

        繪制坐標(biāo)軸首先需要計算出原點(0,0)在屏幕上的位置(0,0),根據(jù)比例關(guān)系得到的公式為:

        定好原點(0,0)后,調(diào)用MFC中的類CPen,進行畫圖,主要程序代碼如下:

        CPen zpen,cpen; //坐標(biāo)軸zpen,坐標(biāo)刻度cpen

        zpen.CreatePen(PS_SOLID,3,RGB(0,0,0));

        cpen.CreatePen(PS_SOLID,2,RGB(0,0,0));

        pDC->SetViewportOrg(x0,y0);// 確定原點

        pDC->SelectObject(&zpen);//pDC指向zpen,開始畫坐標(biāo)軸

        pDC->MoveTo(xd_start*pow(10,x_power)*ex,0);

        pDC->LineTo((xd_end)*pow(10,x_power)*ex,0);

        pDC->MoveTo(0,-(yd_end)*pow(10,y_power)*ey);

        pDC->LineTo(0,-yd_start*pow(10,y_power)*ey);

        pDC->SelectObject(&cpen);//pDC指向cpen,開始畫坐標(biāo)刻度

        CString sTemp;

        for (i=xd_start;i<=xd_end;i++){//劃大刻度

        pDC->MoveTo(int(i*pow(10,x_power)*ex),0);

        pDC->LineTo(int(i*pow(10,x_power)*ex),-8);

        for (int j=1;(j<=4)&&(i

        pDC->MoveTo(int((i+j*0.2)*pow(10,x_power)*ex),0);

        pDC->LineTo(int((i+j*0.2)*pow(10,x_power)*ex),-4);}

        sTemp.Format("%d",i);//將數(shù)字“i”轉(zhuǎn)換成字符“sTemp”

        pDC->TextOut(int(i*pow(10,xx_power)*ex-4),5,sTemp);}

        軸刻度的畫法與軸相同,此處不再贅述。

        2.4 繪制數(shù)據(jù)曲線

        坐標(biāo)軸和坐標(biāo)刻度繪制完畢之后,最后對數(shù)據(jù)進行繪制,此處需要強調(diào)的是坐標(biāo)軸的變換系數(shù)和數(shù)據(jù)的變換系數(shù)必須一致,即數(shù)據(jù)的變換系數(shù)也是,。

        主要程序代碼如下:

        CPen pen;定義數(shù)據(jù)曲線pen畫筆

        pen.CreatePen(PS_SOLID,3,RGB(255,0,0));//數(shù)據(jù)曲線特征

        pDC->SelectObject(&pen);//pDC指向pen,開始畫數(shù)據(jù)曲線

        for( i=0;i<=N-1;i++){

        pDC->MoveTo(int(x[i]*ex),int(-y[i]*ey));

        pDC->LineTo(int(x[i]*ex),int(-y[i]*ey));}

        cpen.DeleteObject();//刪除刻度畫筆

        zpen.DeleteObject(); //刪除坐標(biāo)畫筆

        pen.DeleteObject(); //刪除數(shù)據(jù)畫筆

        3 實驗驗證

        程序完成后,選取兩組工程數(shù)據(jù)依次在VC++和OriginPro環(huán)境下進行繪圖實驗,結(jié)果如圖1和圖2所示。

        圖1 數(shù)據(jù)曲線(VC++環(huán)境)

        圖2 數(shù)據(jù)曲線(OriginPro環(huán)境)

        通過對比可以發(fā)現(xiàn),本文設(shè)計的二維數(shù)據(jù)繪圖程序繪圖結(jié)果與OriginPro環(huán)境下的繪圖結(jié)果是一致的,證明了本文設(shè)計程序的正確性。

        4 小結(jié)及展望

        本文通過在VC++環(huán)境下設(shè)計繪圖程序,實現(xiàn)了高效、準(zhǔn)確地對事后數(shù)據(jù)進行繪圖處理,下一步將針對網(wǎng)絡(luò)發(fā)送的實時數(shù)據(jù)進行實時繪圖顯示。

        [1] 李楊,徐潔,王春海,等.VC++高效無閃爍繪制大數(shù)據(jù)量圖形[J].電腦編程技巧與維護,2014(2):19-26 .

        [2]賈振華.VC++程序設(shè)計項目實踐[M].北京:清華大學(xué)出版社,2010:36-128.

        [3]和清芳.計算機圖形學(xué)原理及算法教程(Visual C++版)[M].2版.北京:清華大學(xué)出版社,2010:39-58.

        [4]王振武.計算機圖形學(xué)基礎(chǔ)[M].北京:清華大學(xué)出版社,2011:31-77.

        TP311

        A

        10.15913/j.cnki.kjycx.2019.17.020

        2095-6835(2019)17-0048-02

        張亞寧(1988—),男,碩士研究生,助理工程師,研究方向為數(shù)據(jù)融合及目標(biāo)安全控制。

        〔編輯:張思楠〕

        猜你喜歡
        坐標(biāo)軸刻度繪圖
        來自河流的你
        中國三峽(2022年7期)2022-12-02 05:28:02
        “禾下乘涼圖”繪圖人
        用坐標(biāo)軸平移妙解斜率和(或積)為定值問題
        歐姆表的刻度真的不均勻嗎?
        ——一個解釋歐姆表刻度不均勻的好方法
        基于HTML5 Canvas繪圖技術(shù)應(yīng)用
        電子測試(2018年4期)2018-05-09 07:28:32
        被吃掉刻度的尺子
        誰大誰小
        巧用仿射變換妙解高考解析幾何題
        測量三字歌
        Surfer和ArcView結(jié)合在氣象繪圖中的應(yīng)用
        河北遙感(2015年2期)2015-07-18 11:11:14
        狠狠综合久久av一区二区蜜桃| 天天色天天操天天日天天射| 国内免费自拍9偷1拍| 青青草大香蕉视频在线观看| 中文字幕日韩精品有码视频 | av一区二区三区观看| 午夜精品一区二区久久做老熟女| 亚洲偷自拍国综合第一页国模| av手机在线观看不卡| 国产午夜免费高清久久影院| 亚洲av永久无码国产精品久久| 亚洲白白色无码在线观看| 亚洲欧美日韩精品高清| 黑人一区二区三区高清视频| 国产精品久久久黄色片| 五月色婷婷丁香无码三级| 少妇高潮惨叫久久久久久电影| 人妻无码一区二区三区四区| 久久精品亚洲中文无东京热| 日本午夜理伦三级好看| 亚州av高清不卡一区二区| 国产丝袜美女一区二区三区| 欧美日韩国产一区二区三区不卡| 91国际视频| 午夜一区二区三区在线视频| 中文字幕成人精品久久不卡91| 丰满少妇人妻久久久久久| 国产精品va无码一区二区| 人妻中出精品久久久一区二| 久久精品国产亚洲av成人无人区| 中文字幕av人妻少妇一区二区 | 亚洲中文字幕亚洲中文| 24小时在线免费av| 日本高清视频xxxxx| 日韩在线不卡免费视频| 久久这黄色精品免费久| 欧美人与善在线com| 欧美日韩一区二区综合| 亚洲男人天堂2017| 免费国人成人自拍视频| 精品嫩模福利一区二区蜜臀|