长江大学学报(自科版)理工卷2007年3月第4卷第1期 Journal of Yangtze University(Nat Sci Edit)Sci&Eng V Mar.2007.Vo1.4 No.1 ・85・ Grid三维曲面构造与显示的算法及实现 朱建l晖 (苏州大学计算机科学与技术学院,江苏苏州21 5006) 范益进(罕 主蕃 江苏无锡 ,) [摘要]由于存在很大的随机性,采用较为简单的加权方法来建立规则网格Grid格式数据体对三维空间地 形进行近似描述.利用()penGL技术构造Grid数据体三维地形,并对构造出的三维空间曲面进行平移、 缩放、旋转等自由变换.提供最多6个切面对三维空间曲面进行任意切割的算法.结合地质演化需要, 利用双缓存技术实现了地质要素三维曲面动态演化过程。 [关键词]三维曲面;Grid数据体;()penGL技术 [中图分类号]TP391.41 [文献标识码]A [文章编号]1673—1409(2007)01一N085—03 准确描述地质领域某地层面三维空间形态是不容易的,这是因为地质勘探技术的局限,只能获得地 下某地层空间形态有限的控制点,达不到密集取值的程度;另外由于地球动力学演化的影响,地层在经 历多次拉张或挤压后形成非常复杂的曲面形态,这种曲面用简单的Bezier曲面或B样条曲面法是无法 表达的。基于这些考虑,笔者采用水平面投影呈规则网格的数据体来拟合地层空间曲面的三维形态,利用 OpenGL技术 实现这种规则网格的三维曲面描述,动态展示各种地质要素模拟计算结果的显示过程。 1 Grid数据体生成与三维曲面绘制算法 1.1 Grid数据体生成算法 所用Grid数据格式是美国Golden软件公司推出的Surfer软件所提供描述三维空间曲面的数据结 构,该格式在气象、水利、地理、地质等多个行业中被广泛运用,其特点是结构简单易于描述,尤其适 用于不规则曲面或无法用数学函数来表达的空间曲面n]。其数据格式是用水平面投影为规则正方形或长 方形的4个角点值来控制,这4个角点组成了一个空间平面,若干个空间平面组成三维空间曲面,空间 平面单元如果足够小就能逼近期望得到的三维空间曲面。 利用有限的空间离散控制点直接描述某个地层界面会形成很大误差,往往要通过各种各样的插值来 弥补控制点之间的空缺。许多学者在尝试用三角剖分法来解决类似地层界面形态的地质问题,但是由于 地层界面形态并不是简单的初等解析关系,利用三角剖分并不能达到更加理想的效果,反而复杂了计算 过程,增加了算法的复杂度。笔者采用较为简单的对距离进行加权的算法,进行某个地质要素的网格 化。其算法(流程图如图1)如下: 1)以界内待求网格点为中心,搜索2倍X、y轴网格单位范围内的控制点,记录搜索到的控制点, 如果找到的点数不足2O个,那么扩大搜索的长和宽范围继续寻找,直到搜索覆盖所有控制点。 2)为了网格化节点要素值的合理性,设定网格化最少控制点数为lO个点,即如果控制点数少于 lO个,那么计算出的网格节点值大多情况下是不合理的,将不进行网格化。 3)将搜索到的控制点按照与待求网格点的距离从小到大排序,取距离值较小的lO个控制点,记录 各个距离值以及这lO个点的地质要素值。 4)设搜索到的控制点为,z个,每个点地质要素值为 ,该点与待求网格点的距离为rI,则网格点( ,_『) 地质要素值为: [收稿日期]2006—12—28 [作者简介]朱建辉(1970一)。男,1992年大学毕业,高级工程师,现主要从事石油勘探行业中盆地数值模拟方面的研究工作。 维普资讯 http://www.cqvip.com
・86・ 长江大学学报(自科版)理工卷 2007年3月 圈1 Grid数据体的计算漉程 z(i,.『)=∑ 1 1 —t 磊 1.2地质要素三维曲面绘制算法 地质要素三维自由面的绘制是通过读人Grid数 据,然后转换成OpenGL可显示坐标,经过光照、着 读入要素数据 色处理来真实再现的。该算法(流程图如图2)如下: 数据处理(转换成OpenGL 可显示的坐标数据) 1)读入Grid数据地质要素的三维显示均是依附 于地层埋深状态表示的,因而大多情况下要读人2类地 熙处 _.1 两 三 1 着色渲 质要素的Grid数据,如读人埋深Grid和温度Grid数据 实现真实感三维地形 来显示某个时刻某个地层的温度变化情况。 对Grid数据进行读取后,通过输人网格间距实际 圈2三维要素空间构造设计漉程 大小可得到地形数据大地坐标的相对值(x,Y,Z)。为了使这个三维体在OpenGL坐标系中成比例显示, 必须对网格X,y值及三维深度值(即Z值)作一致性处理,首先要将大地坐标的地形数据(X,y,Z)转换为 观察坐标空间的数据,然后把地形景物放置于观察坐标系中的合适位置,并设置好视点以作为基准点观察 地形景物。 2)数据处理(转换成OpenGL可显示的坐标数据) 根据初始时OpenGL的场景设置(glOrtho (--300,300,一300,300,0,5000)),设置X,y和Z方向的每个单元格的大小。X,y的单元格大小由所 有读人Grid数据的X,y和Z方向的最大和最小值决定: fcellx一(((fmaxx—fminx)/fdistancexy)*(MAXWIDTH—MINWIDTH))/(icolumn—1); fcelly=(((fmaxy—fminy)/fdistaneexy)*(MAXWIDTH—MINWIDTH))/(irow—1); fcellz一(MAXHE1GHT—MINHE1GHT)/(fmax ̄一fminz); fdistancexy为所有Grid数据的x、y方向的最大和最小值之差;MAXWlDTH、MINWlDTH为在 OpenGL场景中X、y方向设定的最大值、最小值;MAXHEIGHT、MINHEIGHT为在OpenGL场景 中Z方向设定的最大值、最小值。 3)构造网格三维体 网格三维体通过每3个邻近的点构成三角形来绘制,一次绘制一个网格数据, 每个网格数据由4个点组成,形成2个三角形。然后根据每个节点场类型值来确定每个网格的颜色。具 体描述方法是:首先建立颜色划分区对应表,然后将每个网格4个节点场值进行平均,作为该网格四边 维普资讯 http://www.cqvip.com
第4卷第1期 朱建辉等:Grid三维曲面构造与显示的算法及实现 形场值,再根据颜色与区间值对应关系确定每个网格的颜色,从而对深度场或其他要素场进行渲染。 根据构造出的三维数据体绘制动态交互式图形,需要建立平滑移动的图像,这可以通过“双缓存” 系统来解决,即一个存储区域用来放置屏幕上绘制的图像,另一个存储区域用来绘制下一幅图像,绘制 结束后即交换缓存 ]。OpenGL支持这种“双缓存”,当准备显示幕后缓存中的内容时,调用Swap— Buffers命令,将后缓存中的内容与前缓存进行拷贝,这样就可以达到屏幕上图形平滑地过渡。 2三维曲面视图变换模型与裁剪模型 2.1视图显示技术 用OpenGL绘图需要通过“绘制场景”(RenderingContext,RC)完成三维图形的绘制。Windows 的窗/21和设备场景支持位图格式属性,只要在创建RC时与一个DC(DeviceContext)相关联,即可通 过RC对应的DC调用OpenGL函数绘制到相应的显示设备上。 具体编程环境要进行象素格式、着色描述表以及物体观察场景的设置,OpenGL提供的一个PIX— ELFORMATDESCRIPT0R结构描述特定的象素格式,它包含了颜色位数、颜色模式、缓存的位数和 操作方式以及是否采用双缓存机制等重要信息。程序的编制通过函数ChoosePixelFormat选择DC所支 持的位图格式,用函数SetPixelFormat进行设置,然后调用Windows专用函数wglCreateContext创 建,并用wglMakeCurrent函数创建RC与DC之间的联系。编程时必须注意一个线程只能拥有一个 RC,用户如果在一个线程内对不同设备绘图,只能通过更换与RC对应的DC来完成。DC位图格式与 窗/21是一一对应的,任何时刻只能利用一个DC,需要通过更换DC达到变换窗/21显示的目的 ]。 2.2视图的平移、旋转和缩放 视图的平移和旋转算法比较简单,主要是通过窗口鼠标事件FormMouseDown、FormMouseMove 以及FormMouseUp来实现。在FormMouseDown事件中记录鼠标左键按下时的位置,利用Form— MouseMove计算鼠标实际的移动量,进而计算视图在OpenGL中的位移量或旋转量,调用重绘事件刷 新窗/21,然后通过FormMouseUp存储鼠标偏移量为下一次平移或旋转作准备。视图的缩放可以通过移动 TrackBar滑块来实现,在设定滑块范围的基础上,根据移动后滑块的位置来确定某个轴的放大缩小量。 2.3视图切割 所谓视图切割就是设定不同平面切割三维体,可选择地显示被分割的任一部分,达到显示三维体内 部结构的目的。主要算法是切割面的形成和切割面的移动。切割面形成是通过对显示三维体外接长方体 任意三条棱进行切割点选取,然后依据3点形成切割平面,该算法中切割点的选取和保存是关键,仅要 注意当选点被撤销时,要重新调用Paint()事件进行重绘;切割面的移动是通过移动切割点来实现的, 每个切割点移动均带来相邻2条边的移动,移动后重新求解切割面方程,计算出切割面与长方体对角棱 边的交点。 3结 语 结合地质研究的实际情况而实现的这种三维显示方法,虽然数据结构设计相对简单,但避免了采用 三角剖分等方法适应地质情况复杂性所带来的算法复杂度,通过网格加密利用OpenGL技术同样可以 达到了简洁实用的效果。 [参考文献] [1]白世彪。间国年,杨一鹏.关于ArcGIS和Surer格网文件的转换方法[J].测绘通报。2005,(2):48 ̄54. [2]李颖。薛海斌,朱伯立等.OpenGL技术应用实例精粹[M].北京;国防工业出版社。2001. [编辑] 易国华
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务