【发布时间】:2014-07-20 16:45:52
【问题描述】:
我一直在筛选 Mayavi 文档和 Google,但找不到任何关于 IsoSurface 类使用什么算法的说明。如果有帮助,我的源数据来自传递给 mayavi.mlab.pipeline.scalar_field 函数的 3D NumPy 数组。下面是在包含 3D 立方体的图像上使用 iso_surface 函数的代码:
import numpy as np
from mayavi import mlab
img = np.pad(np.ones((5,5,5)), 1, mode='constant')
src = mlab.pipeline.scalar_field(img, figure=False)
iso = mlab.pipeline.iso_surface(src, contours=0.5)
iso_surface 函数生成一个 IsoSurface 实例。 mayavi\modules\iso_surface.py 中的代码显示使用了 mayavi.components.contour。 mayavi\components\contour.py 中的 cmets 表明它包装了 tvtk.ContourFilter。从我本地安装的 tvtk\tvtk_classes.zip\tvtk_classes\contour_filter.py 的代码中,我在 ContourFilter 类的 __init__ 方法中找到了这个:
tvtk_base.TVTKBase.__init__(self, vtk.vtkContourFilter, obj, update, **traits)
查看vtkContourFilter 的源代码code 以及www.vtk.org 上的相关文档,我没有看到对出版物的引用或在那里实现的算法的名称。
【问题讨论】:
-
它是开源的,你自己去寻找吧。
-
这无济于事,因为它的文档非常稀疏。我正在寻找该算法首次发布的出版物的名称或参考。我最终从源代码中发现 IsoSurface 没有使用 Marching Cubes,但我最初的问题仍未得到解答。
-
我想发布所说的代码不会有伤害:)
标签: python vtk enthought mayavi