3D轮廓网格计算

计算科学 计算几何 网格生成 可视化 3d
2021-11-29 09:22:55

我有一个函数在三个维度上的值,f(x,y,z), 平滑变化。

我想计算一个 3D 网格,其中f(x,y,z)有特定的价值。

有算法可以做到这一点吗?(如果是这样,任何实现?)


注意:这是寻找 2D 函数轮廓的 3D 等价物,f(x,y)

二维轮廓示例

2个回答

我认为您可以使用“行进立方体”算法。如果有记忆,它需要一个样本网格作为输入,所以至少你应该能够对你的函数进行采样并按原样运行算法。您还可以修改算法以直接回调到 f 。http://paulbourke.net/geometry/polygonise/上有一个流行的实现,它可能会帮助您入门。

除了 rchilton 建议的基于体素的方法之外,您还可以查看 Delaunay 类型的算法。例如,计算几何算法库 (CGAL) 具有一些用于表面网格生成的内置功能,此处提供示例。您也可以尝试distmesh,其基本思想已被移植到许多其他库和编程语言中。还有一篇关于让 distmesh3d 正常工作的有趣博客文章。