欢迎关注更多精彩
关注我,学习常用算法与数据结构,一题多解,降维打击。
参考论文:Q-Morph an indirect approach to advancing front quad meshing
算法简介
Q-Morph算法是一种基于三角网格生成全四边形网格的算法,所以它是一种间接法,像paving属于直接法。与paving相比,它克服了自交问题和边长过度问题。
算法基本过程
算法的基本操作类型有以下几种:
- 基础三角网格生成:Q-Morph是基于三角网格的间接法,所以要先生成三角网格。生成三角网格算法有很多,比较常用的是delauney算法
- 初始化底边队列Front: 初始时,将所有边界边加入到Front
- 底边分类:Front队列里的所有边是要按照状态(state)来排序。边的state是由该边与邻边组成的角度决定。如下图,粗的边为底边,角度大于3π/4则为0,否则为1.
4. 底边生成四边形过程:每个底边都会根据当前三角网格信息生成一个单独的四边形。
上图是以NA-NB为底边生成一个四边形的过程。每个底边会根据状态的不同采取不同的处理策略。生成一个四边形后,需要对Front队列进行更新。四边形生成可以细分为以下步骤。
- 侧边生成:侧边可以由现有三角边直接生成或翻转生成,也可以对三角形进行分裂的新边组成(b)。
- 顶边生成:通过多次翻转三角边,生成一条边,可以直接连接两个侧边的顶点(c)。
- 四边形生成:需要对四边形内部的边进行删除操作(d)。
- 局部平滑:对顶点进行移动优化网格质量(e)。
- 更新Front队列:删除当前边,对新生成的边判断并添加。
当Front队列不为空时,四边形生成过程需要一直执行。
- 拓扑整理:通过改变点的度数来减少奇异点,提升网格质量。
- 平滑:对整体网格进行平滑操作来进一步提升网格质量。
本人码农,希望通过自己的分享,让大家更容易学懂计算机知识。创作不易,帮忙点击公众号的链接,帮忙转发,感激不尽。