一种基于环绕数的布尔运算方法
申请人信息
- 申请人:南京信息工程大学
- 申请人地址:210032 江苏省南京市江北新区宁六路219号
- 发明人: 南京信息工程大学
专利详细信息
| 项目 | 内容 |
|---|---|
| 专利名称 | 一种基于环绕数的布尔运算方法 |
| 专利类型 | 发明授权 |
| 申请号 | CN202311661470.8 |
| 申请日 | 2023/12/6 |
| 公告号 | CN117349914B |
| 公开日 | 2024/3/8 |
| IPC主分类号 | G06F30/10 |
| 权利人 | 南京信息工程大学 |
| 发明人 | 谈玲; 陈鹏; 夏景明 |
| 地址 | 江苏省南京市江北新区宁六路219号 |
摘要文本
本发明公开一种基于环绕数的布尔运算方法,应用于计算机辅助设计软件的基本几何计算,该方法通过三维环绕数和最近距离法查找相交线段与网格面,计算网格面与线段的交点,以链式邻接表作为储存结构,并以三角网格链表作为拓扑结构描述模型,主要包括:获取两个相交模型的三角网格数据;基于环绕数法搜索相交线段;通过最短距离查找相交网格面;计算交点环链;基于广度优先遍历删除模型表面多余节点,并标记环链内部节点。由于本发明通过环绕数定量追踪相交节点的位置,降低了查找交点的计算量,此外,环绕数不受表面间隙的影响,提高了算法的健壮性。
专利主权项内容
1.一种基于环绕数的布尔运算方法,其特征在于,包括如下步骤:步骤1、分别获取目标工件的两个三角形模型A、B的STL数据;步骤2、将两个三角形模型A、B的STL数据转换为以网格节点为根节点的链表;步骤3、基于环绕数法搜索两个三角形模型A、B间的相交线段;具体为:顺序遍历三角网格节点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、利用环绕数法查找相交线段的三角面片;具体为:遍历B模型三角面片,判断当前的三角面是否与相交节点对相交,相交节点对为a, b三角形顶点x, y, z,计算向量xy和xa的叉积, 再计算向量xy与xb的叉积, 如果两个叉积的符号相同,则相交节点对与该三角面不相交,若符号相反,则可能相交,再计算相交线段与三角面片所在平面的交点,并基于二维平面环绕数方法计算该交点与三角形面片的环绕数w, 若w在边界范围内部,则该三角面与相交节点对相交,若w在边界范围外部,则该三角面与相交节点对不相交步骤5、通过相交线段与对应三角面片求解交点集合;步骤6、求解交点集合的内部节点及相交面;具体为:将相交节点作为边界点,依据相交节点对集合的相邻顺序,一次连接相交节点,构成交点环链,计算模型B的三角形顶点与交点的距离,取最短距离顶点作为交点的对应点,将对应点的坐标伸缩至交点,计算所有交点集合的对应点集合,并且依据交点集合中所有交点之间的连接顺序,依次连接所有的对应点,构成对应点环链,以对应点集合的任意点作为初始节点,以对应点环链为边界,在对应点环链内部通过拓扑顺序进行广度优先遍历,标记所有节点,标记的所有节点构成了对应点环链的内部节点;步骤7、根据布尔运算类型对相交面进行增删计算;步骤8、重新构建两个三角形模型A、B的STL数据的边缘结构,更新三角形模型A、B,对目标工件进行检查。