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