CN103065319A - 一种空间多连通域的封闭面自动搜索方法 - Google Patents
一种空间多连通域的封闭面自动搜索方法 Download PDFInfo
- Publication number
- CN103065319A CN103065319A CN2012105925669A CN201210592566A CN103065319A CN 103065319 A CN103065319 A CN 103065319A CN 2012105925669 A CN2012105925669 A CN 2012105925669A CN 201210592566 A CN201210592566 A CN 201210592566A CN 103065319 A CN103065319 A CN 103065319A
- Authority
- CN
- China
- Prior art keywords
- line segment
- end points
- wire
- line
- connected domain
- 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.)
- Granted
Links
Images
Landscapes
- Image Analysis (AREA)
Abstract
本发明涉及一种空间多连通域的封闭面自动搜索方法,包括以下步骤:获取线段集和控制精度,判断所选线段是否处于同一空间平面,若是,则提取基准平面:对所有线段求交并在交点处打断;将所有端点映射到基准平面内;建立各线段与端点位置索引值的映射关系;运用单点围绕法逐个搜寻出每个端点的最小封闭区域,并将该封闭区域的外边线组成一个Wire将同一单连通域内的Wire组成一个WireGroup,直至所有的Wire Group建立;计算出各Wire Group的线框包围盒,建立各Wire Group之间的拓扑关系,利用Wire Group创建封闭面。与现有技术相比,本发明具有可实现、快速、有效、完全自动化等优点。
Description
技术领域
本发明涉及一种封闭面搜索方法,尤其是涉及一种空间多连通域的封闭面自动搜索方法。
背景技术
自动寻找封闭面不仅是解决某些几何问题所需要的预处理步骤,而且在有限元网格划分、三维快速建模、模式识别、地质学等领域得到广泛应用。封闭面是指其内不再包含其它线段,有有无内边界之分。复平面上的一个区域B,如果在其中任作一条简单闭曲线,而曲线的内部总属于B,则此复平面为单连通域,否则就为多连通域。
2010年,西北工业大学的雷安民、张华梅等人提出了一种寻找平面图形中最小封闭线框的方法,但仅限于直线段和单连通域(《科学技术与工程》2010年04期);2012年,中国科学院微电子研究所艾迪、周云燕提出一种二维图形封闭区域自动识别算法,采用以广度优先遍历搜索算法为基础的单源搜索法识别图形所有封闭区域(《电子设计工程》2012年第07期)。
然而,以上所研究的方法主要是针对于二维平面或单连通域内的封闭面寻找方法,且线性多为直线。而实际中,模型的区域常为空间、多连通域,线性有直线、圆、圆弧、椭圆、椭圆弧、样条曲线等构成,为了更加贴近实际工程三维建模,需寻找一种新的搜寻方法替代已有方法。
因此,研究一种能在空间多连通域内自动寻找封闭面的方法已成为三维空间快速建模的迫切需要之一。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种可实现、快速、有效、完全自动化的空间多连通域的封闭面自动搜索方法,可在实际工程应用中使预处理步骤更加简洁,并具有更高的精度。
本发明的目的可以通过以下技术方案来实现:
一种空间多连通域的封闭面自动搜索方法,包括以下步骤:
(1)获取线段集和控制精度,判断所选线段是否处于同一空间平面,若是,则提取基准平面,若否,则退出:
(2)对所有线段求交并在交点处打断;
(3)将所有端点映射到基准平面内,并建立端点与线段之间的引用关系,剔除无效端点及引用该端点的线段;
(4)将所有端点按X、Y坐标值从小到大排序,并建立各线段与端点位置索引值的映射关系;
(5)运用单点围绕法逐个搜寻出每个端点的最小封闭区域,并将该封闭区域的外边线组成一个Wire;
(6)每搜寻完一个端点所有的Wire后,将已遍历过且线段引用数少于2的端点移除;
(7)重复步骤(5)、步骤(6),直至找到所有单连通域的线框,将同一单连通域内的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+1个端点的线段引用数,若否,则执行步骤(33);
(33)将第i个端点与其它端点逐个求距离Lij,判断是否存在min{Lij,j=1,…,i-1,i+1,…,n}小于设定的拟合误差,若是,则自动将第i个端点及与其距离最小的端点进行拟合,若否,则反馈错误信息,将第i个端点及引用该端点的线段删除。
所述的步骤(4)的具体步骤如下:
(41)将所有端点按X、Y坐标值从小到大排序,组成端点集;
(42)构建新的拓扑线段,每一拓扑线段记录了相对应线段的ID和端点对应的位置索引值。
所述的步骤(5)的具体步骤如下:
(51)提取端点集的首端点作为搜寻的起始端点p0,计算点p0所引用的各线段在点p0处的切线方向向量如果点p0不是线段的起始点,则须将向量反向,求各向量与基准平面X轴正向的夹角θ(θ的值域为[-90°,90°]),取夹角(注:非角度绝对值)θ最小的那根线段作为搜寻起始线段;
(52)提取线段l0非p0的另一个端点p1作为下一个搜寻端点,如果端点p1的线段引用数为2,则直接将引用p1的下一条线段l1作为搜寻线段,并将搜寻端点移动至线段l1的非p1端点;如果端点p1的线段引用数大于2,则计算线段l0上点p1处的切线方向向量如果点p1是线段的终点,则须将向量反向,计算引用端点p1的除线段l0外的所有线段与向量的夹角β(β值域为[-180°,180°]),取角度β(注:非角度绝对值)最小的那一根线段作为下一个搜寻线段li;
(53)重复步骤(52),直至下一个搜寻端点回到了初始端点p0,至此一个最小的封闭框搜寻完毕。将此封闭框所路径的端点和线段信息记录到Wire中;
(54)取除线段l0外的夹角最小的那一线段作为搜寻的起始线段,重复步骤(52)、(53),直至所有线段遍历完毕;
(55)当通过起始端点p0所搜寻的Wire个数Nw大于或等于该端点的线段引用数时,说明经过端点p0的所有最小边框均已找到。
所述的步骤(6)的具体步骤如下:
(61)由于途径端点p0的所有最小边框均已找到,则端点p0可以移除,相应地端点p0所引用的线段亦可以移除,在移除各线段时,亦要从其被引用的其它端点中移除;
(62)通过递归遍历端点p0所引用线段的另一端点pi,逐个移除线段引用数少于2的所有端点;
(63)通过步骤(62),如果步骤(5)所搜索到Wire中所有的端点均被移除,则说明一个单连通域的线框全部找到,将这些Wire组成一个Wire Group,并提取未被删除端点集中的首端点作为搜寻起始点p0;如果步骤(5)所搜索到Wire中所有的端点还有线段引用数大于或等于2的,则将其中索引值最小的端点作为搜寻起始点p0。
所述的步骤(9)的具体步骤如下:
(91)遍历所有的Wire Group,逐个构建其线框包围盒,方法为:提取出WireGroup中所有的端点,计算这些点的X、Y坐标的最大值和最小值,利用X、Y坐标的最小值和最大值分别组成矩形的两个角点,则Wire Group的线框包围盒构建完毕;
(92)计算此线框包围盒的面积,并记录此线框包围盒所对应Wire Group的索引值;
(93)将所有的线框包围盒依据面积从大到小进行排序;
(94)提取面积最大的线框包围盒Bmax,判断Bmax与其它的线框包围盒Bi的拓扑关系;
(95)剔除线框包围盒层层包含的情况,以确保各线框包围盒是按从大到小依次成包含关系;
(96)至此,各Wire Group之间的拓扑关系建立完毕。
所述的Bmax与Bi的拓扑关系判断方法如下:
(941)如果二者的线框包围盒分离,则说明Bmax与Bi分离,相互之间没有包含关系,直接跳过,继续遍历下一个Wire Group对象;
(942)如果二者线框包围盒不分离,则须进一步判断Bmax与Bi之间的关系:首先取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的内边界,创建封闭面对象;
提取Wire Group的外边界方法为:剔除Wire Group中线段引用数等于2的线段后所剩线段即为Wire Group的外边界。
与现有技术相比,本发明具有以下优点:
1)本发明解决了空间多连通域寻找封闭面的问题,技术方案完整且易于实现,全自动化寻找,无须用户干预;
2)由于对端点一次遍历即可搜寻出所有的Wire,其计算效率显著提高,时间复杂度是0(n);
3)在搜寻过程中,将许多几何方法描述转化为几何拓扑关系描述,从而避免由于计算精度而引起错误判断;
4)本发明经过大量不同封闭区域验证,其正确率100%;
5)本发明提高了三维几何建模等几何问题的效率和精度,并可在实际工程应用中取得令人满意的效果。
附图说明
图1为本发明方法的流程示意图;
图2为本发明单点围绕法的示意图;
图3为本发明判断Wire Group拓扑关系的示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例
如图1所示,一种空间多连通域的封闭面自动搜索方法,包括以下步骤:
(1)获取线段集和控制精度,判断所选线段是否处于同一空间平面,若是,则提取基准平面,若否,则退出,具体为:
(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+1个端点的线段引用数,若否,则执行步骤(33);
(33)将第i个端点与其它端点逐个求距离Lij,判断是否存在min{Lij=1,…,i-1,i+1,…,n}小于设定的拟合误差,若是,则自动将第i个端点及与其距离最小的端点进行拟合,若否,则反馈错误信息,将第i个端点及引用该端点的线段删除。
(4)将所有端点按X、Y坐标值从小到大排序,并建立各线段与端点位置索引值的映射关系,构建新的拓扑线段TPLine,每一拓扑线段记录了相对应线段的ID和端点对应的位置索引值,TPLine数据结构为:
(5)运用单点围绕法逐个搜寻出每个端点的最小封闭区域,并将该封闭区域的外边线组成一个Wire(线框),具体为:
(51)提取端点集的首端点作为搜寻的起始端点p0,计算点p0所引用的各线段在点p0处的切线方向向量如果点p0不是线段的起始点,则须将向量反向,求各向量与基准平面X轴正向的夹角θ(θ的值域为[-90°,90°]),取夹角θ(注:非角度绝对值)最小的那根线段作为搜寻起始线段l0;
(52)如图2所示,提取线段l0非p0的另一个端点p1作为下一个搜寻端点,如果端点p1的线段引用数为2,则直接将引用p1的下一条线段l1作为搜寻线段,并将搜寻端点移动至线段l1的非p1端点;如果端点p1的线段引用数大于2,则计算线段l0上点p1处的切线方向向量如果点p1是线段的终点,则须将向量反向,计算引用端点p1的除线段l0外的所有线段与向量的夹角β(β的值域为[-180°,180°]),取角度β(注:非角度绝对值)最小的那一根线段作为下一个搜寻线段li:
(53)重复步骤(52),直至下一个搜寻端点回到了初始端点p0,至此一个最小的封闭框搜寻完毕。将此封闭框所路径的端点和线段信息记录到Wire中;
Wire数据结构:
(54)取除线段l0外的夹角最小的那一线段作为搜寻的起始线段,重复步骤(52)、(53),直至所有线段遍历完毕;
(55)当通过起始端点p0所搜寻的Wire个数Nw大于或等于该端点的线段引用数时,说明经过端点p0的所有最小边框均已找到。
(6)每搜寻完一个端点所有的Wire后,将已遍历过且线段引用数少于2的端点移除:
(61)由于途径端点p0的所有最小边框均已找到,则端点p0可以移除,相应地端点p0所引用的线段亦可以移除,在移除各线段时,亦要从其被引用的其它端点中移除;
(62)通过递归遍历端点p0所引用线段的另一端点pi,逐个移除线段引用数少于2的所有端点;
(63)通过步骤(62),如果步骤(5)所搜索到Wire中所有的端点均被移除,则说明一个单连通域的线框全部找到,将这些Wire组成一个Wire Group(线框组),并提取未被删除端点集中的首端点作为搜寻起始点p0;如果步骤(5)所搜索到Wire中所有的端点还有线段引用数大于或等于2的,则将其中索引值最小的端点作为搜寻起始点p0。
(7)重复步骤(5)、步骤(6),直至找到所有单连通域的线框,将同一单连通域内的Wire组成一个Wire Group;
(8)继续遍历,直至所有的Wire Group建立;
(9)计算出各Wire Group的线框包围盒,依据线框包围盒的面积从大到小排序,并建立各Wire Group之间的拓扑关系,具体为:
(91)如图3所示,遍历所有的Wire Group,逐个构建其线框包围盒(Wire Box),方法为:提取出Wire Group中所有的端点,计算这些点的X、Y坐标的最大值和最小值,利用X、Y坐标的最小值和最大值分别组成矩形的两个角点,则Wire Group的线框包围盒构建完毕;
Wire Box数据结构:
(92)计算此线框包围盒的面积,并记录此线框包围盒所对应Wire Group的索引值:
(93)将所有的线框包围盒依据面积从大到小进行排序;
(94)提取面积最大的线框包围盒Bmax,判断Bmax与其它的线框包围盒Bi的拓扑关系;
(95)剔除线框包围盒层层包含的情况,以确保各线框包围盒是按从大到小依次成包含关系;
(96)至此,各Wire Group之间的拓扑关系建立完毕。
所述的Bmax与Bi的拓扑关系判断方法如下:
(941)如果二者线框包围盒分离,则说明Bmax与Bi分离,相互之间没有包含关系,直接跳过,继续遍历下一个Wire Group对象;
(942)如果二者线框包围盒不分离,则须进一步判断Bmax与Bi之间的关系:首先取Bi内任意一点p,然后将Bmax放大1.5倍,并将Bmax围绕着矩形形心旋转45°;从点p出发向Bmax的任意一角点构造一条射线,记为Ri,通过坐标转换将Ri转换为三维空间的射线RT,逐个计算RT穿越包围盒Bmax的交点,如果交点中正好有Bmax边线的端点或切点,则更换Bmax的角点,重新引出一条射线RT,继续计算RT穿越包围盒Bmax的交点;如果交点数目为奇数,则说明Bmax包含Bi,否则不包含。
(10)利用Wire Group创建封闭面:
(101)如果Wire Group没有包含对象,则为单连通域,遍历其内部所有的Wire直接创建封闭面对象;
(102)如果Wire Group有包含对象,则为多连通域,提取其包含子对象的外边界作为Wire Group的内边界,创建封闭面对象;
提取Wire Group的外边界方法为:剔除Wire Group中线段引用数等于2的线段后所剩线段即为Wire Group的外边界。
Claims (10)
1.一种空间多连通域的封闭面自动搜索方法,其特征在于,包括以下步骤;
(1)获取线段集和控制精度,判断所选线段是否处于同一空间平面,若是,则提取基准平面,执行步骤(2),若否,则退出;
(2)对所有线段求交并在交点处打断;
(3)将所有端点映射到基准平面内,并建立端点与线段之间的引用关系,剔除无效端点及引用该端点的线段;
(4)将所有端点按X、Y坐标值从小到大排序,并建立各线段与端点位置索引值的映射关系;
(5)运用单点围绕法逐个搜寻出每个端点的最小封闭区域,并将该封闭区域的外边线组成一个Wire;
(6)每搜寻完一个端点所有的Wire后,将已遍历过且线段引用数少于2的端点移除;
(7)重复步骤(5)、步骤(6),直至找到所有单连通域的线框,将同一单连通域内的Wire组成一个Wire Group;
(8)继续遍历,直至所有的Wire Group建立;
(9)计算出各Wire Group的线框包围盒,依据线框包围盒的面积从大到小排序,并建立各Wire Group之间的拓扑关系;
(10)利用Wire Group创建封闭面。
2.根据权利要求1所述的一种空间多连通域自动寻找封闭面的方法,其特征在于,所述的步骤(1)的具体步骤如下:
(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+1个端点的线段引用数,若否,则执行步骤(33);
(33)将第i个端点与其它端点逐个求距离Lij,判断是否存在min{Lij,j=1,…,i-1,i+1,…,n}小于设定的拟合误差,若是,则自动将第i个端点及与其距离最小的端点进行拟合,若否,则反馈错误信息,将第i个端点及引用该端点的线段删除。
5.根据权利要求1所述的一种空间多连通域自动寻找封闭面的方法,其特征在于,所述的步骤(4)的具体步骤如下:
(41)将所有端点按X、Y坐标值从小到大排序,组成端点集;
(42)构建新的拓扑线段,每一拓扑线段记录了相对应线段的ID和端点对应的位置索引值。
6.根据权利要求5所述的一种空间多连通域自动寻找封闭面的方法,其特征在于,所述的步骤(5)的具体步骤如下:
(51)提取端点集的首端点作为搜寻的起始端点p0,计算点p0所引用的各线段在点p0处的切线方向向量如果点p0不是线段的起始点,则将向量反向,求各向量与基准平面X轴正向的夹角θ,θ的值域为[-90°,90°],取夹角θ最小的那根线段作为搜寻起始线段l0;
(52)提取线段l0非p0的另一个端点p1作为下一个搜寻端点,如果端点p1的线段引用数为2,则直接将引用p1的下一条线段l1作为搜寻线段,并将搜寻端点移动至线段l1的非p1端点;如果端点p1的线段引用数大于2,则计算线段l0上点p1处的切线方向向量如果点p1是线段的终点,则须将向量反向,计算引用端点p1的除线段l0外的所有线段与向量的夹角β,β的值域为[-180°,180°],取角度β最小的那一根线段作为下一个搜寻线段li;
(53)重复步骤(52),直至下一个搜寻端点回到了初始端点p0,至此一个最小的封闭框搜寻完毕,将此封闭框所路径的端点和线段信息记录到Wire中;
(54)取除线段l0外的夹角最小的那一线段作为搜寻的起始线段,重复步骤(52)、(53),直至所有线段遍历完毕;
(55)当通过起始端点p0所搜寻的Wire个数Nw大于或等于该端点的线段引用数时,说明经过端点p0的所有最小边框均已找到。
7.根据权利要求6所述的一种空间多连通域自动寻找封闭面的方法,其特征在于,所述的步骤(6)的具体步骤如下:
(61)由于途径端点p0的所有最小边框均已找到,则端点p0可以移除,相应地端点p0所引用的线段亦可以移除,在移除各线段时,亦要从其被引用的其它端点中移除;
(62)通过递归遍历端点p0所引用线段的另一端点pi,逐个移除线段引用数少于2的所有端点;
(63)通过步骤(62),如果所搜索到Wire中所有的端点均被移除,则说明一个单连通域的线框全部找到,将这些Wire组成一个Wire Group,并提取未被删除端点集中的首端点作为搜寻起始点p0;如果所搜索到Wire中所有的端点还有线段引用数大于或等于2的,则将其中索引值最小的端点作为搜寻起始点p0。
8.根据权利要求7所述的一种空间多连通域自动寻找封闭面的方法,其特征在于,所述的步骤(9)的具体步骤如下:
(91)遍历所有的Wire Group,逐个构建其线框包围盒,方法为:提取出WireGroup中所有的端点,计算这些点的X、Y坐标的最大值和最小值,利用X、Y坐标的最小值和最大值分别组成矩形的两个角点,则Wire Group的线框包围盒构建完毕;
(92)计算此线框包围盒的面积,并记录此线框包围盒所对应Wire Group的索引值;
(93)将所有的线框包围盒依据面积从大到小进行排序;
(94)提取面积最大的线框包围盒Bmax,判断Bmax与其它的线框包围盒Bi的拓扑关系;
(95)剔除线框包围盒层层包含的情况,以确保各线框包围盒是按从大到小依次成包含关系;
(96)至此,各Wire Group之间的拓扑关系建立完毕。
9.根据权利要求8所述的一种空间多连通域自动寻找封闭面的方法,其特征在于,所述的Bmax与Bi的拓扑关系判断方法如下:
(941)如果二者的线框包围盒分离,则说明Bmax与Bi分离,相互之间没有包含关系,直接跳过,继续遍历下一个Wire Group对象;
(942)如果二者线框包围盒不分离,则须进一步判断Bmax与Bi之间的关系:首先取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)如果Wire Group没有包含对象,则为单连通域,遍历其内部所有的Wire直接创建封闭面对象;
(102)如果Wire Group有包含对象,则为多连通域,提取其包含子对象的外边界作为Wire Group的内边界,创建封闭面对象;
提取Wire Group的外边界方法为:剔除Wire Group中线段引用数等于2的线段后所剩线段即为Wire Group的外边界。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210592566.9A CN103065319B (zh) | 2012-12-31 | 2012-12-31 | 一种空间多连通域的封闭面自动搜索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210592566.9A CN103065319B (zh) | 2012-12-31 | 2012-12-31 | 一种空间多连通域的封闭面自动搜索方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103065319A true CN103065319A (zh) | 2013-04-24 |
CN103065319B CN103065319B (zh) | 2015-03-04 |
Family
ID=48107936
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210592566.9A Active CN103065319B (zh) | 2012-12-31 | 2012-12-31 | 一种空间多连通域的封闭面自动搜索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103065319B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104123738A (zh) * | 2014-08-06 | 2014-10-29 | 铁道第三勘察设计院集团有限公司 | 一种二维图形中包围给定点的最小封闭区域发现方法 |
CN106909650A (zh) * | 2017-02-23 | 2017-06-30 | 和创(北京)科技股份有限公司 | 位置提示方法和数据处理装置 |
CN107085865A (zh) * | 2017-05-12 | 2017-08-22 | 杭州电子科技大学 | 应用于有限元分析的四边形分割方法 |
CN108711170A (zh) * | 2018-05-21 | 2018-10-26 | 武汉山骁科技有限公司 | 一种基于拓扑不变性的圈地算法 |
CN111251335A (zh) * | 2020-03-24 | 2020-06-09 | 桂林电子科技大学 | 基于包围盒算法的高精度机械臂碰撞检测方法 |
CN113808238A (zh) * | 2021-09-24 | 2021-12-17 | 北京有竹居网络技术有限公司 | 动画的渲染方法、装置、可读介质和电子设备 |
CN115619893A (zh) * | 2022-07-26 | 2023-01-17 | 中国长江三峡集团有限公司 | 基于矩阵表达式的二维块体切割与搜索方法 |
CN115619961A (zh) * | 2022-07-26 | 2023-01-17 | 中国长江三峡集团有限公司 | 基于矩阵表达式的三维块体切割与搜索方法 |
CN116757025A (zh) * | 2023-06-07 | 2023-09-15 | 中国船级社上海规范研究所 | 一种基于dxf格式的船舶舱室图形自动拾取方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000076465A (ja) * | 1998-08-27 | 2000-03-14 | Canon Inc | 画像処理装置及びその方法 |
JP2000222605A (ja) * | 1999-02-01 | 2000-08-11 | Matsushita Electronics Industry Corp | 有限要素生成装置および有限要素生成方法 |
CN1629849A (zh) * | 2003-12-19 | 2005-06-22 | 大日本网目版制造株式会社 | 图形处理装置、图形处理方法和计算机可读程序 |
JP2008059329A (ja) * | 2006-08-31 | 2008-03-13 | Canon Inc | 閉ループ自動認識装置及び閉ループ自動認識方法 |
CN101527032A (zh) * | 2009-04-03 | 2009-09-09 | 昆山市工业技术研究院有限责任公司 | 平面任意多边形间相互变形方法 |
CN101604452A (zh) * | 2008-06-13 | 2009-12-16 | 北京大学 | 利用开放曲线和临近的闭合曲线构建新的闭合曲线的方法 |
CN102629375A (zh) * | 2012-01-06 | 2012-08-08 | 中国科学院软件研究所 | 一种判定点是否位于多边形内的方法 |
-
2012
- 2012-12-31 CN CN201210592566.9A patent/CN103065319B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000076465A (ja) * | 1998-08-27 | 2000-03-14 | Canon Inc | 画像処理装置及びその方法 |
JP2000222605A (ja) * | 1999-02-01 | 2000-08-11 | Matsushita Electronics Industry Corp | 有限要素生成装置および有限要素生成方法 |
CN1629849A (zh) * | 2003-12-19 | 2005-06-22 | 大日本网目版制造株式会社 | 图形处理装置、图形处理方法和计算机可读程序 |
JP2008059329A (ja) * | 2006-08-31 | 2008-03-13 | Canon Inc | 閉ループ自動認識装置及び閉ループ自動認識方法 |
CN101604452A (zh) * | 2008-06-13 | 2009-12-16 | 北京大学 | 利用开放曲线和临近的闭合曲线构建新的闭合曲线的方法 |
CN101527032A (zh) * | 2009-04-03 | 2009-09-09 | 昆山市工业技术研究院有限责任公司 | 平面任意多边形间相互变形方法 |
CN102629375A (zh) * | 2012-01-06 | 2012-08-08 | 中国科学院软件研究所 | 一种判定点是否位于多边形内的方法 |
Non-Patent Citations (3)
Title |
---|
庞宇飞 等: "《交点判别法——种新型重叠网格洞点搜索方法》", 《THE FOURTH CROSS-STRAIT CFD WORKSHOP, YUNNAN, APRIL 12-13, 2003》 * |
艾迪 等: "《二维图形封闭区域自动识别算法》", 《电子设计工程》 * |
雷安民 等: "《一种寻找平面图形中最小封闭线框的方法》", 《科学技术与工程》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104123738A (zh) * | 2014-08-06 | 2014-10-29 | 铁道第三勘察设计院集团有限公司 | 一种二维图形中包围给定点的最小封闭区域发现方法 |
CN104123738B (zh) * | 2014-08-06 | 2017-10-31 | 中国铁路设计集团有限公司 | 一种二维图形中包围给定点的最小封闭区域发现方法 |
CN106909650A (zh) * | 2017-02-23 | 2017-06-30 | 和创(北京)科技股份有限公司 | 位置提示方法和数据处理装置 |
CN107085865A (zh) * | 2017-05-12 | 2017-08-22 | 杭州电子科技大学 | 应用于有限元分析的四边形分割方法 |
CN108711170A (zh) * | 2018-05-21 | 2018-10-26 | 武汉山骁科技有限公司 | 一种基于拓扑不变性的圈地算法 |
CN108711170B (zh) * | 2018-05-21 | 2022-04-08 | 武汉山骁科技有限公司 | 一种基于拓扑不变性的圈地方法 |
CN111251335B (zh) * | 2020-03-24 | 2021-06-08 | 桂林电子科技大学 | 基于包围盒算法的高精度机械臂碰撞检测方法 |
CN111251335A (zh) * | 2020-03-24 | 2020-06-09 | 桂林电子科技大学 | 基于包围盒算法的高精度机械臂碰撞检测方法 |
CN113808238A (zh) * | 2021-09-24 | 2021-12-17 | 北京有竹居网络技术有限公司 | 动画的渲染方法、装置、可读介质和电子设备 |
CN115619893A (zh) * | 2022-07-26 | 2023-01-17 | 中国长江三峡集团有限公司 | 基于矩阵表达式的二维块体切割与搜索方法 |
CN115619961A (zh) * | 2022-07-26 | 2023-01-17 | 中国长江三峡集团有限公司 | 基于矩阵表达式的三维块体切割与搜索方法 |
CN115619961B (zh) * | 2022-07-26 | 2024-04-30 | 中国长江三峡集团有限公司 | 基于矩阵表达式的三维块体切割与搜索方法 |
CN115619893B (zh) * | 2022-07-26 | 2024-07-05 | 中国长江三峡集团有限公司 | 基于矩阵表达式的二维块体切割与搜索方法 |
CN116757025A (zh) * | 2023-06-07 | 2023-09-15 | 中国船级社上海规范研究所 | 一种基于dxf格式的船舶舱室图形自动拾取方法 |
CN116757025B (zh) * | 2023-06-07 | 2024-02-13 | 中国船级社上海规范研究所 | 一种基于dxf格式的船舶舱室图形自动拾取方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103065319B (zh) | 2015-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103065319A (zh) | 一种空间多连通域的封闭面自动搜索方法 | |
CN107392875A (zh) | 一种基于k近邻域划分的点云数据去噪方法 | |
CN108022262A (zh) | 一种基于点的邻域重心向量特征的点云配准方法 | |
CN112699623B (zh) | 基于非结构网格规则化重构技术的高精度热流计算方法 | |
CN110287904A (zh) | 一种基于众包数据的车道线提取方法、装置及存储介质 | |
CN103440683B (zh) | 一种基于三维散乱稠密点云的三角网格重构方法 | |
CN106326517B (zh) | 层状裂缝-基质杂交网格建模方法和装置 | |
CN103218618A (zh) | 一种基于遥感数字图像的公路路线自动提取方法 | |
Reinders et al. | Skeleton graph generation for feature shape description | |
CN105354881B (zh) | 基于离散属性数据的网格变形优化算法 | |
CN104732192A (zh) | 一种建筑图纸墙体识别方法和装置 | |
CN107274422A (zh) | 一种基于法线信息和k邻域搜索结合的点云边缘提取方法 | |
CN103177258A (zh) | 一种根据矢量等高线数据自动提取地性线的方法 | |
CN109919955A (zh) | 地基式激光雷达点云的隧道轴线提取和分割方法 | |
CN106951643A (zh) | 一种船体复杂外板三维点云数据精简方法及装置 | |
CN103544249A (zh) | 一种古建筑散乱点云空间索引的方法 | |
CN103871090A (zh) | 一种交互式路径生成方法和系统 | |
CN109376586A (zh) | 基于激光点云的道路边界线交互式自动提取方法 | |
WO2024149060A1 (zh) | 可行驶区域和路沿的检测方法、装置及相关设备 | |
CN111199064A (zh) | 一种地铁轨道面三维中心线生成方法 | |
CN113610983A (zh) | 一种离散点空间曲面三角网格自动剖分方法 | |
CN104778678B (zh) | 一种考虑孔喉末端的孔隙喉道识别方法 | |
CN114119620B (zh) | 适用于复杂多腔三维模型的骨架线提取方法 | |
CN104407613B (zh) | 一种避障路径平滑优化方法 | |
CN102938165A (zh) | 基于型面特征逼近的产品stl模型光顺方法 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20190319 Address after: Room 408, 1388 Siping Road, Yangpu District, Shanghai 200092 Patentee after: Shanghai same rock civil engineering Polytron Technologies Inc Address before: Room 408, 1388 Siping Road, Yangpu District, Shanghai 200092 Co-patentee before: Tongji University Patentee before: Shanghai Tongyan Civil Engineering Technology Co., Ltd. |
|
TR01 | Transfer of patent right |