张静
摘 要:在以往的计算机方法境界圈定中都需建立矿块模型,逐个块段扫描导致运算速度慢,不能满足大数据量计算,该文针对以上问题在建模方面采用了矿体表面模型,该模型采用一种再现传统手绘的建模方法,通过一系列平面图或剖面图的矿体边界多边形进行线框建模技术来描述矿体空间分布即线框构模法。在读取平面图或剖面图中矿体边界多边形的工作中需要运用图形学、分形学等理论,实现了对矢量图形图元素的提取。完成矿岩多边形提取后便可以利用线框构模法进行矿体线框模型的建立,最后利用OpenGL技术对线框模型进行填充,生成矿体表面模型。
关键词:矿体表面模型 图形学 线框构模法
中图分类号:P623 文献标识码:A 文章编号:1672-3791(2015)06(c)-0101-02
目前在露天矿山中使用的计算机境界圈定方法大部分是浮动圆锥法和图论法。浮动圆锥法、图论法都需建立矿块经济模型,利用一定的算法将整个矿床进行分割成矩形的块体,再利用计算机逐个扫描各个块体的经济净值,确定可采部分。该方法确实较为准确的计算出矿床的经济开采价值,但是只能应用于数据量较小的矿床,由于大部分矿山数据量巨大,所以对于海量的矿山数据还是有心无力。该文采用矿体表面模型技术取代矿块模型,不仅用于三维显示,而且用于矿岩量的计算,在这方面做了一次尝试,经实践,这种模型速度快、精度高。
1 构建矿体表面模型的步骤
(1)利用VB开发语言编写程序自动读取DXF数据格式的分层平面图,并进行重绘。将各层矿体边界多边形折点坐标、各层矿体连接的属性信息保存到数据库中;
(2)利用线框构模法对读取的分层平面图中的矿体边界多边形数据,结合连接属性信息构造线框模型;
(3)结合OpenGL技术对构建的线框模型进行表面填充,生成最终的矿体表面模型;
(4)利用体积法计算矿体储量。
2 矿体表面模型的建立
2.1 DXF格式数据读取与重绘
读取DXF格式的各水平分层平面图是为了将各层的图形文件以坐标的形式存储到数据库中,再利用程序进行图形的重绘。
DXF格式数据中包含多种图元类型,由于该文主要研究对象是矿山水平分层平面图,其中的图元要素主要由多段线绘制的不规则多边形组成,所以我们只关心多段线坐标与属性的读取与重绘。从DXF文件读取POLYLINE的算法流程如图1。
利用VB开发工具按照上述流程编写程序读取DXF文件中矿体多边形折点坐标,将其坐标信息、各层矿体连接属性信息保存到数组或数据库中。
程序中主要的数据结构如下:
Type DataSet
Key As Integer
Value As Variant
End Type
Type Geometry
Type As String
Data() As DataSet
End Type
Type Block
Name As String
Entities() As Geometry
End Type
Type DXFData
Blocks() As Block
Entities() As Geometry
End Type
利用绘图函数LINE或者LINETO读取数据库或数组中的几何坐标按照前后顺序信息逐个连接起来绘制出闭合的矢量图。
2.2 建立矿体线框模型
利用读取与重绘的分层平面图的矿体边界多边形(如图2),结合其连接属性利用三角网算法建立矿体线框模型。
图2中每一个封闭的多边形为这一水平层的矿体边界多边形,构造矿体线框模型的方法是以一个平面的封闭多边形为基面,选择其邻近面的封闭多边形利用“外接矩形等分法[1]”,确定两层的封闭多边形边界点与点的对应关系,连接相邻两层多边形边界的折点坐标,最后建立一个个的小三角形,这样递归运算将所有水平层的封闭多边形依此方式计算,最后形成矿体线框模型,如图5。
外接矩形等分法介绍如下:
利用外接矩形将相邻的两层封闭多边形进行等分,这样等分线便会与封闭多边形边界产生若干个新的交点,两层新产生的交点便具有一一对应的关系。原理如下:首先以一个分层的封闭多边形做外接矩形,对此外接矩形进行等分,多边形边界与等分线出现交点分别为(a1,a1),(a2,a2)……(an,an)如图3。
选取相邻分层,找到具有相同连接属性的矿体多边形同样做外接矩形,进行等分,其交点为(b1,b1),(b2,b2)……(bn,bn)如图4所示。从两图中可以看出等分交点对应的关系,即a1-b1,a1-b1,a2-b2 ,a2-b2……an-bn,an-bn。
确定好相邻分层多边形的等分交点对应关系后,取其对应关系的两点中的一点做为基准搜索离该点最近的另一个点,利用这三个点建立三角形,如此进行循环,最后形成了一个表面为三角网的线框模型,如图5。将所有三角形按照编号保存到定义的集合当中。定义的三角形集合数据结构如下:
Type TIN
a() as POINT
b() as POINT
c() as POINT
No as long
EndType
2.3 建立矿体表面模型
线框模型是利用网状表面来反映矿体模型的外观的,是建立表面模型的基础,将线框模型进行表面化可以利用OpenGL[2~3]的图形库,调用glPolygonMode函数,以GL_FILL作为参数逐个调取集合中的三角形,填充各个三角形,构造矿体表面模型,如图6。具体算法如下:
(1)设置状体变量;
(2)从数据库中搜索第i个平面的第m顶点,根据“外接矩形等分法”得到的第i+1平面上与m顶点有对应关系的顶点n,再以m进行搜索,找到距其最近的另一点m+1;
(3)以m、m+1、n三点绘制三角形,并进行填充;
(4)对m进行递增,m=m+1,重复步骤(2),直至第i水平与第i+1水平之间被三角面包围;
(5)对i进行递增,i=i+1,重复步骤(2),直至所有的水平分层之间被三角面包围。最后形成6所示的矿体表面模型。
2.4 矿体储量计算
建立的矿体表面模型主要是利用DXF文件中的矿体边界多边形经过三角化处理、OpenGL填充最终构造出三维模型。建立好矿体表面模型后可以通过各分层不规则矿体边界多边形的面积与各个分层间的高度计算矿体的体积,该方法严格按照矿体实际走向而计算的,所以其计算结果准确。主要公式如下:
式中:为第点坐标;
为多边形节点数;
通过上式可以求出各个水平层封闭多边形的面积,采用微积分原理将各个水平的高度进行微分计算,再经过积分处理便得到了接近真实的矿体储量。其矿体储量计算公式如下:
式中:为第层的闭合多边形面积;为各个水平的间距。
通过上述公式的计算便能够得到地下矿体的体积储量。
3 结语
根据该文的研究利用VB开发语言编写程序读取和重绘各分层水平图的矿体多边形;利用线框构模法构建矿体线框模型;结合OpenGL图形库对线框模型进行表面填充,生成矿体表面模型;最后利用体积法根据矿体的实际走向计算出矿体的储量,经过真实的矿山数据验证,矿体表面模型运算速度快,计算准确。
参考文献
[1] 吴慧欣.三维建模技术的研究与应用[D].西安:西安建筑科技大学,2004.
[2] 屈红刚,潘懋,马照亭,等.基于OpenGL的3维场景矢量打印输出研究与实现[J].测绘通报,2006(5):67-70.
[3] 吴斌,毕丽蕴.OpenGL编程实例与技巧[M].北京:人民邮电出版社,1999.