我有一个规则的正方形网格,其中所有数据点都存储在质心处。我有一个标量字段(范围:0-> 1),它指示一个单元格内的物质数量。我对确定这种物质在细胞内部的界面感兴趣(以进行进一步处理而不是可视化)。
我遇到了Marching多维数据集算法(http://paulbourke.net/geometry/polygonise/)。在这里,我需要单元格角落的值。因此,我平均了相邻单元的质心值。 这种平均加上进一步的线性化以在MC中的“多边形化”过程中找到相交点,导致了诸如此类的非现实界面。
这里的灰色细胞充满了物质,而其相邻的细胞只有极少量的物质。理想情况下,它应该非常靠近celtre细胞的边界。我觉得这种情况是由于0.25和0之间的线性插值导致其偏离其预期位置的缘故。
可以解决此问题吗?
答案 0 :(得分:1)
Marching-Cubes算法有一个可以调整的参数,即isolevel
。在您的示例中,您似乎为0.05
选择了isolevel
附近的值。当选择一个刚好低于0.25
的值(例如类似0.24
的值)时,界面将更靠近中心单元格。但是,当两个具有值1
的单元格相互接触时,您的结果仍然不能令人满意。角的平均值为0.5
。
您仍然可以尝试的方法:您可以取最大角点值作为单元格值,然后将isolevel
升高到1
以下(例如,不必为计算角点值取平均单元格值) 0.9
。