我希望使用高斯函数平滑给定的3D网格,该网格使用半边结构来存储邻接信息。以下是提出的算法:
通过移动每个顶点来平滑网格 到加权确定的位置 平均邻居的平均值 (权重由高斯决定 西格玛等于平均长度 附着在顶点上的边缘, 归一化使得权重总和 一个)。
因此对于每个顶点curr_vertex
,我
重量= EXP( - (距离*距离)/(2 西格玛西格玛))
where distance is the 3D distance between the
{curr_vertex {1}} {西格马{1}} curr_vertex`
当我这样做并运行我的算法时,而不是平滑实际发生的是一个刻度 - 我的网格变得放大而没有任何明显的平滑。
对我做错了什么的想法?
编辑: 这是我的代码:
and the neighbor and
答案 0 :(得分:1)
这是一个令人头疼的错字式错误。你描述的算法看起来很好。
首先清楚地验证权重的标准化。
接下来检查您的代码,将计算出的顶点位置写回到新的平滑网格中。
这些是我的猜测。如果这些代码不起作用,请随意发布代码段。