System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于环绕数的布尔运算方法技术_技高网

一种基于环绕数的布尔运算方法技术

技术编号:40039511 阅读:7 留言:0更新日期:2024-01-16 19:30
本发明专利技术公开一种基于环绕数的布尔运算方法,应用于计算机辅助设计软件的基本几何计算,该方法通过三维环绕数和最近距离法查找相交线段与网格面,计算网格面与线段的交点,以链式邻接表作为储存结构,并以三角网格链表作为拓扑结构描述模型,主要包括:获取两个相交模型的三角网格数据;基于环绕数法搜索相交线段;通过最短距离查找相交网格面;计算交点环链;基于广度优先遍历删除模型表面多余节点,并标记环链内部节点。由于本发明专利技术通过环绕数定量追踪相交节点的位置,降低了查找交点的计算量,此外,环绕数不受表面间隙的影响,提高了算法的健壮性。

【技术实现步骤摘要】

本专利技术属于计算机辅助设计领域,更特别地涉及到一种在三维建模和工程分析中,用于提高建模准确性和计算效率的布尔运算方法。


技术介绍

1、布尔运算是工业设计和计算机辅助设计中的核心技术,广泛应用于机械工程、建筑设计、三维打印、游戏开发及电影制作等众多行业。具体而言,这种算法在处理复杂几何体的构建、修改和分析过程中发挥着不可或缺的作用。尤其是随着三维打印技术的兴起,对几何体进行精确且高效的布尔运算成为了行业的迫切需求。传统的布尔运算方法在处理复杂模型或者网格密集的场景时,常常受到计算效率低下和稳定性不足的问题困扰。尤其是在高精度的工业仿真领域,设计师经常需要对复杂工件的几何形状进行快速而准确的修改和检查,而现有技术往往难以满足这些高标准的实时布尔运算要求。

2、此外,几何模型中常见的自相交、空隙和其他表面缺陷会对传统的布尔运算方法造成极大的干扰,影响运算结果的可靠性。而基于环绕数的布尔运算方法能够有效地处理这些问题。环绕数方法利用其在数学上的连续性和不连续边界条件的特点,即使在几何模型存在缺陷的情况下,也能准确判断空间中点与模型的相对位置关系,从而极大提高了布尔运算的稳定性和准确性。


技术实现思路

1、本专利技术目的在于克服现有技术的不足,提供一种高效稳定的布尔运算方法,通过改进的数据结构和算法流程,实现更为精确的几何模型处理。本专利技术基于环绕数的布尔运算方法能够大幅度提高计算效率,减少不必要的节点搜索时间,并且通过新颖的算法设计,提高了算法在面对复杂几何体时的健壮性,特别是在面对含有自相交和空隙的几何模型时,能够保持高稳定性和可靠性。为高精度工业设计、仿真分析和快速原型开发等领域的计算问题提供了新的解决途径。

2、本专利技术的技术方案包括了从模型数据输入到三角网格重构的一系列步骤,涵盖了环绕数计算、相交线段查找、交点求解以及最终布尔运算类型的确定和执行。每个步骤都经过精心设计,以确保运算过程中减少计算量,优化运算路径,进而达到提升整体布尔运算性能的目的。

3、技术方案:本专利技术的一种基于环绕数的布尔运算方法,包括如下步骤:

4、步骤1、分别获取目标工件的两个三角形模型 a、 b的stl数据;

5、步骤2、将两个三角形模型 a、 b的stl数据转换为以网格节点为根节点的链表;

6、步骤3、基于环绕数法搜索两个三角形模型 a、 b间的相交线段;

7、步骤4、利用环绕数法查找相交线段的三角面片;

8、步骤5、通过相交线段与对应三角面片求解交点集合;

9、步骤6、求解交点集合的内部节点及相交面;

10、步骤7、根据布尔运算类型对相交面进行增删计算;

11、步骤8、重新构建两个三角形模型 a、 b的stl数据的边缘结构,更新三角形模型 a、 b,对目标工件进行检查。

12、进一步的,步骤2具体为:通过将模型的stl数据转换为以网格点为根节点的链表结构,构建动态网格节点vector, 构建节点之间的相邻关系,每一个三角网格点作为根节点建立链表,根据三角网格的相邻关系插入链表,方法是顺序遍历三角网格节点,查找所有与该节点相邻的网格节点下标,作为该节点的相邻节点插入以该节点为表头的链表结构。

13、进一步的,步骤3具体为:顺序遍历三角网格节点 a模型的三角网格节点 a,直至节点 a位于 b模型的内部,通过计算 a模型表面节点 a与模型 b表面的所有三角形计算立体角之和 sum,将该值与边界范围比较,来判断节点 a与模型 b的空间关系,若 sum在边界范围以外,则节点 a在模型 b外部,若 sum在边界范围内,则节点 a在模型 b的内部,若该点在模型 b内部,并且当节点 a存在某一个相邻节点 b, b节点位于模型 b的外部时,则节点 a, b两点构成相交节点对;采用相邻节点标记的方法,在已知节点对 a, b的基础上,遍历 a的相邻节点 c,当 c不为 b且 c位于模型 b的外部,且 c也存在某个相邻节点 d, 该节点 d位于模型 b的内部,则 c, d节点就是目标节点, 将 c, d节点作为下一对相交节点对的递归计算输入,直到模型 a中所有的相交节点对计算完成,通过所有的相交节点对的外部节点集合是否两两相邻,构成一个环形,来判断模型 a中所有相交节点对是否计算完成。

14、进一步的,步骤4具体为:遍历 b模型三角面片,判断当前的三角面是否与相交节点对相交,相交节点对为 a, b三角形顶点 x,y,z,计算向量 xy和 xa的叉积,再计算向量 xy与 xb的叉积,如果两个叉积的符号相同,则相交节点对与该三角面不相交,若符号相反,则可能相交,再计算相交线段与三角面片所在平面的交点,并基于二维平面环绕数方法计算该交点与三角形面片的环绕数 w,若 w在边界范围内部,则该三角面与相交节点对相交,若 本文档来自技高网...

【技术保护点】

1.一种基于环绕数的布尔运算方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的一种基于环绕数的布尔运算方法,其特征在于,步骤2具体为:通过将模型的STL数据转换为以网格点为根节点的链表结构,构建动态网格节点vector,构建节点之间的相邻关系,每一个三角网格点作为根节点建立链表,根据三角网格的相邻关系插入链表,方法是顺序遍历三角网格节点,查找所有与该节点相邻的网格节点下标,作为该节点的相邻节点插入以该节点为表头的链表结构。

3.根据权利要求1所述的一种基于环绕数的布尔运算方法,其特征在于,步骤3具体为:顺序遍历三角网格节点A模型的三角网格节点a,直至节点a位于B模型的内部,通过计算A模型表面节点a与模型B表面的所有三角形计算立体角之和sum,将该值与边界范围比较,来判断节点a与模型B的空间关系,若sum在边界范围以外,则节点a在模型B外部,若sum在边界范围内,则节点a在模型B的内部,若该点在模型B内部,并且当节点a存在某一个相邻节点b,b节点位于模型B的外部时,则节点a,b两点构成相交节点对;采用相邻节点标记的方法,在已知节点对a,b的基础上,遍历a的相邻节点c,当c不为 b且c位于模型B的外部,且c也存在某个相邻节点d, 该节点d位于模型B的内部,则c,d节点就是目标节点, 将c,d节点作为下一对相交节点对的递归计算输入,直到模型A中所有的相交节点对计算完成,通过所有的相交节点对的外部节点集合是否两两相邻,构成一个环形,来判断模型A中所有相交节点对是否计算完成。

4.根据权利要求1所述的一种基于环绕数的布尔运算方法,其特征在于,步骤4具体为:遍历B模型三角面片,判断当前的三角面是否与相交节点对相交,相交节点对为a,b三角形顶点x,y,z,计算向量xy和xa的叉积,再计算向量xy与xb的叉积,如果两个叉积的符号相同,则相交节点对与该三角面不相交,若符号相反,则可能相交,再计算相交线段与三角面片所在平面的交点,并基于二维平面环绕数方法计算该交点与三角形面片的环绕数w,若w在边界范围内部,则该三角面与相交节点对相交,若w在边界范围外部,则该三角面与相交节点对不相交。

5.根据权利要求1所述的一种基于环绕数的布尔运算方法,其特征在于,步骤5具体为:计算得到所有网格面与对应的线段节点对,由于在判断节点对是否与三角形相交时计算了交点,舍去与对应三角面不相交的交点集合,剩下的交点集合即为所有的相交节点集合,计算两者的交点。

6.根据权利要求1所述的一种基于环绕数的布尔运算方法,其特征在于,步骤6具体为:将相交节点作为边界点,依据相交节点对集合的相邻顺序,一次连接相交节点,构成交点环链,计算模型B的三角形顶点与交点的距离,取最短距离顶点作为交点的对应点,将对应点的坐标伸缩至交点,计算所有交点集合的对应点集合,并且依据交点集合中所有交点之间的连接顺序,依次连接所有的对应点,构成对应点环链,以对应点集合的任意点作为初始节点,以对应点环链为边界,在对应点环链内部通过拓扑顺序进行广度优先遍历,标记所有节点,标记的所有节点构成了对应点环链的内部节点。

7.根据权利要求1所述的一种基于环绕数的布尔运算方法,其特征在于,步骤7具体为:根据布尔运算对相交面的节点进行筛选,若布尔计算类型为模型A与模型B求交,则按照步骤1至6再次计算位于模型A上的相交面节点,再分别删除模型A中非相交面节点,删除模型B中非相交面节点,合并剩余节点;若布尔计算类型为A与B求并,则分别删除模型A与模型B的相交面节点,合并剩余节点;若布尔计算类型为A与B求差,则删除A中的相交面节点,删除B中的非相交面节点,合并剩余节点。

8.根据权利要求1所述的一种基于环绕数的布尔运算方法,其特征在于,步骤8具体为:通过交点环链节点与对应点环链之间节点的对应关系,将对应点伸缩至交点的位置,得到了更新后的三角网格和坐标数据,并通过标记法顺序遍历,从缓存中输出所有三角网格数据至STL格式。

9.一种通信装置,包括处理器以及存储器,其中,所述存储器用于存储计算机程序;所述处理器用于执行所述计算机程序,以实现如权利要求1-8中任一项所述的方法。

10.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-8中任一项所述的方法。

...

【技术特征摘要】

1.一种基于环绕数的布尔运算方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的一种基于环绕数的布尔运算方法,其特征在于,步骤2具体为:通过将模型的stl数据转换为以网格点为根节点的链表结构,构建动态网格节点vector,构建节点之间的相邻关系,每一个三角网格点作为根节点建立链表,根据三角网格的相邻关系插入链表,方法是顺序遍历三角网格节点,查找所有与该节点相邻的网格节点下标,作为该节点的相邻节点插入以该节点为表头的链表结构。

3.根据权利要求1所述的一种基于环绕数的布尔运算方法,其特征在于,步骤3具体为:顺序遍历三角网格节点a模型的三角网格节点a,直至节点a位于b模型的内部,通过计算a模型表面节点a与模型b表面的所有三角形计算立体角之和sum,将该值与边界范围比较,来判断节点a与模型b的空间关系,若sum在边界范围以外,则节点a在模型b外部,若sum在边界范围内,则节点a在模型b的内部,若该点在模型b内部,并且当节点a存在某一个相邻节点b,b节点位于模型b的外部时,则节点a,b两点构成相交节点对;采用相邻节点标记的方法,在已知节点对a,b的基础上,遍历a的相邻节点c,当c不为 b且c位于模型b的外部,且c也存在某个相邻节点d, 该节点d位于模型b的内部,则c,d节点就是目标节点, 将c,d节点作为下一对相交节点对的递归计算输入,直到模型a中所有的相交节点对计算完成,通过所有的相交节点对的外部节点集合是否两两相邻,构成一个环形,来判断模型a中所有相交节点对是否计算完成。

4.根据权利要求1所述的一种基于环绕数的布尔运算方法,其特征在于,步骤4具体为:遍历b模型三角面片,判断当前的三角面是否与相交节点对相交,相交节点对为a,b三角形顶点x,y,z,计算向量xy和xa的叉积,再计算向量xy与xb的叉积,如果两个叉积的符号相同,则相交节点对与该三角面不相交,若符号相反,则可能相交,再计算相交线段与三角面片所在平面的交点,并基于二维平面环绕数方法计算该交点与三角形面片的环绕数w,若w在边界范围内部,则该三角面与相交节点对相交,若w在边界范围外部,则该三角面与相交节点对不相交。

【专利技术属性】
技术研发人员:谈玲陈鹏夏景明
申请(专利权)人:南京信息工程大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1