三维矿井巷道体间节点连接算法研究

2020-05-17 06:14巨正平
矿山测量 2020年2期
关键词:偏移量中线交点

路 云,巨正平

(1.云南睿琦勘察设计有限公司,云南 昆明 650231;2.国家林业局昆明勘察设计院, 云南 昆明 650216)

随着煤矿井下各种图形实现计算机绘制与管理,在煤矿巷道图绘制过程中,巷道绘制的工作量大,而且重复性劳动过多,由于煤矿巷道图的整幅图形中直线巷道是很多的,且并不成水平或垂直大都有一定的斜率,各个巷道之间还有各种复杂的拓扑关系,若由CAD等绘图工具进行绘制,绘制工作将是非常繁琐的,而且容易出错,因此,由井下控制点自动生成矿图巷道的探究在煤矿巷道的绘制中起到越来越重要的作用[1]。

通过井下控制点自动生成巷道图形的计算方法已有很多种[2-3,6],在现有的巷道接口处理技术中,一般将巷道节点处处理技术分为两条巷道之间和三条及三条巷道以上之间的处理方式。对于两条巷道的连接,同地下三维管线处理技术几乎相同,都是先将巷道中线生成巷道双线时的重叠区域分离开,然后把巷道模型截面细化成各个点,并用相邻的巷道截面构建巷道体,最后对模型节点处进行修复。对多条巷道接口处理技术并没有很好的技术借鉴[7],目前,一种是多条巷道处于分离状态,直接对分离的三条巷道进行接口处理,本方法可能和巷道数据源有关;另一种是多条巷道处交与一点,以第一次出现的中线为基准,计算与其他巷道中线的夹角,逆时针按从小到大的顺序进行排列,再计算相邻两巷道相邻两半截面的偏移量。这种方法将每条巷道的截面分成2份,对每条巷道的左右截面进行计算偏移量,并以半截面为单位分别移动截面点坐标。本论文以每条巷道的截面为单元,顺次计算各个巷道截面的偏移量,相邻巷道取较大偏移量将巷道截面点坐标依次移动。采用一条巷道对应一个截面的方式可以很好的管理截面点数据,始终将截面点数据与巷道中线点坐标对应,在检索任意节点处时可按照此方法根据巷道中线数据实时计算出截面的坐标.本算法采用C#语言开发OpenGL 实现进行实验。以两条巷道三维体修饰算法为例。

1 计算方法与原理

巷道拐点及其巷道交点处都称节点,一个节点连接处的巷道,如果是同一巷道内的弧段(也称两条巷道相交),可根据相连的关系对接口处进行连接;如果是巷道之间的连接处,因为节点处的几条巷道在空间上没有规律可循就会出现重叠或错切的现象,需要对巷道之间空间关系进行判别,然后对相接处进行处理,其实质即为空间三维直线拓扑关系问题[8,10-11]。本文对节点连接使用先处理相交再统一缝合的方法,即“先分离再缝合”的方法。方法规定:规定前进方向,两条巷道方向规定为巷道中线依次连接方向;三条及其三条以上巷道方向规定为以连接节点为中心,指向节点方向为前进方向,巷道以左为左帮,巷道以右为右帮,节点处截面点坐标依次编号0-11,共12点,巷道右帮底面角点为0号点,逆时针旋转依次对应0-11号点。如图1、图2所示。

图1 两条巷道相交巷道前进方向

图2 三条巷道相交巷道前进方向

2 两条巷道间节点处连接

如图3所示,为巷道A0O和巷道B0O相交,A0O、B0O为巷道中线,交点为O,A1A2A3A4和B1B2B3B4是由单线巷道生成的双线巷道,可见在生成双线巷道时巷道两个帮线出现了重叠和相离的情况,因此,在构建三维巷道体时也会出现体与体之间的空间重叠和相离现象。这样会导致模型的失真,同时也影响在巷道体内的漫游。所以,在进行三维模型建立前必须对重叠和相离现象进行处理,即对重叠部分进行裁剪;对相离部分进行连接。算法思想如下:

图3 两条巷道节点处二维平面图

确定重叠部分和相离部分:在处理之前必须将重叠部分和相离部分确定出来。如图4所示,巷道由A0→O→B0,箭头表示数据存储顺序前进方向,规定巷道沿前进方向左手边称巷道左边,右手边称巷道右边,α为巷道A0O与巷道B0O之间的夹角,由此我们可以根据以下进行判断:

图4 巷道前进方向与夹角示意图

图5 处理后两条巷道间节点处二维平面图

经处理后巷道节点二维平面图如图5所示。

计算帮线交点O1点坐标:通过α值可以判断出O1点所处位置,如图3,然后将重叠端A4O1和B4O1的偏移量裁去,得出如图5所示的巷道。O1点坐标由已经计算出的截面坐标进行计算,即为线段A1A4和线段B1B4的交点坐标。

A1A4和B1B4的坐标为已知点坐标,使用向量法即可得出O1的坐标;

A1O1∥O1A4

B1O1∥O1B4

巴兰对自己的贡献始终非常谦虚。他曾将互联网比作由许多人历经多年建造的大教堂,不断有新人加入其中,每个人都在旧基础之上添砖加瓦。每人都会说我建造了一个大教堂。他说:“如果你不注意,就会骗自己相信你做了最重要的工作。但现实情况是,每一项贡献都建立在先前工作的基础之上,一切都与其他事物息息相关。”

更新巷道截面坐标点数据:得到O1点坐标后,根据截面12个点的分布,找出与O1点对应的坐标A[0,i],求出坐标的增量Dx、Dy,然后遍历截面坐标统一加减Dx、Dy,以替换原有的界面坐标,作为巷道三维建模的截面数据。本文弧顶圆曲线采用∏/8离散化方式,离散化巷道截面图如图6所示。

图6 ∏/8离散化后截面图

OQ左侧拱形5个离散点坐标(1<=n<=5):

OQ右侧拱形5个离散点坐标(6<=n<=10):

连接各对应点生成巷道体:得到处理后巷道的两个截面点数据后便可以建立三维巷道模型,根据连接节点的方法,将连接相邻两截面点构建三角面,最终实现三维巷道模型。

3 巷道间节点处缝合(两条巷道间节点处缝合)

在巷道节点连接处重合部分处理完后,另一帮面必然出现相离的现象,所以要对出现相离的一端进行缝合,使巷道形成一个封闭的体域。两条巷道节点处两个截面都有对应的坐标,只需将新的截面坐标相互连接形成四边面即可[4]。若不考虑无用面可从0点到12点依次进行构四边形面,但是这样回形成一个只有两点的四边形面,为A0A1B0B1面,因为A0与B0重合,A1与B1重合;若考虑剔除这个无用的面,首先在判断交点位置时给予标示,无用面得形成无非是A0A1B0B1或者A10A11B10B11,把握好在那一边即可剔除。同时,底面也需要缝合,理论上底面也是四边形面,但是A0与B0或者A11与B11始终会有一对是交点,所以底面形状上只是一个三角面。流程图如图7所示。

图7 两条巷道节点处缝合

无论在节点处为几条巷道相交,方法和三条巷道相交处理是完全相同的,先进行巷道分离,然后再进行巷道的缝合,使得三维巷道体能够形成一个封闭的体域。如图8、图9为巷道节点连接方式及缝合的过程图。

4 OpenGL实现三维建模

OpenGL是一个底层图形库规范。它为程序员提供了一个小的几何图元(点、线、多边形、图片和位图)库和一个支持2D/3D几何对象绘图命令库[5],通过所提供的图元和命令来控制对象的呈现(绘图)。OpenGL图形基础元素和GIS的相同,并具有强大的三维功能,坐标变换,模型构建、视口移动,渲染等。

图8 RGBA模式两条巷道节点连接及缝合图

图9 RGBA模式两条巷道节点连接及缝合图

线条元素构建函数:

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();

面状元素构建函数:

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();

5 结 论

三维矿井巷道体间节点连接算法的研究对井下三维巷道自动化建模具有十分重要的意义,它可以使用井下巷道基本的中线坐标信息快速建立模型[8],并对三维模型节点处进行处理,使得整个三维模型形成封闭、平滑的模型体。大大解放了手工建模的工作[10-11]。本文主要对三维模型巷道间连接处处理方法的研究,通过算法自动完成节点处模型的缝合处理。本人使用C#连接OpenGL图形库,对生成的模型进行了可视化 ,同时实现了模型的三维漫游、旋转等操作 ,并利用实际工程中的矿井中线坐标数据对该构模方法进行了测试 ,其建模速度快 ,且建立的模型层次分明,无重叠部分,建模结果有效表明该方法有一定的可靠性,所以该方法在三维巷道建模中有广泛的实用性。

猜你喜欢
偏移量中线交点
基于格网坐标转换法的矢量数据脱密方法研究
阅读理解
课本内外
课本内外
——书写要点(三)
基于AutoLISP的有轨起重机非圆轨道动态仿真
卷烟硬度与卷接、包装工序相关性分析
课本内外
借助函数图像讨论含参数方程解的情况
试析高中数学中椭圆与双曲线交点的问题
以南北地震带为例研究面向地震应急的宏观震中与微观震中偏移模型