一種基于wpf的三維圖形實現(xiàn)方法及三維文字實現(xiàn)方法
【專利摘要】本發(fā)明公開了一種基于WPF的三維圖形實現(xiàn)方法,其特征在于,包括如下步驟:步驟一:設(shè)置要展示的數(shù)據(jù)的條件;步驟二:根據(jù)步驟一的條件從數(shù)據(jù)庫中查出三維的軌跡點的坐標;步驟三:根據(jù)軌跡點的坐標信息生成三角形面;步驟四:根據(jù)軌跡點的坐標信息生成坐標網(wǎng)格;步驟五:通過對三角形面的縮放來實現(xiàn)對三維圖形的縮放;步驟六:對三維圖形進行旋轉(zhuǎn)。本發(fā)明還公開了一種基于WPF的三維文字實現(xiàn)方法。本發(fā)明一種基于WPF的三維圖形實現(xiàn)方法及三維文字實現(xiàn)方法通過將復(fù)雜圖形、文字統(tǒng)一采用三角形表達的方式,提高了圖形繪制的效率。
【專利說明】—種基于WPF的三維圖形實現(xiàn)方法及三維文字實現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種三維圖形實現(xiàn)方法,具體涉及一種基于WPF的三維圖形實現(xiàn)方法,本發(fā)明還涉及一種基于WPF的三維文字實現(xiàn)方法。
【背景技術(shù)】
[0002]在WPF (Windows Presentation Foundation,微軟針對圖形圖像的開發(fā)軟件)技術(shù)中三維圖形里,所有物體都被描述成為一系列三角形的集合。因為三角形是用來描述平面最小的幾何體。根據(jù)它的材質(zhì)和它與光線的角度,在場景中,渲染引擎可以計算出每一個三角形的顏色。
[0003]3D物體的一個表面稱為一個網(wǎng)格(mesh)。一個網(wǎng)格被定義為許多3D點。這些點成為頂點(vertices)。這些頂點通過環(huán)繞方式連接起來來形成三角形。每一個三角形有個正面和反面,只有正面才會被渲染。三角形的正面可以通過點的環(huán)繞順序來確定。
[0004]WPF的3D控件是在以上的基礎(chǔ)上實現(xiàn)各種形狀的封裝,并增加了各個控件的特殊控制屬性,方便技術(shù)人員利用控件快速的實現(xiàn)開發(fā)。
[0005]現(xiàn)有直接利用3D控件繪圖雖然可以提高開發(fā)效率,但是在大數(shù)據(jù)量繪圖(在場景中存在I萬個以上的3D元素)時,繪圖過程需要很長時間,而且在用戶交互過程中圖形變換速度不能達到可以接受的要求。
【發(fā)明內(nèi)容】
[0006]為解決現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種基于WPF的三維圖形實現(xiàn)方法和三維文字實現(xiàn)方法。
[0007]為了實現(xiàn)上述目標,本發(fā)明采用如下的技術(shù)方案:
一種基于WPF的三維圖形實現(xiàn)方法,其特征在于,包括如下步驟:
步驟一:設(shè)置要展示的數(shù)據(jù)的條件;
步驟二:根據(jù)步驟一的條件從數(shù)據(jù)庫中查出三維的軌跡點的坐標;
步驟三:根據(jù)軌跡點的坐標信息生成三角形面;
步驟四:根據(jù)軌跡點的坐標信息生成坐標網(wǎng)格;
步驟五:通過對三角形面的縮放來實現(xiàn)對三維圖形的縮放;
步驟六:對三維圖形進行旋轉(zhuǎn)。
[0008]前述的一種基于WPF的三維圖形實現(xiàn)方法,其特征在于,所述步驟三包括:根據(jù)需要設(shè)置三角形面的顏色,并通過WPF進行展示。
[0009]前述的一種基于WPF的三維圖形實現(xiàn)方法,其特征在于,所述步驟四包括:所述坐標網(wǎng)格中設(shè)置有用于衡量網(wǎng)格大小的三維數(shù)字標尺。
[0010]前述的一種基于WPF的三維圖形實現(xiàn)方法,其特征在于,所述步驟五包括:設(shè)置縮放因子,根據(jù)縮放因子的值的變化來相應(yīng)地縮放三角形面。
[0011]前述的一種基于WPF的三維圖形實現(xiàn)方法,其特征在于,通過按動鍵盤上的“ + ”鍵來相應(yīng)地放大縮放因子的值,通過按動鍵盤上的鍵來相應(yīng)地縮小縮放因子的值。
[0012]前述的一種基于WPF的三維圖形實現(xiàn)方法,其特征在于,設(shè)置旋轉(zhuǎn)角度,通過旋轉(zhuǎn)變換公式來對軌跡點進行旋轉(zhuǎn),從而實現(xiàn)對三維圖形的旋轉(zhuǎn);所述旋轉(zhuǎn)變換公式為:xl=cos (angle) *x-sin (angle) *y ;yl=cos (angle) *y+sin (angle) *x ;其中 x, y 為需要變換的軌跡點的坐標,xl, yl為變換后軌跡點的坐標,angle為旋轉(zhuǎn)角度。
[0013]前述的一種基于WPF的三維圖形實現(xiàn)方法,其特征在于,在三維圖形的圖形區(qū)域中按住鼠標按鍵然后移動鼠標,根據(jù)鼠標移動的軌跡來計算所述旋轉(zhuǎn)角度。
[0014]前述的一種基于WPF的三維圖形實現(xiàn)方法,其特征在于,所述步驟三包括:
步驟3a:設(shè)置軌跡點的半徑;
步驟3b:在三維坐標中以坐標原點作為球心建立球面作為軌跡點;
步驟3c:設(shè)置軌跡點外觀;
步驟3d:確定球面在三維空空間的位置,作坐標平移計算,得出新的空間坐標步驟3e:根據(jù)步驟3a至步驟3d確定的參數(shù),由WPF來繪制球面,使得球面在指定的位置,以指定的顏色來顯示。
[0015]前述的一種基于WPF的三維圖形實現(xiàn)方法,其特征在于,所述步驟四包括:
步驟4a:確定坐標網(wǎng)格線的半徑;
步驟4b:根據(jù)要展現(xiàn)數(shù)據(jù)的范圍來確定坐標線的長度;
步驟4c:設(shè)置坐標網(wǎng)格外觀參數(shù);
步驟4d:在三維坐標中建模;
步驟4e:作平移和旋轉(zhuǎn)計算,得出新的空間坐標;
步驟4f:根據(jù)步驟4a至步驟4e確定的參數(shù),由WPF來繪制網(wǎng)格線,進行三維圖形展示。
[0016]一種基于WPF的三維文字實現(xiàn)方法,其特征在于,包括如下步驟:
步驟一:確定要展現(xiàn)的三維文字,由WPF計算出文字的長度和高度,由計算出的長度和高度在三維坐標中建立三維平面;
步驟二:把要展現(xiàn)的文字作為三維平面的填充;
步驟三:根據(jù)軌跡點的范圍和坐標網(wǎng)格的位置,對填充了文字的三維平面作平移計算,得出新的空間坐標;
步驟四:由WPF繪制計算后的三維平面,使得指定的文字在指定的位置顯示。
[0017]本發(fā)明的有益之處在于:本發(fā)明一種基于WPF的三維圖形實現(xiàn)方法及三維文字實現(xiàn)方法通過將復(fù)雜圖形、文字統(tǒng)一采用三角形表達的方式,提高了圖形繪制的效率。
【專利附圖】
【附圖說明】
[0018]圖1是本發(fā)明一種基于WPF的三維圖形實現(xiàn)方法的流程圖;
圖2是本發(fā)明一種基于WPF的三維圖形實現(xiàn)方法步驟三的流程圖;
圖3是本發(fā)明一種基于WPF的三維圖形實現(xiàn)方法步驟四的流程圖;
圖4是本發(fā)明一種基于WPF的三維文字實現(xiàn)方法的流程圖。
【具體實施方式】
[0019]以下結(jié)合附圖和具體實施例對本發(fā)明作具體的介紹。[0020]參照圖1所示,本發(fā)明是利用計算機三維技術(shù)(WPF)來繪制空間中運動軌跡點的形成軌跡。以多條直線段構(gòu)成的網(wǎng)格作為坐標,軌跡點全部展現(xiàn)在網(wǎng)格中,而網(wǎng)格的邊緣某一側(cè)有文字說明兩條之間的距離,另有文字說明每一方向的直線代表的參數(shù)。生成的三維圖形及坐標網(wǎng)格可以根據(jù)鍵盤或鼠標的操作作平移或旋轉(zhuǎn)變換,以方便用戶觀看軌跡。
[0021]本發(fā)明用到的旋轉(zhuǎn)變換公式: xl=cos(angle)氺x_sin(angle)*y; yl=cos(angle)*y+sin(angle)*x;
其中X,y為需要變換點的坐標,xl,yl為變換后點的坐標,angle為旋轉(zhuǎn)的角度。
[0022]本發(fā)明的技術(shù)方案包括如下步驟:
步驟一:設(shè)置要展示的數(shù)據(jù)的條件,本發(fā)明不限制要設(shè)置的數(shù)據(jù)條件的具體形式,設(shè)置條件目的是限制要展示的數(shù)據(jù)的范圍;
步驟二:根據(jù)步驟一的條件從數(shù)據(jù)庫中查出三維的軌跡點的坐標,這里的軌跡點為經(jīng)過其他程序加工過的數(shù)據(jù);
步驟三:根據(jù)軌跡點的坐標信息生成三角形面;
步驟四:根據(jù)軌跡點的坐標信息生成坐標網(wǎng)格;
步驟五:通過對三角形面的縮放來實現(xiàn)對三維圖形的縮放;
步驟六:對三維圖形進行旋轉(zhuǎn)。
[0023]本發(fā)明中,優(yōu)選根據(jù)軌跡點信息生成三角形的面,并根據(jù)需要設(shè)置三角面的顏色來通過WPF技術(shù)展示;
根據(jù)軌跡點信息的范圍生成坐標網(wǎng)格,網(wǎng)格中有用于衡量網(wǎng)格大小的三維數(shù)字標尺。
[0024]按鍵盤上的“ + ”鍵或鍵通過一定的縮放因子來縮放三角形面達到縮放三維圖形的目的(這是一種用戶事件)。
[0025]在圖形區(qū)域中按住鼠標左鍵等鼠標按鍵然后移動數(shù)據(jù),根據(jù)鼠標移動的軌跡來計算三維圖形轉(zhuǎn)動的角度(這是一種用戶事件)。
[0026]在進行旋轉(zhuǎn)時,設(shè)置旋轉(zhuǎn)角度,通過旋轉(zhuǎn)變換公式來對軌跡點進行旋轉(zhuǎn),從而實現(xiàn)對三維圖形的旋轉(zhuǎn);旋轉(zhuǎn)變換公式為:xl=cos (angle) *x_sin (angle) *y ;yl=cos (angle) *y+sin (angle) *x ;其中x,y為需要變換的軌跡點的坐標,xl, yl為變換后軌跡點的坐標,angle為旋轉(zhuǎn)角度。
[0027]圖2是本發(fā)明一種基于WPF的三維圖形實現(xiàn)方法步驟三的流程圖。圖2顯示的是軌跡點生成的過程。
[0028]軌跡點是以半徑較小的球面來展現(xiàn)的(以面代體)??梢愿鶕?jù)如下幾步進行:
步驟3a:設(shè)置軌跡點的半徑;
步驟3b:在三維坐標中以坐標原點作為球心建立球面作為軌跡點;
步驟3c:設(shè)置軌跡點外觀,如顏色或者圖片作為球面的圖案;
步驟3d:確定球面在三維空空間的位置,作坐標平移計算,得出新的空間坐標步驟3e:根據(jù)步驟3a至步驟3d確定的參數(shù),由WPF來繪制球面,使得球面在指定的位置,以指定的顏色來顯示。
[0029]圖3是本發(fā)明一種基于WPF的三維圖形實現(xiàn)方法步驟四的流程圖。圖3顯示的是如何生成坐標網(wǎng)格。由于坐標網(wǎng)格是多條線,現(xiàn)以一條線的生成來描述。坐標網(wǎng)格線以半徑較小的柱面來展現(xiàn)。其包括如下幾步:
步驟4a:確定坐標網(wǎng)格線的半徑;
步驟4b:根據(jù)要展現(xiàn)數(shù)據(jù)的范圍來確定坐標線的長度;
步驟4c:設(shè)置坐標網(wǎng)格外觀參數(shù),下面以設(shè)置的網(wǎng)格的外觀參數(shù)為網(wǎng)格線的顏色舉
例;
步驟4d:在三維坐標中建模,這里的建模是指在三維坐標中建立柱面;
步驟4e:作平移和旋轉(zhuǎn)計算,得出新的空間坐標,在這里,根據(jù)網(wǎng)格線代表的是X、y或z軸作旋轉(zhuǎn)和平移計算,得出新的空間坐標;
步驟4f:根據(jù)步驟4a至步驟4e確定的參數(shù),由WPF來繪制網(wǎng)格線,進行三維圖形展示,即由WPF來繪制網(wǎng)格線,使得網(wǎng)格線在指定的位置,以指定的顏色來顯示。
[0030]如圖4所示,下面闡述一種基于WPF的三維文字實現(xiàn)方法包括如下步驟:
步驟一:確定要展現(xiàn)的三維文字,由WPF計算出文字的長度和高度,由計算出的長度和
高度在三維坐標中建立三維平面;
步驟二:把要展現(xiàn)的文字作為三維平面的填充;
步驟三:根據(jù)軌跡點的范圍和坐標網(wǎng)格的位置,對填充了文字的三維平面作平移計算,得出新的空間坐標;
步驟四:由WPF繪制計算后的三維平面,使得指定的文字在指定的位置顯示。
[0031]本發(fā)明的關(guān)鍵點為將相應(yīng)圖形及文字轉(zhuǎn)換為三角形表達方法,本發(fā)明通過將復(fù)雜圖形、文字統(tǒng)一采用三角形表達的方式,提高了圖形繪制的效率。
[0032]以上顯示和描述了本發(fā)明的基本原理、主要特征和優(yōu)點。本行業(yè)的技術(shù)人員應(yīng)該了解,上述實施例不以任何形式限制本發(fā)明,凡采用等同替換或等效變換的方式所獲得的技術(shù)方案,均落在本發(fā)明的保護范圍內(nèi)。
【權(quán)利要求】
1.一種基于WPF的三維圖形實現(xiàn)方法,其特征在于,包括如下步驟: 步驟一:設(shè)置要展示的數(shù)據(jù)的條件; 步驟二:根據(jù)步驟一的條件從數(shù)據(jù)庫中查出三維的軌跡點的坐標; 步驟三:根據(jù)軌跡點的坐標信息生成三角形面; 步驟四:根據(jù)軌跡點的坐標信息生成坐標網(wǎng)格; 步驟五:通過對三角形面的縮放來實現(xiàn)對三維圖形的縮放; 步驟六:對三維圖形進行旋轉(zhuǎn)。
2.根據(jù)權(quán)利要求1所述的一種基于WPF的三維圖形實現(xiàn)方法,其特征在于,所述步驟三包括:根據(jù)需要設(shè)置三角形面的顏色,并通過WPF進行展示。
3.根據(jù)權(quán)利要求2所述的一種基于WPF的三維圖形實現(xiàn)方法,其特征在于,所述步驟四包括:所述坐標網(wǎng)格中設(shè)置有用于衡量網(wǎng)格大小的三維數(shù)字標尺。
4.根據(jù)權(quán)利要求3所述的一種基于WPF的三維圖形實現(xiàn)方法,其特征在于,所述步驟五包括:設(shè)置縮放因子,根據(jù)縮放因子的值的變化來相應(yīng)地縮放三角形面。
5.根據(jù)權(quán)利要求4所述的一種基于WPF的三維圖形實現(xiàn)方法,其特征在于,通過按動鍵盤上的“ + ”鍵來相應(yīng)地放大縮放因子的值,通過按動鍵盤上的鍵來相應(yīng)地縮小縮放因子的值。
6.根據(jù)權(quán)利要求5所述的一種基于WPF的三維圖形實現(xiàn)方法,其特征在于,設(shè)置旋轉(zhuǎn)角度,通過旋轉(zhuǎn)變換公式來對軌跡點進行旋轉(zhuǎn),從而實現(xiàn)對三維圖形的旋轉(zhuǎn);所述旋轉(zhuǎn)變換公式為:xl=cos (angle)氺x_sin (angle) *y ;yl=cos (angle)氺y+sin (angle) *x ;其中 x, y 為需要變換的軌跡點的坐標,xl,yl為變換后軌跡點的坐標,angle為旋轉(zhuǎn)角度。
7.根據(jù)權(quán)利要求6所述的一種基于WPF的三維圖形實現(xiàn)方法,其特征在于,在三維圖形的圖形區(qū)域中按住鼠標按鍵然后移動鼠標,根據(jù)鼠標移動的軌跡來計算所述旋轉(zhuǎn)角度。
8.根據(jù)權(quán)利要求7所述的一種基于WPF的三維圖形實現(xiàn)方法,其特征在于,所述步驟三包括: 步驟3a:設(shè)置軌跡點的半徑; 步驟3b:在三維坐標中以坐標原點作為球心建立球面作為軌跡點; 步驟3c:設(shè)置軌跡點外觀; 步驟3d:確定球面在三維空空間的位置,作坐標平移計算,得出新的空間坐標步驟3e:根據(jù)步驟3a至步驟3d確定的參數(shù),由WPF來繪制球面,使得球面在指定的位置,以指定的顏色來顯示。
9.根據(jù)權(quán)利要求8所述的一種基于WPF的三維圖形實現(xiàn)方法,其特征在于,所述步驟四包括: 步驟4a:確定坐標網(wǎng)格線的半徑; 步驟4b:根據(jù)要展現(xiàn)數(shù)據(jù)的范圍來確定坐標線的長度; 步驟4c:設(shè)置坐標網(wǎng)格外觀參數(shù); 步驟4d:在三維坐標中建模; 步驟4e:作平移和旋轉(zhuǎn)計算,得出新的空間坐標; 步驟4f:根據(jù)步驟4`a至步驟4e確定的參數(shù),由WPF來繪制網(wǎng)格線,進行三維圖形展示。
10.一種基于WPF的三維文字實現(xiàn)方法,其特征在于,包括如下步驟:步驟一:確定要展現(xiàn)的三維文字,由WPF計算出文字的長度和高度,由計算出的長度和高度在三維坐標中建立三維平面; 步驟二:把要展現(xiàn)的文字作為三維平面的填充; 步驟三:根據(jù)軌跡點的范圍和坐標網(wǎng)格的位置,對填充了文字的三維平面作平移計算,得出新的空間坐標; 步驟四:由WPF繪制計算后的三維平面,使得指定的文字在指定的位置顯示。
【文檔編號】G06F17/50GK103729878SQ201310701769
【公開日】2014年4月16日 申請日期:2013年12月19日 優(yōu)先權(quán)日:2013年12月19日
【發(fā)明者】耿飚, 徐志錦, 方寅生 申請人:江蘇銳天信息科技有限公司