一种空间多连通域的封闭面自动搜索方法

文档序号:6386455阅读:547来源:国知局
专利名称:一种空间多连通域的封闭面自动搜索方法
技术领域
本发明涉及一种封闭面搜索方法,尤其是涉及一种空间多连通域的封闭面自动搜 索方法。
背景技术
自动寻找封闭面不仅是解决某些几何问题所需要的预处理步骤,而且在有限元网 格划分、三维快速建模、模式识别、地质学等领域得到广泛应用。封闭面是指其内不再包含 其它线段,有有无内边界之分。复平面上的一个区域B,如果在其中任作一条简单闭曲线,而 曲线的内部总属于B,则此复平面为单连通域,否则就为多连通域。
2010年,西北工业大学的雷安民、张华梅等人提出了一种寻找平面图形中最小封 闭线框的方法,但仅限于直线段和单连通域(《科学技术与工程》2010年04期);2012年, 中国科学院微电子研究所艾迪、周云燕提出一种二维图形封闭区域自动识别算法,采用以 广度优先遍历搜索算法为基础的单源搜索法识别图形所有封闭区域(《电子设计工程》2012 年第07期)。
然而,以上所研究的方法主要是针对于二维平面或单连通域内的封闭面寻找方 法,且线性多为直线。而实际中,模型的区域常为空间、多连通域,线性有直线、圆、圆弧、椭 圆、椭圆弧、样条曲线等构成,为了更加贴近实际工程三维建模,需寻找一种新的搜寻方法 替代已有方法。
因此,研究一种能在空间多连通域内自动寻找封闭面的方法已成为三维空间快速 建模的迫切需要之一。发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种可实现、快速、 有效、完全自动化的空间多连通域的封闭面自动搜索方法,可在实际工程应用中使预处理 步骤更加简洁,并具有更高的精度。
本发明的目的可以通过以下技术方案来实现
一种空间多连通域的封闭面自动搜索方法,包括以下步骤
(I)获取线段集和控制精度,判断所选线段是否处于同一空间平面,若是,则提取 基准平面,若否,则退出
(2)对所有线段求交并在交点处打断;
(3)将所有端点映射到基准平面内,并建立端点与线段之间的引用关系,剔除无效 端点及引用该端点的线段;
(4)将所有端点按X、Y坐标值从小到大排序,并建立各线段与端点位置索引值的 映射关系;
(5)运用单点围绕法逐个搜寻出每个端点的最小封闭区域,并将该封闭区域的外 边线组成一个Wire ;
(6)每搜寻完一个端点所有的Wire后,将已遍历过且线段引用数少于2的端点移除;
(7)重复步骤(5)、步骤¢),直至找到所有单连通域的线框,将同一单连通域内的 Wire 组成一个 Wire Group ;
(8)继续遍历,直至所有的Wire Group建立;
(9)计算出各Wire Group的线框包围盒,依据线框包围盒的面积从大到小排序, 并建立各Wire Group之间的拓扑关系;
(10)利用Wire Group创建封闭面。
所述的步骤(1)的具体步骤如下
(11)获取线段集,计算各线段的局部坐标系,并存储到局部坐标系容器中,线段集中,每个线段设有一个对应的ID ;
获取线段集时,如果存在矩形,则首先将矩形在角点处打断,分成四段直线,将矩形删除,并将新生成的直线加入所选线段集中;同理,将圆和椭圆对象在0°、90°、180°、 270°处打断;
(12)通过两直线切向向量的向量积,产生一个新的局部坐标系,并加入到步骤(11)的容器中;
(13)遍历容器,判断各局部坐标系是否在同一平面内,若是,则所有的线段共面, 继续执行步骤(14),若否,则退出,重新获取线段;
(14)将整体坐标系的Z方向转换成上述容器中任意局部坐标系的Z方向,并将转换后的整体坐标系作为基准平面。
所述的步骤(2)的具体步骤如下
(21)将所有线段逐个与其它线段求交,并记录相应交点在线段上的U参数;
(22)依据所记录的U参数将线段逐个分解,删除原有线段,将新线段加入线段集中;
(23)判断各线段是否存在重复,如果存在,则删除重复的线段。
所述的步骤(3)的具体步骤如下
(31)遍历所有线段的端点,通过坐标系转换将端点一一映射到基准平面内,将所有空间的端点转化成平面点集,且在映射过程中,记录各端点的线段引用数;
(32)遍历所有端点的线段引用数,判断第i个端点的线段引用数Ni的值是否大于 1,若是,则继续判断第i+Ι个端点的线段引用数,若否,则执行步骤(33);
(33)将第i个端点与其它端点逐个求距离Lij,判断是否存在minILijJ = 1,…,1-1, i+Ι,…,η}小于设定的拟合误差,若是,则自动将第i个端点及与其距离最小的端点进行拟合,若否,则反馈错误信息,将第i个端点及引用该端点的线段删除。
所述的步骤(4)的具体步骤如下
(41)将所有端点按X、Y坐标值从小到大排序,组成端点集;
(42)构建新的拓扑线段,每一拓扑线段记录了相对应线段的ID和端点对应的位置索引值。
所述的步骤(5)的具体步骤如下
(51)提取端点集的首端点作为搜寻的起始端点Ptl,计算点Ptl所引用的各线段在点Po处的切线方向向量,如果点Po不是线段的起始点,则须将向量W0反向,求各向量1%与基准平面X轴正向的夹角θ (Θ的值域为[-90°,90° ]),取夹角(注非角度绝对值)Θ最小的那根线段作为搜寻起始线段;
(52)提取线段Itl非Ptl的另一个端点P1作为下一个搜寻端点,如果端点P1的线段引用数为2,则直接将引用P1的下一条线段I1作为搜寻线段,并将搜寻端点移动至线段I1 的非P1端点;如果端点P1的线段引用数大于2,则计算线段Itl上点P1处的切线方向向量;, 如果点P1是线段的终点,则须将向量;反向,计算引用端点P1的除线段Itl外的所有线段与向量;的夹角β (β值域为[-180° ,180° ]),取角度β (注非角度绝对值)最小的那一根线段作为下一个搜寻线段Ii ;
(53)重复步骤(52),直至下一个搜寻端点回到了初始端点Ptl,至此一个最小的封闭框搜寻完毕。将此封闭框所路径的端点和线段信息记录到Wire中;
(54)取除线段Itl外的夹角最小的那一线段作为搜寻的起始线段,重复步骤(52)、(53),直至所有线段遍历完毕;
(55)当通过起始端点Ptl所搜寻的Wire个数Nw大于或等于该端点的线段引用数时,说明经过端点Ptl的所有最小边框均已找到。
所述的步骤(6)的具体步骤如下
(61)由于途径端点Ptl的所有最小边框均已找到,则端点?(1可以移除,相应地端点 Po所引用的线段亦可以移除,在移除各线段时,亦要从其被引用的其它端点中移除;
(62)通过递归遍历端点P。所引用线段的另一端点Pi,逐个移除线段引用数少于2 的所有端点;
(63)通过步骤(62),如果步骤(5)所搜索到Wire中所有的端点均被移除,则说明一个单连通域的线框全部找到,将这些Wire组成一个Wire Group,并提取未被删除端点集中的首端点作为搜寻起始点Ptl ;如果步骤(5)所搜索到Wire中所有的端点还有线段引用数大于或等于2的,则将其中索引值最 小的端点作为搜寻起始点P(1。
所述的步骤(9)的具体步骤如下
(91)遍历所有的Wire Group,逐个构建其线框包围盒,方法为提取出WireGroup 中所有的端点,计算这些点的Χ、γ坐标的最大值和最小值,利用Χ、γ坐标的最小值和最大值分别组成矩形的两个角点,则Wire Group的线框包围盒构建完毕;
(92)计算此线框包围盒的面积,并记录此线框包围盒所对应Wire Group的索引值;
(93)将所有的线框包围盒依据面积从大到小进行排序;
(94)提取面积最大的线框包围盒Bmax,判断Bmax与其它的线框包围盒Bi的拓扑关
(95)剔除线框包围盒层层包含的情况,以确保各线框包围盒是按从大到小依次成包含关系;
(96)至此,各Wire Group之间的拓扑关系建立完毕。
所述的Bniax与Bi的拓扑关系判断方法如下
(941)如果二者的线框包围盒分离,则说明Bniax与Bi分离,相互之间没有包含关系,直接跳过,继续遍历下一个Wire Group对象;
(942)如果二者线框包围盒不分离,则须进一步判断8_与&之间的关系首先取 Bi内任意一点P,然后将Bmax放大1. 5倍,并将Bmax围绕着矩形形心旋转45° ;从点p出发向Bmax的任意一角点构造一条射线,记为Ri,通过坐标转换将Ri转换为三维空间的射线RT, 逐个计算Rt穿越Bmax的交点,如果交点中正好有Bmax边线的端点或切点,则更换Bmax的角点, 重新引出一条射线RT,继续计算Rt穿越Bmax的交点;如果交点数目为奇数,则说明Bmax包含 Bi,否则不包含。
所述的步骤(10)的具体步骤如下
(101)如果Wire Group没有包含对象,则为单连通域,遍历其内部所有的Wire直接创建封闭面对象;
(102)如果Wire Group有包含对象,则为多连通域,提取其包含子对象的外边界作为Wire Group的内边界,仓ll建封闭面对象;
提取Wire Group的外边界方法为剔除Wire Group中线段引用数等于2的线段后所剩线段即为Wire Group的外边界。
与现有技术相比,本发明具有以下优点
I)本发明解决了空间多连通域寻找封闭面的问题,技术方案完整且易于实现,全自动化寻找,无须用户干预;
2)由于对端点一次遍历即可搜寻出所有的Wire,其计算效率显著提高,时间复杂度是O (η);
3)在搜寻过程中,将许多几何方法描述转化为几何拓扑关系描述,从而避免由于计算精度而引起错误判断;
4)本发明经过大量不同封闭区域验证,其正确率100% ;
5)本发明提高了三维几何建模等几何问题的效率和精度,并可在实际工程应用中取得令人满意的效果。


图1为本发明方法的流程示意图2为本发明单点围绕法的示意图3为本发明判断Wire Group拓扑关系的示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例
如图1所示,一种空间多连通域的封闭面自动搜索方法,包括以下步骤
(I)获取线段集和控制精度,判断所选线段是否处于同一空间平面,若是,则提取基准平面,若否,则退出,具体为
(11)获取 线段集,计算各线段(除直线外)的局部坐标系,并存储到局部坐标系容器中,线段集中,每个线段设有一个对应的ID ;
获取线段集时,如果存在矩形,则首先将矩形在角点处打断,分成四段直线,将矩形删除,并将新生成的直线加入所选线段集中;同理,将圆和椭圆对象在0°、90°、180°、 270°处打断;
(12)通过两直线切向向量的向量积,产生一个新的局部坐标系,并加入到步骤(11)的容器中;
(13)遍历容器,判断各局部坐标系是否在同一平面内,若是,则所有的线段共面, 继续执行步骤(14),若否,则不能生成封闭面,退出,重新获取线段;
(14)将整体坐标系的Z方向转换成上述容器中任意局部坐标系的Z方向,并将转换后的整体坐标系作为基准平面。
(2)将所有线段逐个与其它线段求交,并记录相应交点在线段上的U参数(如果交点为线的端点则不用记录),依据所记录的U参数将线段逐个分解,删除原有线段,将新线段加入线段集中,判断各线段是否存在重复,如果存在,则删除重复的线段。
U参数是曲线函数的一个变量,在解析几何里,曲线常用参数表示,例如一个三维坐标点可以写成参数U的函数X = X(U)、Y = Y(U)、Z = Z(U)。对于直线,U表示长度;对于圆弧、圆,U则表不角度。
(3)将所有端点映射到基准平面内,并建立端点与线段之间的引用关系,剔除无效端点及引用该端点的线段,具体为
(31)遍历所有线段的端点,通过坐标系转换将端点一一映射到基准平面内,将所有空间的端点转化成平面点集,且在映射过程中,记录各端点的线段引用数;
(32)遍历所有端点的线段引用数,判断第i个端点的线段引用数Ni的值是否大于 1,若是,则继续判断第i+Ι个端点的线段引用数,若否,则执行步骤(33);
(33)将第i个端点与其它端点逐个求·距离Lij,判断是否存在HiinILij = 1,…,1-1, i+Ι,…,η}小于设定的拟合误差,若是,则自动将第i个端点及与其距离最小的端点进行拟合,若否,则反馈错误信息,将第i个端点及引用该端点的线段删除。·
(4)将所有端点按X、Y坐标值从小到大排序,并建立各线段与端点位置索引值的映射关系,构建新的拓扑线段TPLine,每一拓扑线段记录了相对应线段的ID和端点对应的位置索引值,TPLine数据结构为
struct TPLineint nObjID;//对应线段的IDint nNodeldxI; //线起点的位置索引值 intnNodeIdx2; //线终点的位置索引值
(5)运用单点围绕法逐个搜寻出每个端点的最小封闭区域,并将该封闭区域的外边线组成一个Wire (线框),具体为
(51)提取端点集的首端点作为搜寻的起始端点Ptl,计算点Ptl所引用的各线段在点 Po处的切线方向向量W1J,如果点Pci不是线段的起始点,则须将向量《O反向,求各向量《O与基准平面X轴正向的夹角θ (Θ的值域为[-90°,90° ]),取夹角Θ (注非角度绝对值)最小的那根线段作为搜寻起始线段Itl ;
(52)如图2所示,提取线段Itl非Ptl的另一个端点P1作为下一个搜寻端点,如果端点P1的线段引用数为2,则直接将引用P1的下一条线段I1作为搜寻线段,并将搜寻端点移动至线段I1的非P1端点;如果端点P1的线段引用数大于2,则计算线段Itl上点P1处的切线方向向量;,如果Ap1是线段的终点,则须将向量;反向,计算引用端点P1的除线段Itl外的所有线段与向量士的夹角β (β的值域为[-180° ,180° ]),取角度β (注非角度绝对值)最小的那一根线段作为下一个搜寻线段Ii
(53)重复步骤(52),直至下一个搜寻端点回到了初始端点Ptl,至此一个最小的封闭框搜寻完毕。将此封闭框所路径的端点和线段信息记录到Wire中;
Wire数据结构
权利要求
1.一种空间多连通域的封闭面自动搜索方法,其特征在于,包括以下步骤;(1)获取线段集和控制精度,判断所选线段是否处于同一空间平面,若是,则提取基准平面,执行步骤(2),若否,则退出;(2)对所有线段求交并在交点处打断;(3)将所有端点映射到基准平面内,并建立端点与线段之间的引用关系,剔除无效端点及引用该端点的线段;(4)将所有端点按X、Y坐标值从小到大排序,并建立各线段与端点位置索引值的映射关系;(5)运用单点围绕法逐个搜寻出每个端点的最小封闭区域,并将该封闭区域的外边线组成一个Wire ;(6)每搜寻完一个端点所有的Wire后,将已遍历过且线段引用数少于2的端点移除;(7)重复步骤(5)、步骤¢),直至找到所有单连通域的线框,将同一单连通域内的Wire 组成一个 Wire Group ;(8)继续遍历,直至所有的WireGroup建立;(9)计算出各WireGroup的线框包围盒,依据线框包围盒的面积从大到小排序,并建立各Wire Group之间的拓扑关系;(10)利用WireGroup创建封闭面。
2.根据权利要求1所述的一种空间多连通域自动寻找封闭面的方法,其特征在于,所述的步骤(I)的具体步骤如下(11)获取线段集,计算各线段的局部坐标系,并存储到局部坐标系容器中,线段集中, 每个线段设有一个对应的ID ;获取线段集时,如果存在矩形,则首先将矩形在角点处打断,分成四段直线,将矩形删除,并将新生成的直线加入所选线段集中;同理,将圆和椭圆对象在0°、90°、180°、 270°处打断;(12)通过两直线切向向量的向量积,产生一个新的局部坐标系,并加入到步骤(11)的容器中;(13)遍历容器,判断各局部坐标系是否在同一平面内,若是,则所有的线段共面,继续执行步骤(14),若否,则退出,重新获取线段;(14)将整体坐标系的Z方向转换成上述容器中任意局部坐标系的Z方向,并将转换后的整体坐标系作为基准平面。
3.根据权利要求1所述的一种空间多连通域自动寻找封闭面的方法,其特征在于,所述的步骤(2)的具体步骤如下(21)将所有线段逐个与其它线段求交,并记录相应交点在线段上的U参数;(22)依据所记录的U参数将线段逐个分解,删除原有线段,将新线段加入线段集中;(23)判断各线段是否存在重复,如果存在,则删除重复的线段。
4.根据权利要求2所述的一种空间多连通域自动寻找封闭面的方法,其特征在于,所述的步骤(3)的具体步骤如下(31)遍历所有线段的端点,通过坐标系转换将端点一一映射到基准平面内,将所有空间的端点转化成平面点集,且在映射过程中,记录各端点的线段引用数;(32)遍历所有端点的线段引用数,判断第i个端点的线段引用数Ni的值是否大于1, 若是,则继续判断第i+Ι个端点的线段引用数,若否,则执行步骤(33);(33)将第i个端点与其它端点逐个求距离Lij,判断是否存在minILij, j = I, ···,1-1, i+1,…,η}小于设定的拟合误差,若是,则自动将第i个端点及与其距离最小的端点进行拟合,若否,则反馈错误信息,将第i个端点及引用该端点的线段删除。
5.根据权利要求1所述的一种空间多连通域自动寻找封闭面的方法,其特征在于,所述的步骤(4)的具体步骤如下(41)将所有端点按X、Y坐标值从小到大排序,组成端点集;(42)构建新的拓扑线段,每一拓扑线段记录了相对应线段的ID和端点对应的位置索引值。
6.根据权利要求5所述的一种空间多连通域自动寻找封闭面的方法,其特征在于,所述的步骤(5)的具体步骤如下(51)提取端点集的首端点作为搜寻的起始端点Pd,计算点PtI所引用的各线段在点Pd 处的切线方向向量《O,如果点Pci不是线段的起始点,则将向量《O反向,求各向量Wo与基准平面X轴正向的夹角θ,Θ的值域为[-90°,90° ],取夹角Θ最小的那根线段作为搜寻起始线段Itl ;(52)提取线段Itl非Ptl的另一个端点P1作为下一个搜寻端点,如果端点P1的线段引用数为2,则直接将引用P1的下一条线段I1作为搜寻线段,并将搜寻端点移动至线段I1的非 P1端点;如果端点P1的线段引用数大于2,则计算线段Itl上点P1处的切线方向向量士,如果点P1是线段的终点,则须将向量;反向,计算引用端点P1的除线段Itl外的所有线段与向量士的夹角β,β的值域为[-180° ,180° ],取角度β最小的那一根线段作为下一个搜寻线段Ii;(53)重复步骤(52),直至下一个搜寻端点回到了初始端点Ptl,至此一个最小的封闭框搜寻完毕,将此封闭框所路径的端点和线段信息记录到Wire中;(54)取除线段Itl外的夹角最小的那一线段作为搜寻的起始线段,重复步骤(52)、 (53),直至所有线段遍历完毕;(55)当通过起始端点Ptl所搜寻的Wire个数Nw大于或等于该端点的线段引用数时,说明经过端点Ptl的所有最小边框均已找到。
7.根据权利要求6所述的一种空间多连通域自动寻找封闭面的方法,其特征在于,所述的步骤出)的具体步骤如下(61)由于途径端点P。的所有最小边框均已找到,则端点P。可以移除,相应地端点P。所引用的线段亦可以移除,在移除各线段时,亦要从其被引用的其它端点中移除;(62)通过递归遍历端点Ptl所引用线段的另一端Api,逐个移除线段引用数少于2的所有端点;(63)通过步骤(62),如果所搜索到Wire中所有的端点均被移除,则说明一个单连通域的线框全部找到,将这些Wire组成一个Wire Group,并提取未被删除端点集中的首端点作为搜寻起始点Ptl ;如果所搜索到Wire中所有的端点还有线段引用数大于或等于2的,则将其中索引值最小的端点作为搜寻起始点Po。
8.根据权利要求7所述的一种空间多连通域自动寻找封闭面的方法,其特征在于,所述的步骤(9)的具体步骤如下(91)遍历所有的WireGroup,逐个构建其线框包围盒,方法为提取出WireGroup中所有的端点,计算这些点的X、Y坐标的最大值和最小值,利用Χ、Υ坐标的最小值和最大值分别组成矩形的两个角点,则Wire Group的线框包围盒构建完毕;(92)计算此线框包围盒的面积,并记录此线框包围盒所对应WireGroup的索引值;(93)将所有的线框包围盒依据面积从大到小进行排序;(94)提取面积最大的线框包围盒Bmax,判断Bmax与其它的线框包围盒Bi的拓扑关系;(95)剔除线框包围盒层层包含的情况,以确保各线框包围盒是按从大到小依次成包含关系;(96)至此,各WireGroup之间的拓扑关系建立完毕。
9.根据权利要求8所述的一种空间多连通域自动寻找封闭面的方法,其特征在于,所述的Bniax与Bi的拓扑关系判断方法如下(941)如果二者的线框包围盒分离,则说明Bmax与Bi分离,相互之间没有包含关系,直接跳过,继续遍历下一个Wire Group对象;(942)如果二者线框包围盒不分离,则须进一步判断8_与&之间的关系首先取Bi内任意一点P,然后将Bmax放大1. 5倍,并将Bmax围绕着矩形形心旋转45° ;从点P出发向Bmax 的任意一角点构造一条射线,记为Ri,通过坐标转换将Ri转换为三维空间的射线Rt,逐个计算Rt穿越Bmax的交点,如果交点中正好有Bmax边线的端点或切点,则更换Bmax的角点,重新引出一条射线RT,继续计算Rt穿越Bmax的交点;如果交点数目为奇数,则说明Bmax包含Bi,否则不包含。
10.根据权利要求8所述的一种空间多连通域自动寻找封闭面的方法,其特征在于,所述的步骤(10)的具体步骤如下(101)如果WireGroup没有包含对象,则为单连通域,遍历其内部所有的Wire直接创建封闭面对象;(102)如果WireGroup有包含对象,则为多连通域,提取其包含子对象的外边界作为 Wire Group的内边界,仓ll建封闭面对象;提取Wire Group的外边界方法为剔除Wire Group中线段引用数等于2的线段后所剩线段即为Wire Group的外边界。
全文摘要
本发明涉及一种空间多连通域的封闭面自动搜索方法,包括以下步骤获取线段集和控制精度,判断所选线段是否处于同一空间平面,若是,则提取基准平面对所有线段求交并在交点处打断;将所有端点映射到基准平面内;建立各线段与端点位置索引值的映射关系;运用单点围绕法逐个搜寻出每个端点的最小封闭区域,并将该封闭区域的外边线组成一个Wire将同一单连通域内的Wire组成一个WireGroup,直至所有的Wire Group建立;计算出各Wire Group的线框包围盒,建立各Wire Group之间的拓扑关系,利用Wire Group创建封闭面。与现有技术相比,本发明具有可实现、快速、有效、完全自动化等优点。
文档编号G06T7/00GK103065319SQ20121059256
公开日2013年4月24日 申请日期2012年12月31日 优先权日2012年12月31日
发明者朱合华, 刘新根, 刘学增, 林小平, 周德成, 齐磊, 彭丹, 张 杰 申请人:上海同岩土木工程科技有限公司, 同济大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1