專利名稱:三維地質(zhì)模型中任意點交互選取的輔助線段滑塊法的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于地質(zhì)測繪領(lǐng)域,尤其涉及一種三維地質(zhì)模型中任意點交互選取的輔助線段滑塊法。
背景技術(shù):
三維地質(zhì)模型的交互可視化與空間分析是當(dāng)前地學(xué)領(lǐng)域最為廣泛的研究方向之一,其實現(xiàn)的關(guān)鍵是模型中任意點的空間精確定位。由于鼠標(biāo)所捕捉到的計算機(jī)屏幕像點(x,y)與三維空間坐標(biāo)(X,Y,Z)不具備唯一對應(yīng)關(guān)系,從而使得這項工作的難度大為增加。
發(fā)明內(nèi)容
為了解決上述問題,本發(fā)明提出了一種三維地質(zhì)模型中任意點交互選取的輔助線段滑塊法。本發(fā)明采用廣義三棱柱(GTP)構(gòu)建的三維地質(zhì)模型,包括(1)構(gòu)建地表面TIN;(2)擴(kuò)展生成GTP;(3)轉(zhuǎn)換剖分GTP。本發(fā)明的技術(shù)方案為1、屏幕捕捉點到選取直線的轉(zhuǎn)換,通過鼠標(biāo)點擊屏幕上三維地質(zhì)模型表面點,可以獲得該點的屏幕窗口坐標(biāo)(Winx,Winy)。在三維屏幕坐標(biāo)系中,上述鼠標(biāo)點擊屏幕所選中的實際是一條由屏幕垂直向里的直線,我們稱之為選取直線,只有完成屏幕點向選取直線的轉(zhuǎn)換,才能實現(xiàn)三維地質(zhì)模型中任意點的選??;2、三維地質(zhì)模型中輔助線段的建立,獲得選取直線后,即可計算直線與地質(zhì)模型的交點,從而建立輔助線段,由于所建的三維地質(zhì)模型是由GTP剖分而成的四面體集合所組成,物體坐標(biāo)系下選取直線與地質(zhì)模型的求交實際上是直線與三角形的求交過程。為提高求交效率,增強(qiáng)交互的實時性,這個過程可分為兩步,第一步是先判斷直線與三角形是否有交點;第二步是如果有交點,再計算具體的交點。3、通過輔助線段的獲得,可以計算出輔助線段上兩端點Pi和Pj的三維物體坐標(biāo),設(shè)Pi的坐標(biāo)為(xi,yi,xi),Pj的坐標(biāo)為(xi,yi,zi),則在物體坐標(biāo)系下從Pi到Pj三維坐標(biāo)的變化是線性的(在屏幕坐標(biāo)系則不一定),通過設(shè)計一個滑塊在輔助線段上自由移動,則可實現(xiàn)輔助線段上任意點的交互選取。
通過本方法實現(xiàn)了三維地質(zhì)模型中任意空間點的交互精確選取。
圖1為空間透視投影 圖2為輔助線段滑塊法的實現(xiàn)
具體實施例方式 如圖1、圖2所示1、屏幕捕捉點到選取直線的轉(zhuǎn)換,通過鼠標(biāo)點擊屏幕上三維地質(zhì)模型表面點,可以獲得該點的屏幕窗口坐標(biāo)(Winx,Winy)。在三維屏幕坐標(biāo)系中,上述鼠標(biāo)點擊屏幕所選中的實際是一條由屏幕垂直向里的直線,我們稱之為選取直線,只有完成屏幕點向選取直線的轉(zhuǎn)換,才能實現(xiàn)三維地質(zhì)模型中任意點的選取,進(jìn)行三維地質(zhì)模型的顯示時采用的是OpenGL中透視投影的方法,這個過程類似于用一臺相機(jī)拍攝照片,相機(jī)所在的位置就是我們的眼睛所在的視點V位置,前裁剪面ABCD就是屏幕所在的位置,后裁剪面A’B’C’D’就是能看到的最遠(yuǎn)處,后裁剪面和前裁剪面構(gòu)成了平截臺體ABCDA’B’C’D’,后裁剪面與視點之間的棱錐就是視錐體V A’B’C’D’。只有落在平截臺體內(nèi)的物體在屏幕上才能顯示,平截臺體以外的物體將被裁剪掉。透視坐標(biāo)系原點位于屏幕中心水平向右為x軸正方向,豎直向上為y軸正方向,z軸的正向垂直于屏幕向里。OpenGL把z窗口坐標(biāo)的取值按
處理,即位于前裁剪面ABCD上z值為0,而在后裁剪面A’B’C’D’上z值為1.0。由上面鼠標(biāo)點擊屏幕所選中的(Winx,Winy),可以方便地得到屏幕坐標(biāo)系直線上兩點(Winx,Winy,0)和(Winx,Winy,1)。三維地質(zhì)模型中的點變換到屏幕上的像素點,要依次經(jīng)過模型變換、視圖變換、透視投影變換、視口變換等一系列過程;相應(yīng)的從真實的三維空間坐標(biāo)變換到窗口坐標(biāo)需要經(jīng)過世界坐標(biāo)系、人眼坐標(biāo)系、透視坐標(biāo)系、設(shè)備坐標(biāo)系和窗口坐標(biāo)系等多種坐標(biāo)系的轉(zhuǎn)換。從屏幕窗口坐標(biāo)變換到物體坐標(biāo)則是其逆過程。OpenGL提供了兩個函數(shù)gluUnProject()和gluProject(),用以實現(xiàn)屏幕坐標(biāo)與物體三維坐標(biāo)之間的變換。由于三維地質(zhì)模型在實際的可視化操作中,可能經(jīng)歷了一系列的變換,要計算這些變換并不是很容易的事。由OpenGL提供的兩個函數(shù)glGetDoublev()和glGetInteger(),可以使這些變換變得相當(dāng)容易,其中g(shù)lGetDoublev()用于獲得當(dāng)前的模型矩陣,glGetInteger()用于獲得當(dāng)前的投影矩陣。將這兩個函數(shù)所獲得的參數(shù)代入函數(shù)gluUnProject(),可以將上述兩屏幕坐標(biāo)點轉(zhuǎn)換為對應(yīng)物體坐標(biāo)中的兩點,從而得到對應(yīng)選取直線OO’。2、三維地質(zhì)模型中輔助線段的建立,獲得選取直線后,即可計算直線與地質(zhì)模型的交點,從而建立輔助線段,由于所建的三維地質(zhì)模型是由GTP剖分而成的四面體集合所組成,物體坐標(biāo)系下選取直線與地質(zhì)模型的求交實際上是直線與三角形的求交過程。為提高求交效率,增強(qiáng)交互的實時性,這個過程可分為兩步,第一步是先判斷直線與三角形是否有交點;第二步是如果有交點,再計算具體的交點。對于第一步,只需將空間三角形投影到屏幕,然后判斷物體坐標(biāo)系點Q(屏幕坐標(biāo)系下的點P變換而成)在屏幕上的投影是否在三角形內(nèi)。在二維坐標(biāo)系下,判斷一個點是否在三角形可采用矢量面積法[8]。經(jīng)過第一步的判斷后,如果一個空間三角形T{v1,v2,v3}(v1,v2,v3是組成該三角形的3個頂點)和選取直線有交點,則可根據(jù)空間直線與三角形的求交算法計算交點,其實現(xiàn)的偽代碼如下 //鼠標(biāo)點擊的屏幕點坐標(biāo)保存在CPoint類型變量point中; glGetDoublev求得模型矩陣、視圖矩陣、投影矩陣; gluUnProject將(point.x,point.y,0)及上述求的各矩陣傳給gluUnProject得到0’的三維坐標(biāo); gluUnProject將(point.x,point.y,1.0)及上述求的各矩陣傳給gluUnProject得0的三維坐標(biāo); triangle=三角形鏈表頭; while(triangle?。饺切蔚逆湵砦? { for(三角形的三個頂點) {用函數(shù)gluProject將三角形triangle頂點轉(zhuǎn)化為屏幕坐標(biāo)保存在數(shù)組p[i]中;} i(f(p
、p[1]、p[2]組成的三角形是包含點point) {利用空間解析幾何知識計算空間直線OO’與三角形triangle交點的三維坐標(biāo),保存在坐標(biāo)結(jié)構(gòu)數(shù)組pickpoint[i]中,該三角形三個頂點轉(zhuǎn)化為屏幕坐標(biāo)的z坐標(biāo)的平均值保存在數(shù)組z[i]中;} 經(jīng)過上述計算,將得到一系列與地質(zhì)模型的交點,稱作交點集。與選取直線OO’存在交點的三角形屏幕坐標(biāo)的z值已保存在數(shù)組z[i]中,z[i]的大小代表在當(dāng)前狀況下三角形距離屏幕的遠(yuǎn)近,可以按照z[i]的大小進(jìn)行空間點的排序。交點集排序具體實現(xiàn)的代碼如下 for(inti=1;i<=n;i++)//n為交點集的個數(shù) { for(intj=1;j<=n-i;j++) { if(z[j]>z[j+1]) { z1=z[j];//z1為過渡變量 temp=pickpoint[j];//temp過渡變量 z[j]=z[j+1]; pickpoint[j]=pickpoint[j+1]; z[j+1]=z1; pickpoint[j+1]=temp; } } } 通過對交點集的排序,交點集中z[j]最小的點就是離屏幕最近的點Pi,最大的點就是離屏幕最遠(yuǎn)的點Pj,PiPj為選取直線與地質(zhì)模型求交后獲得的線段,稱為輔助線段。3、通過輔助線段的獲得,可以計算出輔助線段上兩端點Pi和Pj的三維物體坐標(biāo),設(shè)Pi的坐標(biāo)為(xi,yi,zi),Pj的坐標(biāo)為(xi,yi,zi),則在物體坐標(biāo)系下從Pi到Pj三維坐標(biāo)的變化是線性的(在屏幕坐標(biāo)系則不一定),通過設(shè)計一個滑塊在輔助線段上自由移動,則可實現(xiàn)輔助線段上任意點的交互選取。設(shè)鼠標(biāo)在輔助線段上滑動到某一點Pm(xm,ym,zm),該點與Pi距離為dm,則由空間解析幾何知識可以求得Pm的物體坐標(biāo)(xi,yi,zi)為 其中d為輔助線段PiPj的長度, 圖2為輔助線段滑塊法實現(xiàn)圖。圖中屏幕左側(cè)為地質(zhì)模型顯示窗口,右側(cè)為信息顯示窗口。通過鼠標(biāo)指示箭頭在左側(cè)窗口內(nèi)的地質(zhì)模型表面任意選定一點時,則建立了由所選點向內(nèi)的一條選取直線。通過上面的算法由程序自動計算選取直線穿過每一地層距離與總的距離,按相應(yīng)的比例和顏色顯示在右側(cè)窗口地層條上。地層條即為輔助線段,它顯示了輔助線所經(jīng)過的相應(yīng)地層屬性與厚度信息。在地層條上設(shè)置一個滑塊,其初始位置在滑動條的最上端,即三維地質(zhì)模型的表面。通過滑塊的位置與地層條長度比較,可以顯示此時選取的點在地層內(nèi)的空間位置,指示箭頭隨著滑塊的滑動則沿輔助線段在三維地質(zhì)模型中滑動,相應(yīng)的三維坐標(biāo)也顯示在右側(cè)窗口中。根據(jù)顯示的待選點的三維坐標(biāo)信息,滑動到相應(yīng)位置時停止滑動,按確定按扭,則完成了地質(zhì)模型中空間點的交互精確選取。
權(quán)利要求
1.一種三維地質(zhì)模型中任意點交互選取的輔助線段滑塊法,采用廣義三棱柱(GTP)構(gòu)建的三維地質(zhì)模型,包括(1)構(gòu)建地表面TIN;(2)擴(kuò)展生成GTP;(3)轉(zhuǎn)換剖分GTP,其特征在于1、屏幕捕捉點到選取直線的轉(zhuǎn)換,通過鼠標(biāo)點擊屏幕上三維地質(zhì)模型表面點,可以獲得該點的屏幕窗口坐標(biāo)(Winx,Winy),在三維屏幕坐標(biāo)系中,上述鼠標(biāo)點擊屏幕所選中的實際是一條由屏幕垂直向里的直線,我們稱之為選取直線,只有完成屏幕點向選取直線的轉(zhuǎn)換,才能實現(xiàn)三維地質(zhì)模型中任意點的選取;2、三維地質(zhì)模型中輔助線段的建立,獲得選取直線后,即可計算直線與地質(zhì)模型的交點,從而建立輔助線段,由于所建的三維地質(zhì)模型是由GTP剖分而成的四面體集合所組成,物體坐標(biāo)系下選取直線與地質(zhì)模型的求交實際上是直線與三角形的求交過程。為提高求交效率,增強(qiáng)交互的實時性,這個過程可分為兩步,第一步是先判斷直線與三角形是否有交點;第二步是如果有交點,再計算具體的交點;3、通過輔助線段的獲得,可以計算出輔助線段上兩端點Pi和Pj的三維物體坐標(biāo),設(shè)Pi的坐標(biāo)為(xi,yi,zi),Pj的坐標(biāo)為(xi,yi,zi),則在物體坐標(biāo)系下從Pi到Pj三維坐標(biāo)的變化是線性的(在屏幕坐標(biāo)系則不一定),通過設(shè)計一個滑塊在輔助線段上自由移動,則可實現(xiàn)輔助線段上任意點的交互選取。
全文摘要
本發(fā)明屬于地質(zhì)測繪領(lǐng)域,尤其涉及一種三維地質(zhì)模型中任意點交互選取的輔助線段滑塊法。本發(fā)明的技術(shù)方案為1、屏幕捕捉點到選取直線的轉(zhuǎn)換;2、三維地質(zhì)模型中輔助線段的建立;3、通過輔助線段的獲得,可以計算出輔助線段上兩端點Pi和Pj的三維物體坐標(biāo),設(shè)Pi的坐標(biāo)為(xi,yi,zi),Pj的坐標(biāo)為(xi,yi,zi),則在物體坐標(biāo)系下從Pi到Pj三維坐標(biāo)的變化是線性的(在屏幕坐標(biāo)系則不一定),通過設(shè)計一個滑塊在輔助線段上自由移動,則可實現(xiàn)輔助線段上任意點的交互選取。通過本方法實現(xiàn)了三維地質(zhì)模型中任意空間點的交互精確選取。
文檔編號G06T17/05GK101762264SQ20081005133
公開日2010年6月30日 申請日期2008年10月27日 優(yōu)先權(quán)日2008年10月27日
發(fā)明者任凌云, 林華, 羅衛(wèi)華 申請人:任凌云