路 云,巨正平
(1.云南睿琦勘察設計有限公司,云南 昆明 650231;2.國家林業(yè)局昆明勘察設計院, 云南 昆明 650216)
隨著煤礦井下各種圖形實現(xiàn)計算機繪制與管理,在煤礦巷道圖繪制過程中,巷道繪制的工作量大,而且重復性勞動過多,由于煤礦巷道圖的整幅圖形中直線巷道是很多的,且并不成水平或垂直大都有一定的斜率,各個巷道之間還有各種復雜的拓撲關系,若由CAD等繪圖工具進行繪制,繪制工作將是非常繁瑣的,而且容易出錯,因此,由井下控制點自動生成礦圖巷道的探究在煤礦巷道的繪制中起到越來越重要的作用[1]。
通過井下控制點自動生成巷道圖形的計算方法已有很多種[2-3,6],在現(xiàn)有的巷道接口處理技術中,一般將巷道節(jié)點處處理技術分為兩條巷道之間和三條及三條巷道以上之間的處理方式。對于兩條巷道的連接,同地下三維管線處理技術幾乎相同,都是先將巷道中線生成巷道雙線時的重疊區(qū)域分離開,然后把巷道模型截面細化成各個點,并用相鄰的巷道截面構建巷道體,最后對模型節(jié)點處進行修復。對多條巷道接口處理技術并沒有很好的技術借鑒[7],目前,一種是多條巷道處于分離狀態(tài),直接對分離的三條巷道進行接口處理,本方法可能和巷道數(shù)據(jù)源有關;另一種是多條巷道處交與一點,以第一次出現(xiàn)的中線為基準,計算與其他巷道中線的夾角,逆時針按從小到大的順序進行排列,再計算相鄰兩巷道相鄰兩半截面的偏移量。這種方法將每條巷道的截面分成2份,對每條巷道的左右截面進行計算偏移量,并以半截面為單位分別移動截面點坐標。本論文以每條巷道的截面為單元,順次計算各個巷道截面的偏移量,相鄰巷道取較大偏移量將巷道截面點坐標依次移動。采用一條巷道對應一個截面的方式可以很好的管理截面點數(shù)據(jù),始終將截面點數(shù)據(jù)與巷道中線點坐標對應,在檢索任意節(jié)點處時可按照此方法根據(jù)巷道中線數(shù)據(jù)實時計算出截面的坐標.本算法采用C#語言開發(fā)OpenGL 實現(xiàn)進行實驗。以兩條巷道三維體修飾算法為例。
巷道拐點及其巷道交點處都稱節(jié)點,一個節(jié)點連接處的巷道,如果是同一巷道內(nèi)的弧段(也稱兩條巷道相交),可根據(jù)相連的關系對接口處進行連接;如果是巷道之間的連接處,因為節(jié)點處的幾條巷道在空間上沒有規(guī)律可循就會出現(xiàn)重疊或錯切的現(xiàn)象,需要對巷道之間空間關系進行判別,然后對相接處進行處理,其實質即為空間三維直線拓撲關系問題[8,10-11]。本文對節(jié)點連接使用先處理相交再統(tǒng)一縫合的方法,即“先分離再縫合”的方法。方法規(guī)定:規(guī)定前進方向,兩條巷道方向規(guī)定為巷道中線依次連接方向;三條及其三條以上巷道方向規(guī)定為以連接節(jié)點為中心,指向節(jié)點方向為前進方向,巷道以左為左幫,巷道以右為右?guī)?,?jié)點處截面點坐標依次編號0-11,共12點,巷道右?guī)偷酌娼屈c為0號點,逆時針旋轉依次對應0-11號點。如圖1、圖2所示。
圖1 兩條巷道相交巷道前進方向
圖2 三條巷道相交巷道前進方向
如圖3所示,為巷道A0O和巷道B0O相交,A0O、B0O為巷道中線,交點為O,A1A2A3A4和B1B2B3B4是由單線巷道生成的雙線巷道,可見在生成雙線巷道時巷道兩個幫線出現(xiàn)了重疊和相離的情況,因此,在構建三維巷道體時也會出現(xiàn)體與體之間的空間重疊和相離現(xiàn)象。這樣會導致模型的失真,同時也影響在巷道體內(nèi)的漫游。所以,在進行三維模型建立前必須對重疊和相離現(xiàn)象進行處理,即對重疊部分進行裁剪;對相離部分進行連接。算法思想如下:
圖3 兩條巷道節(jié)點處二維平面圖
確定重疊部分和相離部分:在處理之前必須將重疊部分和相離部分確定出來。如圖4所示,巷道由A0→O→B0,箭頭表示數(shù)據(jù)存儲順序前進方向,規(guī)定巷道沿前進方向左手邊稱巷道左邊,右手邊稱巷道右邊,α為巷道A0O與巷道B0O之間的夾角,由此我們可以根據(jù)以下進行判斷:
圖4 巷道前進方向與夾角示意圖
圖5 處理后兩條巷道間節(jié)點處二維平面圖
經(jīng)處理后巷道節(jié)點二維平面圖如圖5所示。
計算幫線交點O1點坐標:通過α值可以判斷出O1點所處位置,如圖3,然后將重疊端A4O1和B4O1的偏移量裁去,得出如圖5所示的巷道。O1點坐標由已經(jīng)計算出的截面坐標進行計算,即為線段A1A4和線段B1B4的交點坐標。
A1A4和B1B4的坐標為已知點坐標,使用向量法即可得出O1的坐標;
A1O1∥O1A4
B1O1∥O1B4
巴蘭對自己的貢獻始終非常謙虛。他曾將互聯(lián)網(wǎng)比作由許多人歷經(jīng)多年建造的大教堂,不斷有新人加入其中,每個人都在舊基礎之上添磚加瓦。每人都會說我建造了一個大教堂。他說:“如果你不注意,就會騙自己相信你做了最重要的工作。但現(xiàn)實情況是,每一項貢獻都建立在先前工作的基礎之上,一切都與其他事物息息相關。”
更新巷道截面坐標點數(shù)據(jù):得到O1點坐標后,根據(jù)截面12個點的分布,找出與O1點對應的坐標A[0,i],求出坐標的增量Dx、Dy,然后遍歷截面坐標統(tǒng)一加減Dx、Dy,以替換原有的界面坐標,作為巷道三維建模的截面數(shù)據(jù)。本文弧頂圓曲線采用∏/8離散化方式,離散化巷道截面圖如圖6所示。
圖6 ∏/8離散化后截面圖
OQ左側拱形5個離散點坐標(1<=n<=5):
OQ右側拱形5個離散點坐標(6<=n<=10):
連接各對應點生成巷道體:得到處理后巷道的兩個截面點數(shù)據(jù)后便可以建立三維巷道模型,根據(jù)連接節(jié)點的方法,將連接相鄰兩截面點構建三角面,最終實現(xiàn)三維巷道模型。
在巷道節(jié)點連接處重合部分處理完后,另一幫面必然出現(xiàn)相離的現(xiàn)象,所以要對出現(xiàn)相離的一端進行縫合,使巷道形成一個封閉的體域。兩條巷道節(jié)點處兩個截面都有對應的坐標,只需將新的截面坐標相互連接形成四邊面即可[4]。若不考慮無用面可從0點到12點依次進行構四邊形面,但是這樣回形成一個只有兩點的四邊形面,為A0A1B0B1面,因為A0與B0重合,A1與B1重合;若考慮剔除這個無用的面,首先在判斷交點位置時給予標示,無用面得形成無非是A0A1B0B1或者A10A11B10B11,把握好在那一邊即可剔除。同時,底面也需要縫合,理論上底面也是四邊形面,但是A0與B0或者A11與B11始終會有一對是交點,所以底面形狀上只是一個三角面。流程圖如圖7所示。
圖7 兩條巷道節(jié)點處縫合
無論在節(jié)點處為幾條巷道相交,方法和三條巷道相交處理是完全相同的,先進行巷道分離,然后再進行巷道的縫合,使得三維巷道體能夠形成一個封閉的體域。如圖8、圖9為巷道節(jié)點連接方式及縫合的過程圖。
OpenGL是一個底層圖形庫規(guī)范。它為程序員提供了一個小的幾何圖元(點、線、多邊形、圖片和位圖)庫和一個支持2D/3D幾何對象繪圖命令庫[5],通過所提供的圖元和命令來控制對象的呈現(xiàn)(繪圖)。OpenGL圖形基礎元素和GIS的相同,并具有強大的三維功能,坐標變換,模型構建、視口移動,渲染等。
圖8 RGBA模式兩條巷道節(jié)點連接及縫合圖
圖9 RGBA模式兩條巷道節(jié)點連接及縫合圖
線條元素構建函數(shù):
GL.glBegin(GL.GL_LINES);
GL.glColor3f(0.0f, 1.0f, 0.0f); GL.glVertex3f(x2, x2, z2);//起始點
GL.glColor3f(0.0f, 1.0f, 0.0f); GL.glVertex3f(x3, y3, z3);//終止點
GL.glEnd();
面狀元素構建函數(shù):
GL.glBegin(GL.GL_QUADS);
//空間四點構建面
GL.glColor3f(1.0f, 1.0f, 1.0f); GL.glVertex3f(AN[0, 0], AN[0, 1], AN[0, 2]);
GL.glColor3f(1.0f, 1.0f, 1.0f); GL.glVertex3f(BN[0, 0], BN[0, 1], BN[0, 2]);
GL.glColor3f(1.0f, 1.0f, 1.0f); GL.glVertex3f(BN[11, 0], BN[11, 1], BN[11, 2]);
GL.glColor3f(1.0f, 1.0f, 1.0f); GL.glVertex3f(AN[11, 0], AN[11, 1], AN[11, 2]);
GL.glEnd();
三維礦井巷道體間節(jié)點連接算法的研究對井下三維巷道自動化建模具有十分重要的意義,它可以使用井下巷道基本的中線坐標信息快速建立模型[8],并對三維模型節(jié)點處進行處理,使得整個三維模型形成封閉、平滑的模型體。大大解放了手工建模的工作[10-11]。本文主要對三維模型巷道間連接處處理方法的研究,通過算法自動完成節(jié)點處模型的縫合處理。本人使用C#連接OpenGL圖形庫,對生成的模型進行了可視化 ,同時實現(xiàn)了模型的三維漫游、旋轉等操作 ,并利用實際工程中的礦井中線坐標數(shù)據(jù)對該構模方法進行了測試 ,其建模速度快 ,且建立的模型層次分明,無重疊部分,建模結果有效表明該方法有一定的可靠性,所以該方法在三維巷道建模中有廣泛的實用性。