一种确定性复杂多面体建模方法技术

技术编号:37560214 阅读:10 留言:0更新日期:2023-05-15 07:42
本发明专利技术公开了一种确定性复杂多面体建模方法,首先通过文本载入待建模物体的顶点位置坐标,生成一个凸多面体模型,如果待建模的物体是凹多面体,就利用凸多面体进行四面体互补面替换和游离点重拓扑重新修正多面体的顶点的连接关系,就能生成带凹陷槽的凹多面体。本发明专利技术可以快速地生成工程应用当中各种复杂的凸多面体和凹多面体,减少不必要的建模耗时,提高工作效率,给复杂多面体建模提供了新思路。路。路。

【技术实现步骤摘要】
一种确定性复杂多面体建模方法


[0001]本专利技术涉及工业建模领域,特别涉及一种确定性的复杂多面体几何建模方法。

技术介绍

[0002]随着计算机技术的发展,出现了计算机辅助技术(Computer Aided Technology,简称CAD)、计算机辅助制造(Computer Aided Manufacturing,简称CAM)、计算机辅助工程(Computer Aided Engineering,简称CAE),越来越多的工作在计算机上得到了更加便捷的处理。现在工程中的很多工作都涉及CAD/CAM/CAE领域,而复杂多面体在该领域有着广泛的应用。
[0003]复杂多面体包括凸多面体和凹多面体,它们是计算几何非常重要的几何结构。通常情况下,给定点集的凸多面体是唯一确定的,但是凹多面体是不确定的,这就不能使用统一的方法进行复杂多面体的几何建模,于是非常需要有确定性的方法统一凸多面体和凹多面体的几何建模。
[0004]对于凸多面体的几何建模方法,已经有了许多相关的研究。凸多面体是一个三维空间的概念,凸多面体的构造比起二维空间中的凸多边形的构造要难很多。凸多面体算法主要有四大类。第一类是穷举法,这类方法通过顶点的组合构建成面,所有顶点都在面的一侧则为边界面,但是这类方法的时间复杂度比较高,达到了O(n3)。第二类是gift wrapping法,最先提出此类凸多面体构造算法的是Chand和Kapuer的gift wrapping算法,该算法用一个面绕已知的一条边旋转,直到碰到边界点,构成边界三角形面,再绕三角形面的边继续旋转,直到找到所有的边界三角形面包裹住所有点,形成凸多面体。算法从开始到结束,时间复杂度O(n*f),最恶劣的情况下为O(n2)。第三类是增量法,早期提出的增量式算法的时间复杂度都是O(n2),后来得到了改进,比较经典有Clarkson和Shor的随机增量算法,还有Barber和David的QuikHull算法,该类算法主要通过先建立一个四面体,然后不断添加点,更新凸多面体,最终形成包含所有点的凸多面体,它们的时间复杂度为O(nlogn)。第四类是分治算法,分治算法比较难想难写,但是时间复杂度为O(nlogn),Day和Minakawa的分治算法通过合并凸多面体,最终形成一个整体。对于已有的算法,如果凸多面体内存在大量冗余的点,那么这部分点将会大大增加计算的时间,所以研究新的凸多面体构建方法很有必要。
[0005]对于凹多面体的研究也有不少,在三维点云重建方面应用较多。主要使用到了两种算法,第一种是Alpha

shape算法,第二种是Ball Pivoting算法,它们都可以想象成一个半径为r的球在一堆点集中滚动,符合条件的三个点就会构建一个边界三角形面,最后生成一个密闭的凹多面体。这两种算法都是通过自动对点云数据进行收束成面,比较适用于相邻点间距均匀、变化不大的情况,在点云数据不均匀的情况下会产生空洞,造成算法失稳和失真,对于收束的效果需要多次调制参数,而且与理想形态存在误差,需要人工调整,所以仍需要研究具有确定性的凹多面体方法。

技术实现思路

[0006]本专利技术的目的在于提供一种确定性复杂多面体建模方法,可以快速地生成工程应用当中各种复杂的凸多面体和凹多面体,减少不必要的建模耗时,提高工作效率,给复杂多面体建模提供了新思路。
[0007]为了实现上述任务,本专利技术采用以下技术方案:
[0008]一种确定性复杂多面体建模方法,包括以下步骤:
[0009]步骤1,针对工业当中需要进行建模的凸多面体物体,首先获取物体上所有顶点的集合,用一个顶点数组维护集合中的顶点,并获取所有顶点的空间边界;
[0010]步骤2,对于存储了所有顶点的顶点数组进行分治剪枝,得到一个剪去冗余空间的空间二叉树;
[0011]步骤3,通过后序遍历空间二叉树,完善并合并凸多面体对象,如果遍历的当前节点的左右节点有且只有一个存在,转到步骤4;如果左右节点都存在,左右节点对应的凸多面体对象有且只有一个存在,那么就转到步骤5,如果凸多面体对象均不存在,那么转到步骤6,如果凸多面体对象均存在就转到步骤8;
[0012]步骤4,当左右节点有且只有一个存在时,将存在的节点的凸多面体对象指针赋值给当前节点的凸多面体对象指针,并将该节点对应顶点子数组的始末范围赋值更新到当前节点;
[0013]步骤5,对凸多面体对象存在的节点的凸多面体对象的拓扑结构采用步骤7扩充凸多面体,然后将凸多面体对象存在的节点的凸多面体对象指针赋值给当前节点凸多面体对象指针;
[0014]步骤6,若左右节点的凸多面体对象均不存在,那么随机选择当前节点对应顶点数组范围内的4个顶点,判断是否共面,如果不共面,为当前节点的凸多面体对象开辟内存,构建四面体,然后剩余的点按照步骤7的方式扩充凸多面体;如果共面,那么就更换顶点子数组的顶点,直到不共面为止,再按照步骤7扩充凸多面体;
[0015]步骤7,采用增量法将孤立点添加进凸多面体对象中;其中,顶点在没有建立拓扑关系前均认为是孤立点;
[0016]步骤8,通过后序遍历,合并左右节点的凸多面体对象的拓扑结构;
[0017]步骤9,后序遍历,重复步骤8操作,直到将合并的凸多面体传递给根节点,该凸多面体对象的拓扑结构即为载入点集的凸多面体,得到最终建立的针对于工业当中待建模物体的凸多面体模型。
[0018]进一步地,如果待建模的物体是凹多面体,就利用凸多面体进行四面体互补面替换和游离点重拓扑重新修凸正多面体的顶点的连接关系,即可生成带凹陷槽的凹多面体。
[0019]进一步地,所述对于存储了n个顶点的顶点数组进行分治剪枝,包括:
[0020]步骤2.1,构建空间二叉树的节点结构体,该结构体中包含对应节点在顶点数组中的起始位置start和结束位置end,从而建立一个子顶点数组而不必重新开辟内存;该结构体还包含对应的空间边界以及凸多面体物体对象;
[0021]步骤2.2,采用前序递归的方式构建空间二叉树,将节点对应顶点数组,随着递归深度循环地进行顶点坐标x、y、z从小到大排序,并以顶点数组分割点下标mid进行二分;
[0022]步骤2.3,按照步骤2.2的顶点数组划分方式,开辟左右节点内存,左节点的起始位
置值不变,结束位置值更新为mid,右节点的起始位置值更新为mid+1,结束位置值不变;
[0023]步骤2.4,以对应排序划分数组后的分割点mid的值为边界,更新左右节点的空间边界;
[0024]步骤2.5,如果左右节点对应的空间边界包含根节点的任何一个空间边界,那么保留;如果不包含,那么就剪枝;
[0025]步骤2.6,二叉树的构建的终止条件为叶子节点中对应顶点子数组长度小于等于4,如果叶子节点对应顶点子数组的顶点不共面那么就开辟凸多面体对象内存,并由对应顶点数组的顶点构建凸多面体对象;如果没有达到终止条件就转到步骤2.2。
[0026]进一步地,所述通过后序本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种确定性复杂多面体建模方法,其特征在于,包括以下步骤:步骤1,针对工业当中需要进行建模的凸多面体物体,首先获取物体上所有顶点的集合,用一个顶点数组维护集合中的顶点,并获取所有顶点的空间边界;步骤2,对于存储了所有顶点的顶点数组进行分治剪枝,得到一个剪去冗余空间的空间二叉树;步骤3,通过后序遍历空间二叉树,完善并合并凸多面体对象,如果遍历的当前节点的左右节点有且只有一个存在,转到步骤4;如果左右节点都存在,左右节点对应的凸多面体对象有且只有一个存在,那么就转到步骤5,如果凸多面体对象均不存在,那么转到步骤6,如果凸多面体对象均存在就转到步骤8;步骤4,当左右节点有且只有一个存在时,将存在的节点的凸多面体对象指针赋值给当前节点的凸多面体对象指针,并将该节点对应顶点子数组的始末范围赋值更新到当前节点;步骤5,对凸多面体对象存在的节点的凸多面体对象的拓扑结构采用步骤7扩充凸多面体,然后将凸多面体对象存在的节点的凸多面体对象指针赋值给当前节点凸多面体对象指针;步骤6,若左右节点的凸多面体对象均不存在,那么随机选择当前节点对应顶点数组范围内的4个顶点,判断是否共面,如果不共面,为当前节点的凸多面体对象开辟内存,构建四面体,然后剩余的点按照步骤7的方式扩充凸多面体;如果共面,那么就更换顶点子数组的顶点,直到不共面为止,再按照步骤7扩充凸多面体;步骤7,采用增量法将孤立点添加进凸多面体对象中;其中,顶点在没有建立拓扑关系前均认为是孤立点;步骤8,通过后序遍历,合并左右节点的凸多面体对象的拓扑结构;步骤9,后序遍历,重复步骤8操作,直到将合并的凸多面体传递给根节点,该凸多面体对象的拓扑结构即为载入点集的凸多面体,得到最终建立的针对于工业当中待建模物体的凸多面体模型。2.根据权利要求1所述的确定性复杂多面体建模方法,其特征在于,如果待建模的物体是凹多面体,就利用凸多面体进行四面体互补面替换和游离点重拓扑重新修凸正多面体的顶点的连接关系,即可生成带凹陷槽的凹多面体。3.根据权利要求1所述的确定性复杂多面体建模方法,其特征在于,所述对于存储了n个顶点的顶点数组进行分治剪枝,包括:步骤2.1,构建空间二叉树的节点结构体,该结构体中包含对应节点在顶点数组中的起始位置start和结束位置end,从而建立一个子顶点数组而不必重新开辟内存;该结构体还包含对应的空间边界以及凸多面体物体对象;步骤2.2,采用前序递归的方式构建空间二叉树,将节点对应顶点数组,随着递归深度循环地进行顶点坐标x、y、z从小到大排序,并以顶点数组分割点下标mid进行二分;步骤2.3,按照步骤2.2的顶点数组划分方式,开辟左右节点内存,左节点的起始位置值不变,结束位置值更新为mid,右节点的起始位置值更新为mid+1,结束位置值不变;步骤2.4,以对应排序划分数组后的分割点mid的值为边界,更新左右节点的空间边界;步骤2.5,如果左右节点对应的空间边界包含根节点的任何一个空间边界,那么保留;
如果不包含,那么就剪枝;步骤2.6,二叉树的构建的终止条件为叶子节点中对应顶点子数组长度小于等于4,如果叶子节点对应顶点子数组的顶点不共面那么就开辟凸多面体对象内存,并由对应顶点数组的顶点构建凸多面体对象;如果没有达到终止条件就转到步骤2.2。4.根据权利要求1所述的确定性复杂多面体建模方法,其特征在于,所述通过后序遍历,合并左右节点的凸多面体对象的拓扑结构的具体过程为:步骤8.1,右节点的凸多面体对象上的顶点与左节点的凸多面体对象上的面进行符号判断,删除所有为正的面,若左节点的凸多面体对象上的面全部删除,那么左边所有顶点对右节点的凸多面体对象按照步骤7扩充凸多面体;步骤8.2,若步骤8.1中左节点的凸多面体...

【专利技术属性】
技术研发人员:黄志刚周美军张粤东韦伟汛蔡诚晖
申请(专利权)人:广东工业大学
类型:发明
国别省市:

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

1