我一直在浏览Mayavi文档和Google,但是我找不到关于IsoSurface类使用什么算法的任何声明。如果有帮助,我的源数据来自传递给mayavi.mlab.pipeline.scalar_field
函数的3D NumPy数组。下面是使用含有3D立方体的图像上的iso_surface功能的代码:mayavi.mlab.pipeline.iso_surface.IsoSurface使用什么算法?
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
函数生成等值面的一个实例。 mayavi \ modules \ iso_surface.py中的代码显示使用mayavi.components.contour。 mayavi \ components \ contour.py中的注释表明它包装了tvtk.ContourFilter。从发现的代码TVTK \ tvtk_classes.zip \ tvtk_classes \ contour_filter.py在我的本地安装,我发现这个在__init__
方法为ContourFilter
类:
tvtk_base.TVTKBase.__init__(self, vtk.vtkContourFilter, obj, update, **traits)
查看源code为vtkContourFilter
及相关文件在www.vtk.org我没有看到对发布的引用或在那里实现的算法的名称。
它是开源的,去找你自己。 –
这没有帮助,因为它的文档很稀少。我正在寻找一个名称或引用该算法首次发布的出版物。我最终从源代码中发现IsoSurface不使用Marching Cubes,但我的原始问题仍未得到答复。 – chippies
我想发布说代码不会伤害然后:) –