8

我有一个 3D 空间(x,y,z),每个点都有一个附加参数(能量),总共提供 4 个维度的数据。

我想找到一组 x、y、z 点,它们对应于通过在已知点之间插值找到的等能表面。

空间网格具有恒定的间距并完全围绕等能表面,但是它不占据立方空间(网格占据大致圆柱空间)

速度并不重要,我可以暂时让这个数字陷入困境。尽管我使用 Python 和 NumPy 进行编码,但我可以在 FORTRAN 中编写部分代码。如果存在这样的库,我还可以包装现有的 C/C++/FORTRAN 库以在脚本中使用。

到目前为止,我在网上(以及在数字食谱中)找到的所有示例和算法都缺少 4D 数据。

4

3 回答 3

8

这里有很多选择......

为了让你的能量进入你的网格,你需要使用某种形式的插值。 Shepard 方法是一种常见且相当简单的实现方法,如果您的数据分布合理,则往往效果很好。

完成后,您需要进行某种形式的等值面生成。

有一些图书馆可以使这变得容易。最值得注意的是,VTK包括 python 包装器,并具有执行这两个步骤所需的所有工具。

有关如何在 VTK 中完成此操作的详细信息,您可以查看vtkShepardMethodvtkContourFilter

于 2009-12-28T23:52:49.430 回答
2

由于您有一个具有恒定间距的空间网格,因此您可以识别等值面相对侧的所有邻居。选择某种形式的插值(qv Reed Copsey's answer)并沿着每个这样的邻居之间的线进行寻根。

于 2009-12-29T07:17:13.877 回答
1

为什么不尝试四线性插值?

将三线性插值扩展另一个维度。只要线性插值模型适合您的数据,它就可以工作。

于 2009-12-28T23:54:54.020 回答