CN103440434B - 一种大规模混合网格等值线的计算方法及系统 - Google Patents
一种大规模混合网格等值线的计算方法及系统 Download PDFInfo
- Publication number
- CN103440434B CN103440434B CN201310432215.6A CN201310432215A CN103440434B CN 103440434 B CN103440434 B CN 103440434B CN 201310432215 A CN201310432215 A CN 201310432215A CN 103440434 B CN103440434 B CN 103440434B
- Authority
- CN
- China
- Prior art keywords
- value
- contour
- grid cell
- summit
- line segment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Image Generation (AREA)
Abstract
本发明实施例提供一种大规模混合网格等值线的计算方法及系统,其中方法可以包括:依次遍历各个网格单元,根据各网格单元的各顶点的属性值以及当前等值线的值,确定各网格单元的各顶点的属性值与当前等值线的值的大小关系;对于各个网格单元,根据网格单元的类型以及网格单元的各顶点的属性值与当前等值线的值的大小关系,计算网格单元的等值线线段。本发明实施例提供的大规模混合网格等值线的计算方法减小了进行等值线计算的计算量,算法较为精简,同时具有很好的适用性。
Description
技术领域
本发明涉及网格数据处理技术领域,更具体地说,涉及一种大规模混合网格等值线的计算方法及系统。
背景技术
在地震层位建模和显示等许多实际应用中,需要对工程中涉及到的大量曲面上的等值线进行正确的计算和显示,以支持后续的分析、编辑等工作。网格是计算机中用于描述、构建和显示离散曲面最常用到的数学表示形式,网格的类型主要有三角形网格和四边形网格,其中,三角形网格的特点是可以描述任意拓扑结构的曲面,而四边形网格在进行数据分析的时候能够达到更高的精度。在实际应用中,通常在需要高精度的地方采用四边形网格进行描述,而在区域与区域之间结构比较复杂的地方采用三角形网格描述,因此,一个能够处理三角形和四边形混合网格的等值线的计算方式,对于地震层位建模和显示等许多实际应用具有重大意义。
目前,通常的网格等值线的计算策略是追踪法,即从每个网格单元出发,检查当前网格单元中是否有等值线,若有,则继续搜索其邻接网格单元上的等值线并将二者连接成一个整体的折线。由于现有网格等值线的计算方式需要通过网格间的连接关系追踪等值线,计算量非常大,这使得现有网格等值线的计算方法较为复杂,对于涉及到数据量异常巨大的实际应用时,难以利用现代高性能计算机的高速并行化处理能力,无法适应现代工程实际的需要;而且在地震层位解释等实际应用中,解释出来的层位曲面由于有断层的存在而经常出现碎裂的情况,不是一个整体连续的曲面,对于此种情况,现有利用追踪法计算网格等值线的方式将不再适用,现有的网格等值线的计算方式存在适用上的局限性。
发明内容
有鉴于此,本发明实施例提供一种大规模混合网格等值线的计算方法及系统,以解决现有网格等值线的计算方法计算量非常大,算法较为复杂,同时存在适用上的局限性的问题。
为实现上述目的,本发明实施例提供如下技术方案:
一种大规模混合网格等值线的计算方法,包括:
依次遍历各个网格单元,根据各网格单元的各顶点的属性值以及当前等值线的值,确定各网格单元的各顶点的属性值与当前等值线的值的大小关系;
对于各个网格单元,根据网格单元的类型以及网格单元的各顶点的属性值与当前等值线的值的大小关系,计算网格单元的等值线线段。
其中,所述根据各网格单元的各顶点的属性值以及当前等值线的值,确定各网格单元的各顶点的属性值与当前等值线的值的大小关系包括:
根据各网格单元的各顶点的属性值以及当前等值线的值,为属性值大于当前等值线的值的顶点赋予第一值,为属性值小于当前等值线的值的顶点赋予第二值;同时在网格单元的顶点为退化顶点时,为所述退化顶点赋予第二值。
其中,所述根据网格单元的类型以及网格单元的各顶点的属性值与当前等值线的值的大小关系,计算网格单元的等值线线段包括:
若网格单元的类型为三角形网格单元,并且所述三角形网格单元中的顶点属性值与当前等值线的值的大小关系不一致,则在顶点属性值与当前等值线的值的大小关系互异的两条边上,计算与当前等值线的值相匹配的两个插值点,将连接所述两个插值点的线段确定为所述三角形网格单元的等值线线段。
其中,所述根据网格单元的类型以及网格单元的各顶点的属性值与当前等值线的值的大小关系,计算网格单元的等值线线段包括:
若网格单元的类型为四边形网格单元,确定所述四边形网格单元中顶点属性值与当前等值线的值的大小关系互异的边上,与当前等值线的值相匹配的插值点;
若所述插值点的个数为两个,将连接所述两个插值点的线段确定为所述四边形网格单元的等值线线段;
若所述插值点的个数为四个,根据所述四边形网格单元的中心点的属性值,各顶点的属性值与当前等值线的值的大小关系,确定连接相邻两条边上的插值点的两个线段,将所述两个线段确定为所述四边形网格单元的等值线线段。
其中,所述根据所述四边形网格单元的中心点的属性值与当前等值线的值的大小关系,确定连接相邻两条边上的插值点的两个线段包括:
设所述四边形网格单元的四个顶点为a,b,c和d,v1为ab边上的插值点,v2为bc边上的插值点,v3为cd边上的插值点,v4为ad边上的插值点,Pa为顶点a的属性值,Pb为顶点b的属性值,Pc为顶点c的属性值,Pd为顶点d的属性值,当前等值线的值为Pcur,vc为所述四边形网格单元的中心点,vc点的属性值为Pvc;
若Pa>Pcur,Pb<Pcur,Pc>Pcur,Pd<Pcur,且Pvc>Pcur,则确定连接v1和v2的线段,及连接v3和v4的线段;
若Pa>Pcur,Pb<Pcur,Pc>Pcur,Pd<Pcur,且Pvc<Pcur,则确定连接v1和v4的线段,及连接v2和v3的线段。
其中,所述四边形网格单元的中心点的属性值的确定过程包括:
计算所述四边形网格单元的四个顶点的局部x-y坐标,及计算所述四边形网格单元的四个插值点的局部x-y坐标;
分别以所述四边形网格单元的四个顶点的各顶点属性值,及所述四边形网格单元的四个插值点的各插值点的属性值作为P值,以所述四个顶点的局部x-y坐标和所述四个插值点的局部x-y坐标作为x值和y值,带入二元二次方程P=k0+k1x+k2y+k3x2+k4xy+k5y2,得到包含8个方程,6个未知系数k0,k1,k2,k3,k4和k5的方程组;
计算所述方程组的最小二乘解,确定k0,k1,k2,k3,k4和k5的数值;
将所述四边形网格单元的中心点的局部x-y坐标带入二元二次函数k0+k1x+k2y+k3x2+k4xy+k5y2,求解出所述中心点的属性值。
其中,所述方法还包括:
将所计算的等值线线段的等值线数据存入到数据容器列表中,所述数据容器列表的一个容器存储有同一等值线线段的等值线数据;
在进行等值线显示时,调取所述容器存储的同一等值线线段的等值线数据,进行画线绘制,实现等值线的渲染。
本发明实施例还提供一种大规模混合网格等值线的计算系统,包括:
大小关系确定模块,用于依次遍历各个网格单元,根据各网格单元的各顶点的属性值以及当前等值线的值,确定各网格单元的各顶点的属性值与当前等值线的值的大小关系;
等值线线段计算模块,用于对于各个网格单元,根据网格单元的类型以及网格单元的各顶点的属性值与当前等值线的值的大小关系,计算网格单元的等值线线段。
其中,所述等值线线段计算模块包括:
三角形网格单元等值线计算单元,用于在网格单元的类型为三角形网格单元,且所述三角形网格单元中的顶点属性值与当前等值线的值的大小关系不一致时,在顶点属性值与当前等值线的值的大小关系互异的两条边上,计算与当前等值线的值相匹配的两个插值点,将连接所述两个插值点的线段确定为所述三角形网格单元的等值线线段;
四边形网格单元等值线计算单元,用于在网格单元的类型为四边形网格单元时,确定所述四边形网格单元中顶点属性值与当前等值线的值的大小关系互异的边上,与当前等值线的值相匹配的插值点;在所述插值点的个数为两个时,将连接所述两个插值点的线段确定为所述四边形网格单元的等值线线段;在所述插值点的个数为四个时,根据所述四边形网格单元的中心点的属性值,各顶点的属性值与当前等值线的值的大小关系,确定连接相邻两条边上的插值点的两个线段,将所述两个线段确定为所述四边形网格单元的等值线线段。
其中,所述四边形网格单元等值线计算单元包括:
中心点属性值确定单元,用于计算所述四边形网格单元的四个顶点的局部x-y坐标,及计算所述四边形网格单元的四个插值点的局部x-y坐标;分别以所述四边形网格单元的四个顶点的各顶点属性值,及所述四边形网格单元的四个插值点的各插值点的属性值作为P值,以所述四个顶点的局部x-y坐标和所述四个插值点的局部x-y坐标作为x值和y值,带入二元二次方程P=k0+k1x+k2y+k3x2+k4xy+k5y2,得到包含8个方程,6个未知系数k0,k1,k2,k3,k4和k5的方程组;计算所述方程组的最小二乘解,确定k0,k1,k2,k3,k4和k5的数值;将所述四边形网格单元的中心点的局部x-y坐标带入二元二次函数k0+k1x+k2y+k3x2+k4xy+k5y2,求解出所述中心点的属性值。
基于上述技术方案,本发明实施例提供的大规模混合网格等值线的计算方法,可依次遍历各个网格单元,对于各个网格单元,可根据网格单元的类型以及网格单元的各顶点的属性值与当前等值线的值的大小关系,计算网格单元的等值线线段;相比于现有从每个网格单元出发,通过追踪法计算网格单元的等值线的方式,本发明实施例所需要的计算量相对较小,算法较为简单,同时对于不是一个整体连续的曲面的情况,不存在现有追踪法适用性上的问题。本发明实施例提供的大规模混合网格等值线的计算方法减小了进行等值线计算的计算量,算法较为精简,同时具有很好的适用性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的大规模混合网格等值线的计算方法的流程图;
图2为三角形网格单元的等值线线段确定示意图;
图3为本发明实施例提供的四边形网格单元情况下的等值线线段确定方法的流程图;
图4为确定二义性网格的等值线线段的示意图;
图5为本发明实施例提供的网格单元的中心点的属性值的确定方法流程图;
图6为本发明实施例提供的大规模混合网格等值线的计算方法的另一流程图;
图7为本发明实施例提供的大规模混合网格等值线的计算系统的结构框图;
图8为本发明实施例提供的大小关系确定模块的结构框图;
图9为本发明实施例提供的等值线线段计算模块的结构框图;
图10为本发明实施例提供的四边形网格单元等值线计算单元的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的大规模混合网格等值线的计算方法的流程图,参照图1,该方法可以包括:
步骤S100、依次遍历各个网格单元,根据各网格单元的各顶点的属性值以及当前等值线的值,确定各网格单元的各顶点的属性值与当前等值线的值的大小关系。
各网格单元的各顶点的属性值与当前等值线的值的大小关系主要为:顶点的属性值大于当前等值线的值,及顶点的属性值小于当前等值线的值;
为便于标识各顶点的属性值与当前等值线的值的大小关系,本发明实施例可对各顶点进行赋值以表示各顶点的属性值与当前等值线的值的大小关系,具体的,可根据各网格单元的各顶点的属性值以及当前等值线的值,为属性值大于当前等值线的值的顶点赋予第一值,为属性值小于当前等值线的值的顶点赋予第二值;同时在网格单元的顶点为退化顶点时,为所述退化顶点赋予第二值。
在本发明实施例中第一值和第二值的具体数值本发明实施例并不做限制,但第一值和第二值优选为互异的值,如第一值可采用正号(+),第二值可采用负号(-);即本发明实施例可依次遍历每一个网格单元,根据网格单元顶点的属性值以及当前等值线的值,为每一个顶点赋予一个正负标志,用来标识当前顶点的属性值与当前要计算的等值线的值之间的大小关系,在顶点的属性值大于当前等值线的值时,为顶点赋予正号标志,在顶点的属性值小于当前等值线的值时,为顶点赋予负号标志。
需要说明的是,本发明实施例可在网格单元的顶点为退化顶点时,为退化顶点赋予第二值,通过这种方式可以自然的处理退化顶点。
步骤S110、对于各个网格单元,根据网格单元的类型以及网格单元的各顶点的属性值与当前等值线的值的大小关系,计算网格单元的等值线线段。
本发明实施例提供的大规模混合网格等值线的计算方法,可依次遍历各个网格单元,对于各个网格单元,可根据网格单元的类型以及网格单元的各顶点的属性值与当前等值线的值的大小关系,计算网格单元的等值线线段;相比于现有从每个网格单元出发,通过追踪法计算网格单元的等值线的方式,本发明实施例所需要的计算量相对较小,算法较为简单,同时对于不是一个整体连续的曲面的情况,不存在现有追踪法适用性上的问题。本发明实施例提供的大规模混合网格等值线的计算方法减小了进行等值线计算的计算量,算法较为精简,同时具有很好的适用性。
目前,网格单元的类型主要为三角形网格单元和四边形网格单元,下文将对三角形网格单元和四边形网格单元情况下的具体网格等值线的计算方法进行描述。
在网格单元的类型为三角形网格单元,并且三角形网格单元中的顶点属性值与当前等值线的值的大小关系不一致时,可在顶点属性值与当前等值线的值的大小关系互异的两条边上,计算与当前等值线的值相匹配的两个插值点,将连接所述两个插值点的线段确定为所述三角形网格单元的等值线线段;
以在网格单元顶点的属性值大于当前等值线的值时,为网格单元的顶点赋予正号,在网格单元顶点的属性值小于当前等值线的值时,为网格单元顶点赋予负号为例;参照图2,图2为三角形网格单元的等值线线段确定示意图,如果当前网格单元是三角形,则网格顶点的属性值相对于当前等值线的值的关系有两种情况:第一种,三个顶点均同号;第二种,有一个点具有一种符号而另外两个点具有另外一种符号(例如,一个是正号网格点,而另外两个是负号网格点)。对于第一种情况,则说明三角形网格单元的顶点全为正或全为负,其表明当前三角形网格单元内不存在等值线线段,可继续检测下一个网格单元;对于第二种情况,必然有两组邻接点异号,并且这两组邻接点必然有一个公共点,这三个点共同构成两个邻接边,每条边上有一个与当前等值线的值相匹配的插值点,即共可得出两个插值点。因此,只需将这两条边上的插值点连接起来,即可得到当前三角形网格单元的等值线线段。
图3示出了四边形网格单元情况下的等值线线段确定方法的流程图,参照图3,四边形网格单元情况下的等值线线段确定方法可以包括:
步骤S200、确定所述四边形网格单元中顶点属性值与当前等值线的值的大小关系互异的边上,与当前等值线的值相匹配的插值点;
步骤S210、若所述插值点的个数为两个,将连接所述两个插值点的线段确定为所述四边形网格单元的等值线线段;
步骤S220、若所述插值点的个数为四个,根据所述四边形网格单元的中心点的属性值,各顶点的属性值与当前等值线的值的大小关系,确定连接相邻两条边上的插值点的两个线段,将所述两个线段确定为所述四边形网格单元的等值线线段。
以在网格单元顶点的属性值大于当前等值线的值时,为网格单元的顶点赋予正号,在网格单元顶点的属性值小于当前等值线的值时,为网格单元顶点赋予负号为例;在当前网格单元为四边形时,网格顶点的属性值相对于当前等值线的值的关系有三种情况:第一种,一个顶点是一种符号而另外三个顶点是另外一种符号(例如,一个是正号网格点,而另外三个是负号网格点);第二种,两个顶点是一种符号而另外两个顶点是另外一种符号,并且同号点是相邻的(例如,两个正号点相邻,两个负号点相邻,网格顶点的符号顺序是:正正负负);第三种,两个顶点是一种符号而另外两个顶点是另外一种符号,但同号顶点是间隔排列的(例如,两个正号点,两个负号点,但网格顶点的符号顺序是:正负正负);
对于上述第一种情况和第二种情况的等值线线段确定方式,与三角形网格单元的等值线线段确定方式类似;上述第一种情况和第二种情况下,都是在每个具有异号顶点的网格边上通过线性插值计算等值线的点,即计算出顶点属性值与当前等值线的值的大小关系互异的边上,与当前等值线的值相匹配的插值点,计算出的插值点的个数共有两个,直接将计算出来的两个插值点连接起来即是当前四边形网格单元中的等值线;
对于第三种情况可以认为是一个二义性网格,为便于理解本发明实施例处理二义性网格单元的优异性,下面对现有采用等值线追踪算法处理二义性网格的处理方式及所存在的问题进行介绍:所谓二义性是一个四边形网格的四条边上均存在等值点的情况,这时,有两种可能的连接方式。目前,处理这个问题有两种策略:其一是通过双线性或双三次插值来估算位于网格中心位置的点的属性值,并根据此点的值与当前等值线的值之间的关系来选择连接方式:若中心点的值大于当前值,则将中心点与大于当前等值线的值的两个顶点划分到一个区域,否则,将中心点与小于当前等值线的值的两个顶点划分到一个区域;其二是简单的对所有具有二义性的网格统一采用一种连接方式。第一种策略的插值方式不够合理,实际上,出现四个等值点说明当前网格单元是原始曲面的鞍点附近区域,如果采用双线性插值,难以刻划鞍形曲面,导致插值不准确,若采用双三次插值方式,则由于所需要的插值条件较多而当前网格单元只有8个点而无法获得足够的插值条件,必须借助于当前单元的临近单元增加插值条件,实现困难。第二种策略没有考虑网格的具体情况,极有可能产生错误的等值线。
本发明实施例提供的计算二义性网格的等值线方式为:根据所述四边形网格单元的中心点的属性值,各顶点的属性值与当前等值线的值的大小关系,确定连接相邻两条边上的插值点的两个线段,将所述两个线段确定为所述四边形网格单元的等值线线段。参照图4,图4为确定二义性网格的等值线线段的示意图,可设四边形网格单元的四个顶点为a,b,c和d,v1为ab边上的插值点,v2为bc边上的插值点,v3为cd边上的插值点,v4为ad边上的插值点;则由这四个插值点共可能有两种构建等值线线段的方式,即①v1和v2相连,v3和v4相连,②v1和v4相连,v2和v3相连;如何选取构建等值线线段的方式,本发明实施例可采用下述判断方式:设Pa为顶点a的属性值,Pb为顶点b的属性值,Pc为顶点c的属性值,Pd为顶点d的属性值,当前等值线的值为Pcur,vc为所述四边形网格单元的中心点,vc点的属性值为Pvc;若Pa>Pcur,Pb<Pcur,Pc>Pcur,Pd<Pcur,且Pvc>Pcur,则采用第一种构建等值线线段的方式,即确定连接v1和v2的线段,及连接v3和v4的线段为等值线线段;若Pa>Pcur,Pb<Pcur,Pc>Pcur,Pd<Pcur,且Pvc<Pcur,则采用第二种构建等值线线段的方式,即确定连接v1和v4的线段,及连接v2和v3的线段为等值线线段。
在上述计算过程中,网格单元的中心点的属性值Pvc是未知的,因此本发明实施例还提供有如下的网格单元的中心点的属性值的确定方式,参照图5,图5为本发明实施例提供的网格单元的中心点的属性值的确定方法流程图,该方法可以包括:
步骤S300、计算所述四边形网格单元的四个顶点的局部x-y坐标,及计算所述四边形网格单元的四个插值点的局部x-y坐标;
设所述四边形网格单元的四个顶点为a,b,c和d;则本发明实施例可以a点为坐标原点(0,0),以ab为x轴正方向,以x=ab/||ab||为x轴的单位正向量;从而b点的局部x-y坐标为b(||ab||,0);以ab和ad的规范向量积n=(ab×ad)/||ab×ad||为x-y平面的单位法向量,计算y轴的单位向量为y=(n×ab)/||n×ab|;计算d点的局部坐标为d(ad·x,ad·y);计算c点在x-y平面上的投影,c’=a+ac-(ac·n)n,则c’点的局部x-y坐标为c’(ac’·x,ac’·y);
设v1为ab边上的插值点,v2为bc边上的插值点,v3为cd边上的插值点,v4为ad边上的插值点;则v1、v2两点可直接计算其局部x-y坐标:v1=(av1·x,av1·y),v2=(av2·x,av2·y),v3、v4两点需先将其投影到局部x-y坐标平面上得v3’、v4’两点,其中v3’=a+av3-(av3·n)n,v4’=a+av4-(av4·n)n,从而v3’,v4’的局部x-y坐标分别为:v3’(av3’·x,av3’·y),v4’(av4’·x,av4’·y)。
步骤S310、分别以所述四边形网格单元的四个顶点的各顶点属性值,及所述四边形网格单元的四个插值点的各插值点的属性值作为P值,以所述四个顶点的局部x-y坐标和所述四个插值点的局部x-y坐标作为x值和y值,带入二元二次方程P=k0+k1x+k2y+k3x2+k4xy+k5y2,得到包含8个方程,6个未知系数k0,k1,k2,k3,k4和k5的方程组;
可选的,本发明实施例可四个网格顶点和四个插值点的属性值构建最小二乘拟合方程组,设Pa为顶点a的属性值,Pb为顶点b的属性值,Pc为顶点c的属性值,Pd为顶点d的属性值,P1为插值点v1的属性值,P2为插值点v2的属性值,P3为插值点v3的属性值,P4为插值点v4的属性值;可将Pa,Pb,Pc,Pd,P1,P2,P3和P4这8个属性值作为函数值,将四个网格顶点和四个插值点的局部x-y坐标作为x和y值带入到二元二次方程P=k0+k1x+k2y+k3x2+k4xy+k5y2,得到一个包含8个方程、6个未知的系数(k0~k5)的方程组,此方程组是一个超定方程组。
步骤S320、计算所述方程组的最小二乘解,确定k0,k1,k2,k3,k4和k5的数值;
在得到k0,k1,k2,k3,k4和k5的数值后,则可确定二元二次函数k0+k1x+k2y+k3x2+k4xy+k5y2;
步骤S330、将所述四边形网格单元的中心点的局部x-y坐标带入二元二次函数k0+k1x+k2y+k3x2+k4xy+k5y2,求解出所述中心点的属性值。
可选的,将网格中线点vc投影到局部x-y坐标平面上,得vc’=a+avc-(avc·n)n,从而中心点的局部x-y坐标为vc’(avc’·x,avc’·y),将此坐标带入到二元二次函数k0+k1x+k2y+k3x2+k4xy+k5y2中即可得中心点的属性值Pvc。
本发明实施例采用二元二次函数以最小二乘的方式拟合当前网格单元内的数据点,由于二元二次函数有6个待定系数,而当前网格单元共可提供8个点(四个网格顶点,四个插值点),因此,已知条件足够进行最小二乘拟合,另一方面,二元二次函数可以很好的描述鞍面的形状,因此,采用二元二次最小二乘拟合是确定中心点最合理的方式。
可选的,在计算出网格单元的等值线线段后,本发明实施例可将所计算的等值线线段的等值线数据存入到数据容器列表中,所述数据容器列表的一个容器存储有同一等值线线段的等值线数据;
即本发明实施例无需对每个网格单元中计算出的等值线进行排序和连接,而是直接将隶属于同一个值的等值线的数据存入到一个容器类型的数据结构当中;可选的,可将所得到的全部等值线的数据存贮在一个容器列表中,列表的每一个元素是一个容器,其中存储具有当前值的等值线数据。
可选的,在进行等值线显示时,调取所述容器存储的同一等值线线段的等值线数据,进行画线绘制,实现等值线的渲染;
可选的,可在显示等值线的时候,从这些容器中取出等值线数据,然后使用OpenGL的画线功能进行绘制,实现等值线的快速渲染。
下面对本发明实施例提供的一种较为优选的大规模混合网格等值线的计算方法进行描述,图6为本发明实施例提供的大规模混合网格等值线的计算方法的另一流程图,参照图6,该方法可以包括:
步骤S400、根据网格单元的各顶点的属性值以及当前等值线的值,为网格单元中的属性值大于当前等值线的值的顶点赋予正号,为网格单元中的属性值小于当前等值线的值的顶点赋予负号,为网格单元中的退化顶点赋予负号;
步骤S410、判断网格单元的类型,若网络单元为三角形网格,执行步骤S420,若网格单元为四边形网格,执行步骤S430;
步骤S420、若三角形网格单元中全部顶点的正负标志都是同号,则继续检测下一个网格单元;若三角形网格单元中的顶点的正负标志不一致,则在顶点正负标志互异的边上计算与当前等值线的值相匹配的两个插值点,将连接所述两个插值点的线段确定为所述三角形网格单元的等值线线段;
步骤S430、若四边形网格单元中全部顶点的正负标志都是同号,则继续检测下一个网格单元,否则,执行步骤S440;
步骤S440、依次检查当前四边形网格单元的相邻的两个顶点,若所检查的两个顶点的正负标志均为正或均为负,则检查下一对相邻的两个顶点,若所检查的两个顶点的正负标志互异,计算两个顶点的正负标志互异的边上与当前等值线的值相匹配的插值点;
步骤S450、若所计算的插值点的个数为两个,将连接所述两个插值点的线段确定为所述四边形网格单元的等值线线段;
步骤S460、若所计算的插值点的个数为四个,则根据所述四边形网格单元的中心点的属性值,各顶点的属性值与当前等值线的值的大小关系,确定连接相邻两条边上的插值点的两个线段,将所述两个线段确定为所述四边形网格单元的等值线线段。
步骤S470、在计算出网格单元的等值线线段后,将所计算的等值线线段的等值线数据存入到数据容器列表中,所述数据容器列表的一个容器存储有同一等值线线段的等值线数据;
步骤S480、在进行等值线显示时,调取所述容器存储的同一等值线线段的等值线数据,进行画线绘制,实现等值线的渲染。
本发明实施例提供的大规模混合网格等值线的计算方法,减小了进行等值线计算的计算量,算法较为精简,具有很好的适用性;同时采用二元二次函数可以很好的描述鞍面的形状,准确的对二义性网格单元进行处理;其次,现有等值线算法对退化顶点的处理并不准确,通常的退化情况(即等值线恰好穿过某个网格顶点)的处理策略是对退化点的属性值加一个小的扰动使其不再退化,这相当于改动了原始数据,影响计算结果的准确性;而本发明实施例对于网格单元的顶点为退化顶点的处理情况,与属性值小于当前等值线的值的顶点的处理情况一致,可为退化顶点赋予第二值,这使得当网格顶点退化时,所计算出来的插值点恰好是退化的网格顶点,因此,无需特殊处理则可以自然地对等值线进行显示。
下面对本发明实施例提供的大规模混合网格等值线的计算系统进行描述,下文描述的大规模混合网格等值线的计算系统与上文描述的大规模混合网格等值线的计算方法对应,两者可相互参照。
图7为本发明实施例提供的大规模混合网格等值线的计算系统的结构框图,参照图7,该系统可以包括:
大小关系确定模块100,用于依次遍历各个网格单元,根据各网格单元的各顶点的属性值以及当前等值线的值,确定各网格单元的各顶点的属性值与当前等值线的值的大小关系;
等值线线段计算模块200,用于对于各个网格单元,根据网格单元的类型以及网格单元的各顶点的属性值与当前等值线的值的大小关系,计算网格单元的等值线线段。
图8为本发明实施例提供的大小关系确定模块100的结构框图,参照图8,大小关系确定模块100可以包括:
第一赋值模块110,用于根据各网格单元的各顶点的属性值以及当前等值线的值,为属性值大于当前等值线的值的顶点赋予第一值;
第二赋值模块120,用于为属性值小于当前等值线的值的顶点赋予第二值;同时在网格单元的顶点为退化顶点时,为所述退化顶点赋予第二值;
第一值和第二值可选为互异的值,如第一值可采用正号(+),第二值可采用负号(-),即第一赋值模块110可在顶点的属性值大于当前等值线的值时,为顶点赋予正号标志;第二赋值模块120可在顶点的属性值小于当前等值线的值时,及在网格单元的顶点为退化顶点时,为顶点赋予负号标志。
图9为本发明实施例提供的等值线线段计算模块200的结构框图,参照图9,等值线线段计算模块200可以包括:
三角形网格单元等值线计算单元210,用于在网格单元的类型为三角形网格单元,且所述三角形网格单元中的顶点属性值与当前等值线的值的大小关系不一致时,在顶点属性值与当前等值线的值的大小关系互异的两条边上,计算与当前等值线的值相匹配的两个插值点,将连接所述两个插值点的线段确定为所述三角形网格单元的等值线线段;
四边形网格单元等值线计算单元220,用于在网格单元的类型为四边形网格单元时,确定所述四边形网格单元中顶点属性值与当前等值线的值的大小关系互异的边上,与当前等值线的值相匹配的插值点;在所述插值点的个数为两个时,将连接所述两个插值点的线段确定为所述四边形网格单元的等值线线段;在所述插值点的个数为四个时,根据所述四边形网格单元的中心点的属性值,各顶点的属性值与当前等值线的值的大小关系,确定连接相邻两条边上的插值点的两个线段,将所述两个线段确定为所述四边形网格单元的等值线线段。
图10为本发明实施例提供的四边形网格单元等值线计算单元220的结构框图,参照图10,四边形网格单元等值线计算单元220可以包括:
中心点属性值确定单元221,用于计算所述四边形网格单元的四个顶点的局部x-y坐标,及计算所述四边形网格单元的四个插值点的局部x-y坐标;分别以所述四边形网格单元的四个顶点的各顶点属性值,及所述四边形网格单元的四个插值点的各插值点的属性值作为P值,以所述四个顶点的局部x-y坐标和所述四个插值点的局部x-y坐标作为x值和y值,带入二元二次方程P=k0+k1x+k2y+k3x2+k4xy+k5y2,得到包含8个方程,6个未知系数k0,k1,k2,k3,k4和k5的方程组;计算所述方程组的最小二乘解,确定k0,k1,k2,k3,k4和k5的数值;将所述四边形网格单元的中心点的局部x-y坐标带入二元二次函数k0+k1x+k2y+k3x2+k4xy+k5y2,求解出所述中心点的属性值。
本发明实施例提供的大规模混合网格等值线的计算方法,减小了进行等值线计算的计算量,算法较为精简,具有很好的适用性;同时采用二元二次函数可以很好的描述鞍面的形状,准确的对二义性网格单元进行处理;其次,可使得网格顶点退化时,所计算出来的插值点恰好是退化的网格顶点,无需特殊处理则可以自然对等值线进行显示。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (9)
1.一种大规模混合网格等值线的计算方法,其特征在于,包括:
依次遍历各个网格单元,根据各网格单元的各顶点的属性值以及当前等值线的值,确定各网格单元的各顶点的属性值与当前等值线的值的大小关系;
对于各个网格单元,根据网格单元的类型以及网格单元的各顶点的属性值与当前等值线的值的大小关系,计算网格单元的等值线线段;
还包括:
将所计算的等值线线段的等值线数据存入到数据容器列表中,所述数据容器列表的一个容器存储有同一等值线线段的等值线数据;
在进行等值线显示时,调取所述容器存储的同一等值线线段的等值线数据,进行画线绘制,实现等值线的渲染。
2.根据权利要求1所述的方法,其特征在于,所述根据各网格单元的各顶点的属性值以及当前等值线的值,确定各网格单元的各顶点的属性值与当前等值线的值的大小关系包括:
根据各网格单元的各顶点的属性值以及当前等值线的值,为属性值大于当前等值线的值的顶点赋予第一值,为属性值小于当前等值线的值的顶点赋予第二值;同时在网格单元的顶点为退化顶点时,为所述退化顶点赋予第二值。
3.根据权利要求1或2所述的方法,其特征在于,所述根据网格单元的类型以及网格单元的各顶点的属性值与当前等值线的值的大小关系,计算网格单元的等值线线段包括:
若网格单元的类型为三角形网格单元,并且所述三角形网格单元中的顶点属性值与当前等值线的值的大小关系不一致,则在顶点属性值与当前等值线的值的大小关系互异的两条边上,计算与当前等值线的值相匹配的两个插值点,将连接所述两个插值点的线段确定为所述三角形网格单元的等值线线段。
4.根据权利要求1或2所述的方法,其特征在于,所述根据网格单元的类型以及网格单元的各顶点的属性值与当前等值线的值的大小关系,计算网格单元的等值线线段包括:
若网格单元的类型为四边形网格单元,确定所述四边形网格单元中顶点属性值与当前等值线的值的大小关系互异的边上,与当前等值线的值相匹配的插值点;
若所述插值点的个数为两个,将连接所述两个插值点的线段确定为所述四边形网格单元的等值线线段;
若所述插值点的个数为四个,根据所述四边形网格单元的中心点的属性值,各顶点的属性值与当前等值线的值的大小关系,确定连接相邻两条边上的插值点的两个线段,将所述两个线段确定为所述四边形网格单元的等值线线段。
5.根据权利要求4所述的方法,其特征在于,所述根据所述四边形网格单元的中心点的属性值与当前等值线的值的大小关系,确定连接相邻两条边上的插值点的两个线段包括:
设所述四边形网格单元的四个顶点为a,b,c和d,v1为ab边上的插值点,v2为bc边上的插值点,v3为cd边上的插值点,v4为ad边上的插值点,Pa为顶点a的属性值,Pb为顶点b的属性值,Pc为顶点c的属性值,Pd为顶点d的属性值,当前等值线的值为Pcur,vc为所述四边形网格单元的中心点,vc点的属性值为Pvc;
若Pa>Pcur,Pb<Pcur,Pc>Pcur,Pd<Pcur,且Pvc>Pcur,则确定连接v1和v2的线段,及连接v3和v4的线段;
若Pa>Pcur,Pb<Pcur,Pc>Pcur,Pd<Pcur,且Pvc<Pcur,则确定连接v1和v4的线段,及连接v2和v3的线段。
6.根据权利要求4所述的方法,其特征在于,所述四边形网格单元的中心点的属性值的确定过程包括:
计算所述四边形网格单元的四个顶点的局部x-y坐标,及计算所述四边形网格单元的四个插值点的局部x-y坐标;
分别以所述四边形网格单元的四个顶点的各顶点属性值,及所述四边形网格单元的四个插值点的各插值点的属性值作为P值,以所述四个顶点的局部x-y坐标和所述四个插值点的局部x-y坐标作为x值和y值,带入二元二次方程P=k0+k1x+k2y+k3x2+k4xy+k5y2,得到包含8个方程,6个未知系数k0,k1,k2,k3,k4和k5的方程组;
计算所述方程组的最小二乘解,确定k0,k1,k2,k3,k4和k5的数值;
将所述四边形网格单元的中心点的局部x-y坐标带入二元二次函数k0+k1x+k2y+k3x2+k4xy+k5y2,求解出所述中心点的属性值。
7.一种大规模混合网格等值线的计算系统,其特征在于,包括:
大小关系确定模块,用于依次遍历各个网格单元,根据各网格单元的各顶点的属性值以及当前等值线的值,确定各网格单元的各顶点的属性值与当前等值线的值的大小关系;
等值线线段计算模块,用于对于各个网格单元,根据网格单元的类型以及网格单元的各顶点的属性值与当前等值线的值的大小关系,计算网格单元的等值线线段;将所计算的等值线线段的等值线数据存入到数据容器列表中,所述数据容器列表的一个容器存储有同一等值线线段的等值线数据;在进行等值线显示时,调取所述容器存储的同一等值线线段的等值线数据,进行画线绘制,实现等值线的渲染。
8.根据权利要求7所述的系统,其特征在于,所述等值线线段计算模块包括:
三角形网格单元等值线计算单元,用于在网格单元的类型为三角形网格单元,且所述三角形网格单元中的顶点属性值与当前等值线的值的大小关系不一致时,在顶点属性值与当前等值线的值的大小关系互异的两条边上,计算与当前等值线的值相匹配的两个插值点,将连接所述两个插值点的线段确定为所述三角形网格单元的等值线线段;
四边形网格单元等值线计算单元,用于在网格单元的类型为四边形网格单元时,确定所述四边形网格单元中顶点属性值与当前等值线的值的大小关系互异的边上,与当前等值线的值相匹配的插值点;在所述插值点的个数为两个时,将连接所述两个插值点的线段确定为所述四边形网格单元的等值线线段;在所述插值点的个数为四个时,根据所述四边形网格单元的中心点的属性值,各顶点的属性值与当前等值线的值的大小关系,确定连接相邻两条边上的插值点的两个线段,将所述两个线段确定为所述四边形网格单元的等值线线段。
9.根据权利要求8所述的大规模混合网格等值线的计算系统,其特征在于,所述四边形网格单元等值线计算单元包括:
中心点属性值确定单元,用于计算所述四边形网格单元的四个顶点的局部x-y坐标,及计算所述四边形网格单元的四个插值点的局部x-y坐标;分别以所述四边形网格单元的四个顶点的各顶点属性值,及所述四边形网格单元的四个插值点的各插值点的属性值作为P值,以所述四个顶点的局部x-y坐标和所述四个插值点的局部x-y坐标作为x值和y值,带入二元二次方程P=k0+k1x+k2y+k3x2+k4xy+k5y2,得到包含8个方程,6个未知系数k0,k1,k2,k3,k4和k5的方程组;计算所述方程组的最小二乘解,确定k0,k1,k2,k3,k4和k5的数值;将所述四边形网格单元的中心点的局部x-y坐标带入二元二次函数k0+k1x+k2y+k3x2+k4xy+k5y2,求解出所述中心点的属性值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310432215.6A CN103440434B (zh) | 2013-09-22 | 2013-09-22 | 一种大规模混合网格等值线的计算方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310432215.6A CN103440434B (zh) | 2013-09-22 | 2013-09-22 | 一种大规模混合网格等值线的计算方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103440434A CN103440434A (zh) | 2013-12-11 |
CN103440434B true CN103440434B (zh) | 2016-10-05 |
Family
ID=49694128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310432215.6A Expired - Fee Related CN103440434B (zh) | 2013-09-22 | 2013-09-22 | 一种大规模混合网格等值线的计算方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103440434B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109389553B (zh) * | 2018-08-29 | 2022-09-20 | 南京理工大学 | 基于t样条的气象传真图等值线插值方法 |
CN110675470B (zh) * | 2019-10-11 | 2021-02-19 | 北京航天宏图信息技术股份有限公司 | 等值线绘制方法、装置、计算设备及可读取存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5333248A (en) * | 1992-07-15 | 1994-07-26 | International Business Machines Corporation | Method and system for the smooth contouring of triangulated surfaces |
CN101078983A (zh) * | 2007-07-03 | 2007-11-28 | 山东省气候中心 | 一种自动生成等值线图片文件的方法 |
CN102289605A (zh) * | 2011-09-05 | 2011-12-21 | 北京清流技术发展有限公司 | 一种等值线插值方法 |
CN102496187A (zh) * | 2011-10-21 | 2012-06-13 | 克拉玛依红有软件有限责任公司 | 一种基于三角形网格的追踪等值线至边界及断层的方法 |
-
2013
- 2013-09-22 CN CN201310432215.6A patent/CN103440434B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5333248A (en) * | 1992-07-15 | 1994-07-26 | International Business Machines Corporation | Method and system for the smooth contouring of triangulated surfaces |
CN101078983A (zh) * | 2007-07-03 | 2007-11-28 | 山东省气候中心 | 一种自动生成等值线图片文件的方法 |
CN102289605A (zh) * | 2011-09-05 | 2011-12-21 | 北京清流技术发展有限公司 | 一种等值线插值方法 |
CN102496187A (zh) * | 2011-10-21 | 2012-06-13 | 克拉玛依红有软件有限责任公司 | 一种基于三角形网格的追踪等值线至边界及断层的方法 |
Non-Patent Citations (2)
Title |
---|
光滑的等值线生成算法;苗润忠;《长春理工大学学报》;20040331;第27卷(第1期);第16-18页 * |
用四边形法快速绘等值线图;罗杰东;《中国煤田地质》;19940930;第6卷(第3期);第113-116页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103440434A (zh) | 2013-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lopes et al. | Improving the robustness and accuracy of the marching cubes algorithm for isosurfacing | |
JP5036179B2 (ja) | 二次元線形データリアルタイム三次元変換方法及び変換装置、二次元線形データリアルタイム三次元画像表示方法及び表示装置 | |
CN106055794A (zh) | 一种参数化建立三维管线模型的方法 | |
CN107330142B (zh) | 一种基于stl模型的在机检测的测点法矢估算方法 | |
CN107622530B (zh) | 一种高效鲁棒的三角网切割方法 | |
CN103440434B (zh) | 一种大规模混合网格等值线的计算方法及系统 | |
CN105205841A (zh) | 地理信息系统的地图生成方法和系统 | |
CN103729886B (zh) | 一种基于顶点重定位的三角网格表面模型概率融合方法 | |
CN102722910B (zh) | 一种基于分离轴剔除的体网格场景连续碰撞检测方法 | |
Senin et al. | The use of areal surface topography analysis for the inspection of micro-fabricated thin foil laser targets for ion acceleration | |
Gao et al. | Accessibility analysis in efficient inspection of closed blisk on 3-axis CMM with 2-axis probe head | |
TWI406189B (zh) | 點雲三角網格面構建方法 | |
Nagy et al. | New algorithm to find isoptic surfaces of polyhedral meshes | |
CN110210576A (zh) | 一种地图数据的图斑相似性计算方法及系统 | |
Dorado | Medial axis of a planar region by offset self-intersections | |
CN115964594A (zh) | 一种面向网格模型顶点曲率的快速获取的方法及系统 | |
CN116305386A (zh) | 一种bim轻量化模型的多类型碰撞检测方法及系统 | |
CN115170642A (zh) | 一种电子密度等值面点云体积的计算方法及装置 | |
Liu et al. | Computing global visibility maps for regions on the boundaries of polyhedra using Minkowski sums | |
Leconte et al. | Exact and efficient booleans for polyhedra | |
Zhou et al. | Scattered data fitting with simplex splines in two and three dimensional spaces | |
Zheng et al. | An algorithm for computing geodesic curve based on digital experiment of point clouds | |
CN117194859B (zh) | 基于间断伽辽金法的非结构网格自适应细分与高效并行高精度算法框架的构建方法及系统 | |
CN116612825B (zh) | 分子静电势等值面点云的碰撞点检测和碰撞体积计算方法 | |
Cao et al. | A Parallel Feature-preserving Mesh Variable Offsetting Method with Dynamic Programming |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20161005 Termination date: 20180922 |