首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用triangular_mesh生成半球形曲面,并在每个顶点表示数据(值或颜色)

用triangular_mesh生成半球形曲面,并在每个顶点表示数据(值或颜色)
EN

Stack Overflow用户
提问于 2014-03-21 14:35:40
回答 1查看 625关注 0票数 0

我想要生成一个表面,它看起来应该像一个半球。到目前为止,我所做的是读取一个已经存在的边界元网格,并尝试在其上显示标量值。但是现在我必须显示一个半球上的标量值,而不是贝姆网格。我不知道如何用一个看起来像半球的三角形网格来生成。

这个半球需要包含一组使用mlab.triangular_mesh的N个点数(x,y,z),在每个顶点,我需要将N个数据(浮点数)表示为值或使用颜色图的变化(例如:蓝色(数据的最低值)到红色(数据的最高值)。data=its大小为2562的数组,一组浮点数,可以作为另一个代码的一部分随机生成。点是另一组形状代码too.its (2562,3)的一部分。但是这个形状不是一个半球,这是我用边界元曲面观察的程序。

代码语言:javascript
复制
fname = data_path + '/subjects/sample/bem/sample-5120-5120-5120-bem-sol.fif'
surfaces = mne.read_bem_surfaces(fname, add_geom=True)
print "Number of surfaces : %d" % len(surfaces) 
head_col = (0.95, 0.83, 0.83)  # light pink
colors = [head_col]
try:
     from enthought.mayavi import mlab
except:
     from mayavi import mlab
mlab.figure(size=(600, 600), bgcolor=(0, 0, 0))
for c, surf in zip(colors, surfaces):
    points = surf['rr']
    faces = surf['tris']
    s=data
    mlab.triangular_mesh(points[:, 0], points[:, 1], points[:, 2],faces,color=c, opacity=1,scalars=s[:,0])



#mesh= mlab.triangular_mesh(x,y,z,triangles,representation='wireframe',opacity=0)        #point_data=mesh.mlab_source.dataset.point_data
#point_data.scalars=t
#point_data.scalars.name='Point data'
#mesh2=  mlab.pipeline.set_active_attribute(mesh,point_scalars='Point data')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-21 18:51:41

正如其他人所指出的,你的问题不是很清楚,也不包括一个容易复制的例子--你的例子将需要大量的工作才能复制出来,而你也没有非常清楚地描述你所采取的步骤。

你想做的事很简单。可以为每个顶点(即每个VTK点)定义标量:

代码语言:javascript
复制
surf = mlab.triangular_mesh(x,y,z,triangles)
surf.mlab_source.scalars = t

你需要设置一个标志才能让它们出现,我认为这可能是你的问题:

代码语言:javascript
复制
surf.actor.mapper.scalar_visibility=True

下面是一些生成半球面的代码。它生成一个VTK多数据。我不是100%确定mayavi源是否与triangular_mesh相同的源类型,但我认为是的。

代码语言:javascript
复制
res = 250. #desired resolution (number of samples on sphere)
phi,theta = np.mgrid[0:np.pi:np.pi/res, 0:np.pi:np.pi/res]

x=np.cos(theta) * np.sin(phi)
y=np.sin(theta) * np.sin(phi)
z=np.cos(phi)

mlab.mesh(x,y,z,color=(1,1,1))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22561694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档