前言:介绍vtk中的两个平滑接口,比较相同和不同之处。
目录
描述: vtkSmoothPolyDataFilter是采用拉普拉斯平滑调整点坐标的接口,目的是使单元格获取更好的形状以及顶点分布的更均匀。该接口作用于构成PolyData的Line,polygons,triangle strips,不会改变Vertex和poly-vertex。
1. 获取PolyData的所有Vertexs。
2. 针对每个Vertex,进行几何和拓扑分析,确定与Vertex相连的顶点集合和单元格集合,并通过数组存储。
3. 根据与顶点Vertex相连顶点集合的平均值对顶点Vertex进行修改。
4. 迭代上述过程,直到获取理想的结果。
1. BoundarySmoothing启用/禁用网格的边界上的顶点的平滑操作。
2. FeatureEdgeSmoothing。若启用,则将内部的顶点(内部顶点为多边形循环包围的流形顶点,或者两条直线共有的点)基于顶点关联的特征边的数量分为简单、内部边界和固定三种类型,每种类型对应不同的平滑方式。当一条边关联的两个曲面的法向量的夹角大于特征角的时候,这条边被定义为特征边。没有特征边关联的Vertex归为“简单”,由两个特征边使用的顶点归为“内边”,其余均为“固定”顶点。 “固定”顶点不会被平滑,简单顶点根据连接顶点坐标的平均值进行平滑,内边顶点仅沿着它们相连的两条边进行平滑,且仅当边之间的角度小于特征角时。
3. 平滑操作通过两个参数来进行控制,即NumberOfIterations(迭代次数)和Convergence(收敛)。迭代次数是平滑过程中迭代的最大次数,收敛是点运动的最大极限。若迭代过程中的最大运动极限小于收敛值,则平滑过程终止。Convergence为迭代过程指定收敛条件;较小的数字导致更平滑的迭代。
描述:vtkWindowedSincPolyDataFilter采用WindowedSinc插值内核进行点的平滑,使得单元格的形状更好,点分布更均匀。该接口作用于构成PolyData的Line,polygons,triangle strips,不会改变Vertex和poly-vertex。
算法实现流程:
1. 获取所有PolyData的点;
2. 针对每个Vertex,进行几何和拓扑分析,确定与Vertex相连的顶点集合和单元格集合,并通过数组存储。
3. 根据与顶点Vertex相连顶点集合采用WindowedSinc内核插值方法进行修改。
4. 迭代上述过程,直到获取理想的结果。