欢迎关注更多精彩
关注我,学习常用算法与数据结构,一题多解,降维打击。
参考论文:Paving: A new approach to automated quadrilateral mesh generation
关注公众号回复paving
可以获得文章链接
paving(一)基本概述
paving(二)新行选择
paving(三)行生成
paving(四)平滑
缝合
缝合操作就是对夹角很小的边界处进行合并连接。
判断缝合的标准有节点的内角 α \alpha α和节点连接的边数Ne, 固定节点也需要缝合。
一共有3种缝合类型:1)可动边界节点,2)固定节点缝合,3)2个大小不一样的四边形的缝合。
节点内缝合
边界可动节点缝合条件如下:
从上述条件可以看出,随着节点度的增加,缝合角度条件会变小。
如上图所示,缝合是一个递归操作,缝合完当前点后,需要检查新节点是否需要缝合,直到不满足缝合条件为止。
固定点缝合
对于角度很小的固定点,一旦生成了面,就不能平滑操作调整。
对于这种情况,可以采用延迟闭合的方式来优化。
如下图所示,Ni节点是一个角度很小的固定点,如果直接生成四边形,则这个四边形会比较扭曲。
可以采用b)的方式,先不在Ni处生成四边形,等第二行生成时,会有自交情况产生,此时再做缝合,则可以生成比较好的四边形。
旋转缝合
当节点的两条边长相差比较大时,就需要用到旋转缝合。
如下场景,当长边与短边之比大于2.5时,就需要进行旋转缝合。
旋转缝合分3步,在长边侧先添加一条wedge边(在后面的章节会提到如何添加),然后把Ni的长边端点移动至短边的端点,最后做一次节点平滑。
闭合检测
在边界上生成四边形之前,需要先检测是否符合闭合要求。
如果边界节点数少于或等于6个,则需要闭合。
由于边界节点数都是为偶数,那么当需要闭合时有4种情况:
节点数0:直接完成闭合。
节点数2:做一次缝合操作即可。
节点数4:添加一个四边形即可。
节点数6:枚举下面12种情况即可。
图形上方的数字代表每一侧的连续边条数。
本人码农,希望通过自己的分享,让大家更容易学懂计算机知识。创作不易,帮忙点击公众号的链接,帮忙转发,感激不尽。