三维地质模型中任意点交互选取的辅助线段滑块法的制作方法

文档序号:6459997阅读:202来源:国知局
专利名称:三维地质模型中任意点交互选取的辅助线段滑块法的制作方法
技术领域
本发明属于地质测绘领域,尤其涉及一种三维地质模型中任意点交互选取的辅助线段滑块法。

背景技术
三维地质模型的交互可视化与空间分析是当前地学领域最为广泛的研究方向之一,其实现的关键是模型中任意点的空间精确定位。由于鼠标所捕捉到的计算机屏幕像点(x,y)与三维空间坐标(X,Y,Z)不具备唯一对应关系,从而使得这项工作的难度大为增加。


发明内容
为了解决上述问题,本发明提出了一种三维地质模型中任意点交互选取的辅助线段滑块法。本发明采用广义三棱柱(GTP)构建的三维地质模型,包括(1)构建地表面TIN;(2)扩展生成GTP;(3)转换剖分GTP。本发明的技术方案为1、屏幕捕捉点到选取直线的转换,通过鼠标点击屏幕上三维地质模型表面点,可以获得该点的屏幕窗口坐标(Winx,Winy)。在三维屏幕坐标系中,上述鼠标点击屏幕所选中的实际是一条由屏幕垂直向里的直线,我们称之为选取直线,只有完成屏幕点向选取直线的转换,才能实现三维地质模型中任意点的选取;2、三维地质模型中辅助线段的建立,获得选取直线后,即可计算直线与地质模型的交点,从而建立辅助线段,由于所建的三维地质模型是由GTP剖分而成的四面体集合所组成,物体坐标系下选取直线与地质模型的求交实际上是直线与三角形的求交过程。为提高求交效率,增强交互的实时性,这个过程可分为两步,第一步是先判断直线与三角形是否有交点;第二步是如果有交点,再计算具体的交点。3、通过辅助线段的获得,可以计算出辅助线段上两端点Pi和Pj的三维物体坐标,设Pi的坐标为(xi,yi,xi),Pj的坐标为(xi,yi,zi),则在物体坐标系下从Pi到Pj三维坐标的变化是线性的(在屏幕坐标系则不一定),通过设计一个滑块在辅助线段上自由移动,则可实现辅助线段上任意点的交互选取。
通过本方法实现了三维地质模型中任意空间点的交互精确选取。



图1为空间透视投影 图2为辅助线段滑块法的实现
具体实施例方式 如图1、图2所示1、屏幕捕捉点到选取直线的转换,通过鼠标点击屏幕上三维地质模型表面点,可以获得该点的屏幕窗口坐标(Winx,Winy)。在三维屏幕坐标系中,上述鼠标点击屏幕所选中的实际是一条由屏幕垂直向里的直线,我们称之为选取直线,只有完成屏幕点向选取直线的转换,才能实现三维地质模型中任意点的选取,进行三维地质模型的显示时采用的是OpenGL中透视投影的方法,这个过程类似于用一台相机拍摄照片,相机所在的位置就是我们的眼睛所在的视点V位置,前裁剪面ABCD就是屏幕所在的位置,后裁剪面A’B’C’D’就是能看到的最远处,后裁剪面和前裁剪面构成了平截台体ABCDA’B’C’D’,后裁剪面与视点之间的棱锥就是视锥体V A’B’C’D’。只有落在平截台体内的物体在屏幕上才能显示,平截台体以外的物体将被裁剪掉。透视坐标系原点位于屏幕中心水平向右为x轴正方向,竖直向上为y轴正方向,z轴的正向垂直于屏幕向里。OpenGL把z窗口坐标的取值按
处理,即位于前裁剪面ABCD上z值为0,而在后裁剪面A’B’C’D’上z值为1.0。由上面鼠标点击屏幕所选中的(Winx,Winy),可以方便地得到屏幕坐标系直线上两点(Winx,Winy,0)和(Winx,Winy,1)。三维地质模型中的点变换到屏幕上的像素点,要依次经过模型变换、视图变换、透视投影变换、视口变换等一系列过程;相应的从真实的三维空间坐标变换到窗口坐标需要经过世界坐标系、人眼坐标系、透视坐标系、设备坐标系和窗口坐标系等多种坐标系的转换。从屏幕窗口坐标变换到物体坐标则是其逆过程。OpenGL提供了两个函数gluUnProject()和gluProject(),用以实现屏幕坐标与物体三维坐标之间的变换。由于三维地质模型在实际的可视化操作中,可能经历了一系列的变换,要计算这些变换并不是很容易的事。由OpenGL提供的两个函数glGetDoublev()和glGetInteger(),可以使这些变换变得相当容易,其中glGetDoublev()用于获得当前的模型矩阵,glGetInteger()用于获得当前的投影矩阵。将这两个函数所获得的参数代入函数gluUnProject(),可以将上述两屏幕坐标点转换为对应物体坐标中的两点,从而得到对应选取直线OO’。2、三维地质模型中辅助线段的建立,获得选取直线后,即可计算直线与地质模型的交点,从而建立辅助线段,由于所建的三维地质模型是由GTP剖分而成的四面体集合所组成,物体坐标系下选取直线与地质模型的求交实际上是直线与三角形的求交过程。为提高求交效率,增强交互的实时性,这个过程可分为两步,第一步是先判断直线与三角形是否有交点;第二步是如果有交点,再计算具体的交点。对于第一步,只需将空间三角形投影到屏幕,然后判断物体坐标系点Q(屏幕坐标系下的点P变换而成)在屏幕上的投影是否在三角形内。在二维坐标系下,判断一个点是否在三角形可采用矢量面积法[8]。经过第一步的判断后,如果一个空间三角形T{v1,v2,v3}(v1,v2,v3是组成该三角形的3个顶点)和选取直线有交点,则可根据空间直线与三角形的求交算法计算交点,其实现的伪代码如下 //鼠标点击的屏幕点坐标保存在CPoint类型变量point中; glGetDoublev求得模型矩阵、视图矩阵、投影矩阵; gluUnProject将(point.x,point.y,0)及上述求的各矩阵传给gluUnProject得到0’的三维坐标; gluUnProject将(point.x,point.y,1.0)及上述求的各矩阵传给gluUnProject得0的三维坐标; triangle=三角形链表头; while(triangle!=三角形的链表尾) { for(三角形的三个顶点) {用函数gluProject将三角形triangle顶点转化为屏幕坐标保存在数组p[i]中;} i(f(p
、p[1]、p[2]组成的三角形是包含点point) {利用空间解析几何知识计算空间直线OO’与三角形triangle交点的三维坐标,保存在坐标结构数组pickpoint[i]中,该三角形三个顶点转化为屏幕坐标的z坐标的平均值保存在数组z[i]中;} 经过上述计算,将得到一系列与地质模型的交点,称作交点集。与选取直线OO’存在交点的三角形屏幕坐标的z值已保存在数组z[i]中,z[i]的大小代表在当前状况下三角形距离屏幕的远近,可以按照z[i]的大小进行空间点的排序。交点集排序具体实现的代码如下 for(inti=1;i<=n;i++)//n为交点集的个数 { for(intj=1;j<=n-i;j++) { if(z[j]>z[j+1]) { z1=z[j];//z1为过渡变量 temp=pickpoint[j];//temp过渡变量 z[j]=z[j+1]; pickpoint[j]=pickpoint[j+1]; z[j+1]=z1; pickpoint[j+1]=temp; } } } 通过对交点集的排序,交点集中z[j]最小的点就是离屏幕最近的点Pi,最大的点就是离屏幕最远的点Pj,PiPj为选取直线与地质模型求交后获得的线段,称为辅助线段。3、通过辅助线段的获得,可以计算出辅助线段上两端点Pi和Pj的三维物体坐标,设Pi的坐标为(xi,yi,zi),Pj的坐标为(xi,yi,zi),则在物体坐标系下从Pi到Pj三维坐标的变化是线性的(在屏幕坐标系则不一定),通过设计一个滑块在辅助线段上自由移动,则可实现辅助线段上任意点的交互选取。设鼠标在辅助线段上滑动到某一点Pm(xm,ym,zm),该点与Pi距离为dm,则由空间解析几何知识可以求得Pm的物体坐标(xi,yi,zi)为 其中d为辅助线段PiPj的长度, 图2为辅助线段滑块法实现图。图中屏幕左侧为地质模型显示窗口,右侧为信息显示窗口。通过鼠标指示箭头在左侧窗口内的地质模型表面任意选定一点时,则建立了由所选点向内的一条选取直线。通过上面的算法由程序自动计算选取直线穿过每一地层距离与总的距离,按相应的比例和颜色显示在右侧窗口地层条上。地层条即为辅助线段,它显示了辅助线所经过的相应地层属性与厚度信息。在地层条上设置一个滑块,其初始位置在滑动条的最上端,即三维地质模型的表面。通过滑块的位置与地层条长度比较,可以显示此时选取的点在地层内的空间位置,指示箭头随着滑块的滑动则沿辅助线段在三维地质模型中滑动,相应的三维坐标也显示在右侧窗口中。根据显示的待选点的三维坐标信息,滑动到相应位置时停止滑动,按确定按扭,则完成了地质模型中空间点的交互精确选取。
权利要求
1.一种三维地质模型中任意点交互选取的辅助线段滑块法,采用广义三棱柱(GTP)构建的三维地质模型,包括(1)构建地表面TIN;(2)扩展生成GTP;(3)转换剖分GTP,其特征在于1、屏幕捕捉点到选取直线的转换,通过鼠标点击屏幕上三维地质模型表面点,可以获得该点的屏幕窗口坐标(Winx,Winy),在三维屏幕坐标系中,上述鼠标点击屏幕所选中的实际是一条由屏幕垂直向里的直线,我们称之为选取直线,只有完成屏幕点向选取直线的转换,才能实现三维地质模型中任意点的选取;2、三维地质模型中辅助线段的建立,获得选取直线后,即可计算直线与地质模型的交点,从而建立辅助线段,由于所建的三维地质模型是由GTP剖分而成的四面体集合所组成,物体坐标系下选取直线与地质模型的求交实际上是直线与三角形的求交过程。为提高求交效率,增强交互的实时性,这个过程可分为两步,第一步是先判断直线与三角形是否有交点;第二步是如果有交点,再计算具体的交点;3、通过辅助线段的获得,可以计算出辅助线段上两端点Pi和Pj的三维物体坐标,设Pi的坐标为(xi,yi,zi),Pj的坐标为(xi,yi,zi),则在物体坐标系下从Pi到Pj三维坐标的变化是线性的(在屏幕坐标系则不一定),通过设计一个滑块在辅助线段上自由移动,则可实现辅助线段上任意点的交互选取。
全文摘要
本发明属于地质测绘领域,尤其涉及一种三维地质模型中任意点交互选取的辅助线段滑块法。本发明的技术方案为1、屏幕捕捉点到选取直线的转换;2、三维地质模型中辅助线段的建立;3、通过辅助线段的获得,可以计算出辅助线段上两端点Pi和Pj的三维物体坐标,设Pi的坐标为(xi,yi,zi),Pj的坐标为(xi,yi,zi),则在物体坐标系下从Pi到Pj三维坐标的变化是线性的(在屏幕坐标系则不一定),通过设计一个滑块在辅助线段上自由移动,则可实现辅助线段上任意点的交互选取。通过本方法实现了三维地质模型中任意空间点的交互精确选取。
文档编号G06T17/05GK101762264SQ20081005133
公开日2010年6月30日 申请日期2008年10月27日 优先权日2008年10月27日
发明者任凌云, 林华, 罗卫华 申请人:任凌云
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1