如何解决有没有一种方法可以使用Mayavi填充回旋面的一侧?
我正在使用mayavi绘制回旋管的等值面。我的问题是,我需要通过填充两个生成区域的一侧来获得更坚固的结构。 在以下图片中,您可以看到生成的等值面的外观以及填充一侧后的外观。
我生成的等值面:
应如何显示:
等值面可以通过以下公式生成:
U = sin(2*pi * x/a) * cos(2*pi * y/a) + sin(2*pi * y/a) * cos(2*pi * z/a) \
+ sin(2*pi * z/a) * cos(2*pi * x/a)
我使用以下命令绘制了iso-surface = 0
:mlab.contour3d(U,contours=[0])
我希望有人能帮助我。
解决方法
使用vedo
:
from vedo import *
import numpy as np
a = 15
pi = np.pi
x,y,z = np.mgrid[:30,:30,:30]/a
U = sin(2*pi* x) * cos(2*pi* y) + sin(2*pi* y) * cos(2*pi* z) \
+ sin(2*pi* z) * cos(2*pi* x)
iso = Volume(U).isosurface(0)
plane = Grid(sx=29,sy=29,pos=(14.5,14.5,0),resx=200,resy=200)
cpln = plane.cutWithMesh(iso).wireframe(0).c('tomato').lw(0)
show(iso,cpln,axes=1)
(请注意,红色的“帽子”实际上是一个不同的网格)
PS:您也可以使用CubicGrid(n=(29,29,29),spacing=(1,1,1),alpha=1)
(代替6个平面)。例如:
iso = Volume(U).isosurface(0).smoothLaplacian().c('silver').lw(1)
cube = CubicGrid(n=(29,1))
cube.cutWithMesh(iso).c('silver').alpha(1)
show(iso,cube)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。