• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      用軌跡球?qū)崿F(xiàn)地物化資料三維立體圖的旋轉(zhuǎn)

      2012-01-11 08:14:52袁小龍段新力彭仲秋黃顯義李永華
      物探化探計算技術(shù) 2012年5期
      關(guān)鍵詞:內(nèi)切圓球體物化

      袁小龍,段新力,畢 武,彭仲秋,黃顯義,李永華

      (1.新疆地礦局 物化探大隊,新疆 昌吉 830011;2.烏魯木齊金維圖文信息科技有限公司,新疆 烏魯木齊 830091)

      用軌跡球?qū)崿F(xiàn)地物化資料三維立體圖的旋轉(zhuǎn)

      袁小龍1,2,段新力1,2,畢 武1,2,彭仲秋1,2,黃顯義1,2,李永華1,2

      (1.新疆地礦局 物化探大隊,新疆 昌吉 830011;2.烏魯木齊金維圖文信息科技有限公司,新疆 烏魯木齊 830091)

      為了從各個角度觀察屏幕上的三維場景,可以通過鼠標(biāo)的拖動來實現(xiàn)。通常的做法是使場景繞X、Y、Z旋轉(zhuǎn),但這樣操作不方便,旋轉(zhuǎn)效果不理想。有一種更好的方法是:為三維場景建立一個外接球,旋轉(zhuǎn)外接球的同時旋轉(zhuǎn)了球體內(nèi)的三維場景,這種技術(shù)叫軌跡球技術(shù)。這里介紹了軌跡球技術(shù)的數(shù)學(xué)原理、計算方法,并用軌跡球技術(shù)在OpenGL環(huán)境下實現(xiàn)了地物化資料三維立體圖的旋轉(zhuǎn),操作起來方便直觀,人機交互體驗良好。

      軌跡球;虛擬球;三維旋轉(zhuǎn);四元數(shù)

      0 前言

      隨著計算機硬件、軟件技術(shù)水平的發(fā)展,地物化數(shù)據(jù)圖形表現(xiàn)形式越來越豐富。用三維圖形顯示地物化資料數(shù)據(jù),形象直觀,易于理解。為了從各個角度觀察場景,可以通過旋轉(zhuǎn)不同的坐標(biāo)軸來實現(xiàn)。但旋轉(zhuǎn)坐標(biāo)軸操作復(fù)雜,不易理解,用戶使用不方便,作者在本文提出了使用軌跡球來解決這個問題。軌跡球技術(shù)是由Ken Shoemake提出的,假設(shè)場景中所有物體都包含在一個球體中,撥動這個球體,使其繞球心旋轉(zhuǎn),這樣球體內(nèi)的物體跟著旋轉(zhuǎn),就可以達到旋轉(zhuǎn)物體的目的。在計算機操作中,屏幕上創(chuàng)建一個包含所有物體的軌跡球,通過鼠標(biāo)在二維屏幕上的移動,模擬旋轉(zhuǎn)球體,可人機交互良好地實現(xiàn)三維場景的旋轉(zhuǎn)。

      1 軌跡球坐標(biāo)系的建立

      (1)屏幕上的設(shè)備坐標(biāo)稱為屏幕坐標(biāo),如下頁圖1(a)所示,矩形左上角坐標(biāo)為(0,0),右下角坐標(biāo)為 (w,h),w為視圖的寬度,h為視圖的高度,屏幕坐標(biāo)以像素為單位,X方向朝右為正,Y方向朝下為正。

      (2)定義正方形坐標(biāo)系,如下頁圖1(b)所示,正方形左下角坐標(biāo)為(-1,-1),右上角坐標(biāo)為(1,1),中心點坐標(biāo)為(0,0),X 方向從左向右增大,Y方向從下向上增大。

      (3)將屏幕坐標(biāo) (screenX,screenY)轉(zhuǎn)換到正方形坐標(biāo)(square X,squareY)系內(nèi)。在X方向,將坐標(biāo)從范圍(0,width)轉(zhuǎn)換到(-1,1),坐標(biāo)變換為線性變換,令

      當(dāng)screenX=0時,square X=-1;當(dāng)screenX=width時,square X =1。將以上參數(shù)代入公式(1),得將a、b值代入公式(1),得到X 方向坐標(biāo)轉(zhuǎn)換函數(shù)公式(2)。同理,可計算出Y方向坐標(biāo)轉(zhuǎn)換函數(shù)公式(3)。

      這樣轉(zhuǎn)換后的坐標(biāo)X范圍為[-1,1],Y范圍為[-1,1],屏幕中心點坐標(biāo)為(0,0)。

      (4)做正方形的內(nèi)切圓,如圖1(c)所示。內(nèi)切圓以它的任意一條直徑為軸,旋轉(zhuǎn)180°,形成一個球體,如圖1(d)所示。設(shè)球體的中心為(0,0,0),半徑為1,我們把這個球體稱為軌跡球,軌跡球上的坐標(biāo)系稱為軌跡球坐標(biāo)系。

      (5)將正方形坐標(biāo) (x,y)轉(zhuǎn)為軌跡球坐標(biāo)(u,v,w)。首先,把正方形內(nèi)的點分成兩部份,一部份在其內(nèi)切圓內(nèi),另一部份在其內(nèi)切圓之外。鼠標(biāo)點擊的位置 (x,y)落在內(nèi)切圓內(nèi),即時,以(x,y)為基點,做垂直于屏幕的射線,與軌跡球的外半球(屏幕上能看到的半球)相交于P點,如圖1(e)所示。在拖動鼠標(biāo)時,相當(dāng)于以P點為基點拖動球體,鼠標(biāo)點擊的位置P(x,y)落在內(nèi)切圓之外,即時,如圖1(f)所示?;cP在軌跡球之外,無法拖動球體,必須重新找一個在軌跡球上的基點,在uov平面內(nèi),連接OP,OP交內(nèi)切圓于P’點,以P’點為基點拽動軌跡球。設(shè)θ為OP與OU的夾角,可得:

      因軌跡球半徑為1,可得:

      綜合鼠標(biāo)點擊位置落在內(nèi)切圓內(nèi)和內(nèi)切圓外兩種情況,可得公式(4)。

      2 旋轉(zhuǎn)向量的計算

      (1)旋轉(zhuǎn)軸及旋轉(zhuǎn)角度的確定。如圖2(a)所示,鼠標(biāo)從P1點移動到P2點,得到兩個矢量,旋轉(zhuǎn)所張成平面的法向量,通過計算的叉乘,可得到旋轉(zhuǎn)軸

      旋轉(zhuǎn)角度為OP1與OP2之間的夾角θ,在圖2(a)中,M為正方形左邊的中點,N為正方形右邊的中點,鼠標(biāo)從M點拖動到N點時,軌跡球繞V軸旋轉(zhuǎn)了180°,同樣操作,如果要使軌跡球繞V軸旋轉(zhuǎn)360°,則旋轉(zhuǎn)角度得取θ的二倍。在實際使用過程中,旋轉(zhuǎn)角度α取θ的二倍更符合用戶習(xí)慣。

      (2)多次旋轉(zhuǎn)累加。如果鼠標(biāo)進行了多次拖動,則需要將多次拖動的效果累加起來。如圖2(b)所示,第一次拖動的旋轉(zhuǎn)量為,第二次拖動的旋轉(zhuǎn)量為

      (3)旋轉(zhuǎn)矩陣的計算。四元數(shù) Quat4(x,y,z,w)用來存儲旋轉(zhuǎn)軸和旋轉(zhuǎn)角度,設(shè) (a,b,c)為旋轉(zhuǎn)軸向量,θ為旋轉(zhuǎn)角度,根據(jù)四元數(shù)旋轉(zhuǎn)公式:

      如果鼠標(biāo)進行了兩次以上的拖動操作,則需將多次旋轉(zhuǎn)效果進行累加。設(shè)Q1(w1,x1,y1,z1),Q2(w2,x2,y2,z2)為兩次旋轉(zhuǎn)的四元數(shù),將兩次旋轉(zhuǎn)效果累加按公式(5)計算。

      注意:Q=Q1*Q2中,先進行的是右邊項Q2的旋轉(zhuǎn),再進行左邊項Q1的旋轉(zhuǎn)。將最終累加的四元數(shù)轉(zhuǎn)換成旋轉(zhuǎn)矩陣M[2],在OpenGL中乘以這個旋轉(zhuǎn)矩陣M,實現(xiàn)軌跡球的旋轉(zhuǎn)。旋轉(zhuǎn)矩陣M按公式(6)計算。

      3 軌跡球旋轉(zhuǎn)地物化三維立體圖實例

      用OpenGL函數(shù)建立三維地質(zhì)體模型,在鼠標(biāo)移動的響應(yīng)函數(shù)中,通過軌跡球計算出旋轉(zhuǎn)矩陣,當(dāng)前模型視圖矩陣乘以旋轉(zhuǎn)矩陣,實現(xiàn)旋轉(zhuǎn)操作。

      (1)實例1:對布格重力網(wǎng)格數(shù)據(jù)做切割法場分離,切割出五層(一層為一個網(wǎng)格距)的區(qū)域場和剩余場,把布格重力和五層剩余異常放在一起顯示,如圖3所示。用軌跡球旋轉(zhuǎn)操作,可以輕松地旋轉(zhuǎn)到用戶想要的任意位置。

      圖3 用軌跡球旋轉(zhuǎn)重力三維圖Fig.3 Rotating 3Dgraphics of gravity by using arcball

      (2)實例2:在鉆孔數(shù)據(jù)上,通過平行輪廓線截面法創(chuàng)建礦體模型,用軌跡球旋轉(zhuǎn)操作可以從各個角度觀察礦體及鉆孔。如圖4所示。

      4 結(jié)束語

      作者在本文討論了軌跡球坐標(biāo)系的建立,旋轉(zhuǎn)軸及旋轉(zhuǎn)角度的計算,用四元數(shù)表達旋轉(zhuǎn)向量,多次旋轉(zhuǎn)效果的累加,以及四元數(shù)轉(zhuǎn)換成旋轉(zhuǎn)矩陣。在OpenGL環(huán)境下編程實現(xiàn)了三維地質(zhì)模型體繞任意軸旋轉(zhuǎn),并給出了兩個實例,用戶可以用二維設(shè)備(鼠標(biāo))輕松、直觀地旋轉(zhuǎn)三維場景。

      圖4 用軌跡球旋轉(zhuǎn)礦體及鉆孔Fig.4 Rotating 3Dgraphics of drill hole and ore body by using arcball

      [1] MICHAEL CHEN,S.JOY MOUNTFORD.A study in Interactive 3-D Rotation Using 2-D Control Devices[J].Computer Graphics,1988,22(4),121.

      [2] SHOEMAKE KEN.Animating Rotation with Quaternion Curves[J].Computer Graphics,1985,19(3):245.

      [3] SHOEMAKE K,DUFF T.Matrix animation and polar decomposition[C].In:Procee-dings of Graphics Interface'92,1992.

      [4] 馬新武,趙國群,王廣春.用虛擬球?qū)崿F(xiàn)交互式OpengGL 3D圖形的旋轉(zhuǎn)[J].計算機應(yīng)用,2001,21(8):169.

      [5] 賴朝輝,劉修國,花衛(wèi)東,等.三維數(shù)據(jù)場可視化技術(shù)在數(shù)字礦山中的應(yīng)用[J].金屬礦山,2008(12):131.

      [6] 李超玲,楊東來,李豐丹,等.中國數(shù)字地質(zhì)調(diào)查系統(tǒng)的基本構(gòu)架及核心技術(shù)的實現(xiàn)[J].地質(zhì)通報,2008,27(7):923.

      [7] 黃杏元,馬勁松.地理信息系統(tǒng)概論(第三版)[M].北京:高等教育出版社,2008.

      [8] 唐圣潔.三維數(shù)據(jù)場可視化[M].北京:清華大學(xué)出版社,2000.

      [9] 屈紅剛,潘懋,王勇,等.基于含拓?fù)淦拭娴娜S地質(zhì)建模[J].北京大學(xué)學(xué)報:自然科學(xué)版,2006,42(6):717.

      TP 317.4

      A

      10.3969/j.issn.1001-1749.2012.05.22

      1001—1749(2012)05—0622—03

      2011-11-24 改回日期:2012-06-16

      袁小龍(1982- ),男,本科,主要從事物化探軟件開發(fā)、數(shù)據(jù)處理和資料研究工作。

      猜你喜歡
      內(nèi)切圓球體物化
      三個偽內(nèi)切圓之間的一些性質(zhì)
      計算機生成均值隨機點推理三、四維球體公式和表面積公式
      消費電子(2020年5期)2020-12-28 06:58:27
      與三角形的內(nèi)切圓有關(guān)的一個性質(zhì)及相關(guān)性質(zhì)和命題
      一種偽內(nèi)切圓切點的刻畫辦法
      僅與邊有關(guān)的Euler不等式的加強
      廣告創(chuàng)意新方法——球體思維兩極法
      Optimization of rice wine fermentation process based on the simultaneous saccharification and fermentation kinetic model☆
      物的人化與人的物化——當(dāng)代舞臺美術(shù)的表演
      檔案:一種物化的文化形態(tài)
      拋物化Navier-Stokes方程的降維仿真模型
      計算物理(2014年1期)2014-03-11 17:00:18
      修文县| 手游| 丹凤县| 盐城市| 普兰店市| 临汾市| 金坛市| 新和县| 安塞县| 毕节市| 霍州市| 大丰市| 沿河| 简阳市| 咸丰县| 灵台县| 祁连县| 林芝县| 桦南县| 宝清县| 崇州市| 鄂托克旗| 嘉兴市| 宁安市| 且末县| 利辛县| 化州市| 长垣县| 洪雅县| 双桥区| 柳州市| 昭通市| 清远市| 谢通门县| 长宁县| 金乡县| 任丘市| 巩留县| 永昌县| 宝兴县| 柘荣县|