1

我正在使用 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])

我希望有人可以帮助我。

4

1 回答 1

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,29,29), spacing=(1,1,1))
cube.cutWithMesh(iso).c('silver').alpha(1)
show(iso, cube)

在此处输入图像描述

于 2020-10-22T18:33:20.903 回答