我正在使用mayavi (3.3.2)来显示体积等值面。
通常,我的体积不具有立方体元素;例如,采样网格在X和Y方向上可能是1毫米x 1毫米,但在Z方向上为1.4毫米。
如何使用mayavi的
另一种陈述问题的方法:在不重新生成或重新采样体积的情况下(将
我猜测应该有一种方法可以访问底层的VTK图形管道(其变换等),并插入适当的各向异性缩放(如果没有更直接地通过mlab API完成它的话)。
通常,我的体积不具有立方体元素;例如,采样网格在X和Y方向上可能是1毫米x 1毫米,但在Z方向上为1.4毫米。
如何使用mayavi的
mlab.contour3d
或mlab.pipeline.iso_surface
以正确的空间比例显示这些体积? 我真的不想将体积重新采样为立方体网格。另一种陈述问题的方法:在不重新生成或重新采样体积的情况下(将
volume
及其预期的1:1:2长宽高比的像素作为给定),我该怎么做才能使下面的代码显示一个球而不是扁平的椭球。import numpy as np
from enthought.mayavi import mlab
def sqr(x): return x*x
s=64
x,y,z = np.ogrid[0:s,0:s,0:s/2]
volume = np.sqrt(sqr(x-s/2)+sqr(y-s/2)+sqr(2*z-s/2))
isos = mlab.contour3d(volume,contours=[5,15,25],transparent=True)
mlab.show()
我猜测应该有一种方法可以访问底层的VTK图形管道(其变换等),并插入适当的各向异性缩放(如果没有更直接地通过mlab API完成它的话)。
data
应该等于volume
? - foobarbecue