三維視圖繪制與消隱技術(shù)

三維視圖繪制與消隱技術(shù)

ID:15508412

大小:32.50 KB

頁數(shù):10頁

時間:2018-08-03

三維視圖繪制與消隱技術(shù)_第1頁
三維視圖繪制與消隱技術(shù)_第2頁
三維視圖繪制與消隱技術(shù)_第3頁
三維視圖繪制與消隱技術(shù)_第4頁
三維視圖繪制與消隱技術(shù)_第5頁
資源描述:

《三維視圖繪制與消隱技術(shù)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、三維視圖繪制與消隱技術(shù)地理信息系統(tǒng)論壇(GISForum)--學(xué)術(shù)論文論壇BBS學(xué)術(shù)論文技術(shù)資料文件格式GIS標(biāo)準(zhǔn)化共享軟件GIS鏈接三維視圖繪制與消隱技術(shù) 作者:周堅華  1.問題的提出  在一些數(shù)據(jù)庫管理系統(tǒng)或辦公自動化和統(tǒng)計類軟件中,一般具有繪制三維視圖的功能。使用時通常要求在給出的表格中輸入繪圖的數(shù)據(jù)及視角、比例尺等參數(shù)。這只適用于小批量的統(tǒng)計數(shù)據(jù)繪制統(tǒng)計三維視圖。在地質(zhì)、地貌、氣象、水文、交通、林業(yè)等許多領(lǐng)域,需要描述的某一量通常具有空間分布特征,這種空間分布數(shù)據(jù)的數(shù)量一般十分龐大,當(dāng)使用上述三維視圖軟件繪圖時經(jīng)常會遇到輸數(shù)表格容納不下的問題,而且按表格重新輸入數(shù)據(jù)也容

2、易出錯和耗費許多人力。  三維視圖的繪制及相應(yīng)繪圖數(shù)據(jù)的組織并不是一件十分困難的事,使用少量程序代碼就可以實現(xiàn)這一目標(biāo)。本文將介紹一種以C++語言實現(xiàn)大批量數(shù)據(jù)繪制三維視圖的簡易方法。該法的關(guān)鍵技術(shù)在于:(1)以FoxPro數(shù)據(jù)庫管理系統(tǒng)整理繪圖數(shù)據(jù)并制成可為C++語言包括和調(diào)用的.h文件;(2)在繪制三維視圖中,以“多邊形法”進(jìn)行需遮蔽線段的消隱。  2.繪圖數(shù)據(jù)的準(zhǔn)備  繪圖的原始數(shù)據(jù)來自FoxPro(或FoxBase)數(shù)據(jù)庫管理系統(tǒng)??梢詫⒛撤鶊D的數(shù)據(jù)置于一個一維數(shù)組中,并包括在一個.h文件中。這樣只要在C++的繪三維視圖程序首包括該頭文件,就可以在程序的任何位置調(diào)用這些數(shù)

3、據(jù)。例如有一個數(shù)據(jù)串:3,8,10,11,27,6,……,設(shè)存放數(shù)組為A,數(shù)據(jù)文件名為data.h,在data.h中,該數(shù)據(jù)串的存放形式為:  A={3,  8,  10,  11,  27,  6, ?。骸 。簘;  這些數(shù)據(jù)可由FoxPro的.dbf文件拷貝得到。當(dāng)然,在拷貝前還需經(jīng)過簡單的加工。設(shè)在.dbf文件中,待繪圖數(shù)據(jù)所在的字段為DT1,此時可增設(shè)一個字段DH(逗號),并將該字段的內(nèi)容全以“,”替換,然后以如下命令拷貝到data.h文件中:copytodata.hfieldDT1,DHdelewithblank隨后打開data.h文件,在數(shù)據(jù)首加上“A={”,在數(shù)據(jù)尾

4、加上“};”即可?! ?.繪三維視圖編程基本思想  繪三維視圖的關(guān)鍵技術(shù)在“消隱”,即消去在三維觀察時應(yīng)該被擋住看不見的線。在有關(guān)“計算機(jī)圖形學(xué)”的書籍中所介紹的消隱法多為“計算法”,即由當(dāng)前數(shù)據(jù)點行計算在已繪出的線條中哪些應(yīng)該隱去,再清除這些線條。筆者自己設(shè)計了一種簡便新穎的消隱法(這里姑且稱之為“多邊形法”),不僅程序代碼簡單,而且這種消隱法的原理也十分簡潔明了?,F(xiàn)將其基本思想及運算步驟介紹如下:  3.1首排數(shù)據(jù)繪X方向網(wǎng)線。以line函數(shù)將首排數(shù)據(jù)點連線;  3.2繪Y方向網(wǎng)線。將第2排與第1排在Y方向相對應(yīng)的數(shù)據(jù)點連線;  3.3以“多邊形法”做消隱。據(jù)第2排點的數(shù)據(jù)以

5、背景色涂刷一個多邊形,這樣,可能被第2排數(shù)據(jù)點連線所遮蔽的線條(即應(yīng)消隱的線)即被擦除;  3.4第2排數(shù)據(jù)繪X方向網(wǎng)線。以line函數(shù)將第2排數(shù)據(jù)點連線;  3.5重復(fù)步驟3.2~3.4,直至繪完全圖?! ?.繪三維視圖源程序(forWindows)  draw3d.cpp  #include  #include"data.h"  intPASCALWinMain(HANDLE,HANDLE,LPSTR,int);  longFARPASCALWindowProc(HWND,WORD,WORD,LONG);  intmv[15625];//mv[]為繪圖數(shù)據(jù)數(shù)組,存于data.

6、h中  HANDLEhInst;  intPASCALWinMain(HANDLEhInstance,HANDLEhPrevInstance,  LPSTRlpszCmdLine,intnCmdShow)  {  ……//此處略去了創(chuàng)建窗口的代碼塊  }  longFARPASCALWindowProc(HWNDhWnd,WORDmessage,  WORDwParam,LONGlParam)  {  HDChDC;  PAINTSTRUCTps;  HBRUSHhOldBrush;  inti=0,j=0;  intyy[MAXPTS];//MAXPTS為繪圖行或列數(shù),在dat

7、a.h中定義  staticPOINTPointTable[MAXPTS+2];  switch(message)  {//定義畫筆或畫刷  staticLOGPENlpBlack={PS_SOLID,1,1,RGB(0,0,0)};  staticLOGPENlpGreen={PS_SOLID,1,1,RGB(0,255,0)};  staticLOGPENlpWhite={PS_SOLID,1,1,RGB(255,255,255)};  HBRUSHhBlackBrush; 

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。