欢迎关注更多精彩
关注我,学习常用算法与数据结构,一题多解,降维打击。
参考论文:Paving: A new approach to automated quadrilateral mesh generation
关注公众号回复paving
可以获得文章链接
算法简介
paving算法是一种按行迭代的算法,从边界处开始往内部每次生成一行四边形,直到所有区域铺满四边形。
如下图所示,
当有四边形重叠或者相邻时,会进行缝合操作。
算法过程中的主要操作有,新行选择,封闭检测,行生成,平滑,缝合,行调整,自交检测与处理以及收尾工作
术语与约定
由连续节点组成有序且封闭的多个环形围成的区域作为算法的输入。所有初始边界点在算法开始以后固定不动,包括节点的连接关系和位置,固定边界分为外部边界和内部边界。
外部边界只有一个,按逆时针排序。内部边界为外部边界所围成区域里的洞,按顺时间针排序。所有边界没有相交部分。
每个节点会有一个内角alpha。
随着算法的进行,会生成新的边界节点,新的点节为可动节点。四边形大小会根据边界的大小进行过度。
算法基本过程
算法的基本操作类型有以下几种:
新行选择(Row Choice)
查找需要生成四边形的连续的节点,确定整个序列的起始和结束位置。
封闭检测(Closure Check)
判断边界节点个数是否大于6个,如果小于等于6个,则需要进行封闭操作。
行生成(Row Generation)
在之前起始到结束位置上生成新的四边形
平滑(Smooth)
对可动节点进行平滑,调整来优化网格质量
缝合(Seam)
对小的内角边界进行缝合。
行调整(Row Adjustment)
对于某些过大或过小的四边形,进行添加或删除四边形/边的形式调整四边形大小。
自交检测与处理(Intersection)
对于边界与自身相交或者与别的边界相交的情况,需要进行点移动和边的调整,保证没有自交情况。
收尾整体优化(Cleanup)
所有行的四边形生成后,进行四边形的添加和删除优化整体质量。
整体算法流程如下:
本人码农,希望通过自己的分享,让大家更容易学懂计算机知识。创作不易,帮忙点击公众号的链接,帮忙转发,感激不尽。