999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VC++的二維繪圖程序設計

2019-09-21 01:14:42張亞寧劉春光吳詩帆
科技與創新 2019年17期
關鍵詞:程序

張亞寧,劉春光,吳詩帆

基于VC++的二維繪圖程序設計

張亞寧,劉春光,吳詩帆

(91550部隊,遼寧 大連 116023)

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

VC++;二維數據;測量設備;繪圖軟件

1 緒論

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

2 程序實現

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

2.1 獲取數據

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

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

2.2 確定坐標范圍

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

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的指數,例如:10^2

int xd_start;// xd_start為x軸的左側

int xd_end;// xd_end為x軸的右側

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

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

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

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

const int psc_left=400;//繪圖左側邊界

const int psc_right=1000; //繪圖右側邊界

const int psc_up=100; //繪圖上側邊界

const int psc_down=400; //繪圖下側邊界

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

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

2.3 繪制坐標軸

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

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

CPen zpen,cpen; //坐標軸zpen,坐標刻度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,開始畫坐標軸

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,開始畫坐標刻度

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);//將數字“i”轉換成字符“sTemp”

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

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

2.4 繪制數據曲線

坐標軸和坐標刻度繪制完畢之后,最后對數據進行繪制,此處需要強調的是坐標軸的變換系數和數據的變換系數必須一致,即數據的變換系數也是,。

主要程序代碼如下:

CPen pen;定義數據曲線pen畫筆

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

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

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(); //刪除坐標畫筆

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

3 實驗驗證

程序完成后,選取兩組工程數據依次在VC++和OriginPro環境下進行繪圖實驗,結果如圖1和圖2所示。

圖1 數據曲線(VC++環境)

圖2 數據曲線(OriginPro環境)

通過對比可以發現,本文設計的二維數據繪圖程序繪圖結果與OriginPro環境下的繪圖結果是一致的,證明了本文設計程序的正確性。

4 小結及展望

本文通過在VC++環境下設計繪圖程序,實現了高效、準確地對事后數據進行繪圖處理,下一步將針對網絡發送的實時數據進行實時繪圖顯示。

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

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

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

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

TP311

A

10.15913/j.cnki.kjycx.2019.17.020

2095-6835(2019)17-0048-02

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

〔編輯:張思楠〕

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
基于VMM的程序行為異常檢測
偵查實驗批準程序初探
我國刑事速裁程序的構建
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 超碰色了色| 亚洲人成网站观看在线观看| 在线免费无码视频| 国产一二三区视频| 澳门av无码| 美臀人妻中出中文字幕在线| 国内精品久久人妻无码大片高| 极品尤物av美乳在线观看| 久久久久亚洲精品无码网站| 毛片在线看网站| 欧美黄色a| 午夜欧美理论2019理论| 久久久久久久久久国产精品| 爽爽影院十八禁在线观看| 国产在线小视频| 欧美福利在线| 99久久99视频| 精品黑人一区二区三区| 在线观看免费人成视频色快速| 狠狠躁天天躁夜夜躁婷婷| 国产激情在线视频| 亚洲黄色网站视频| aa级毛片毛片免费观看久| 成人国内精品久久久久影院| 久久久久青草大香线综合精品| 九色视频一区| jizz在线免费播放| 欧美亚洲国产视频| 国产一级视频久久| 丝袜无码一区二区三区| 欧美色亚洲| 欧美天堂久久| 黄色网址手机国内免费在线观看| 国产97区一区二区三区无码| 国产精品尤物在线| 亚洲,国产,日韩,综合一区 | 毛片视频网| 欧美国产在线精品17p| 亚洲高清在线天堂精品| 国产丝袜一区二区三区视频免下载 | 国产精品不卡永久免费| 国产在线精彩视频二区| 国产一级片网址| 人妻无码中文字幕第一区| 在线播放精品一区二区啪视频| 精品自窥自偷在线看| 国产精选自拍| 中国精品自拍| 亚洲AV无码乱码在线观看代蜜桃| 国产美女精品人人做人人爽| 精品伊人久久久大香线蕉欧美| 亚洲一级毛片免费观看| 就去色综合| 国产网站免费| 精品超清无码视频在线观看| 亚洲精品成人片在线播放| 又粗又硬又大又爽免费视频播放| 国产精品免费电影| 免费不卡视频| 在线a网站| 国产波多野结衣中文在线播放| 制服丝袜 91视频| 免费无码又爽又刺激高| 毛片在线区| 免费看黄片一区二区三区| 中国国产高清免费AV片| 日本在线免费网站| 亚洲免费黄色网| 欧美亚洲另类在线观看| 婷婷亚洲最大| 欧美在线一二区| 中文字幕第4页| 91精品国产综合久久香蕉922| 日韩精品一区二区三区大桥未久 | 中文字幕在线观看日本| 真实国产乱子伦视频| 久久久久久国产精品mv| 好吊妞欧美视频免费| 日本欧美午夜| 不卡午夜视频| 97国产在线观看| 国产精品九九视频|