玛雅维:两个表面互相阻碍,即使它们互不干涉

2024-04-26 22:09:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着画两个表面,两个表面正好接触两个点,但在其他方面很好地分开。根据观察角度的不同,这要么呈现得很好(图1),要么使上表面s2(等离子,红色)变得混乱,阻碍下表面s1(图2)。我想这是因为曲面的绘制顺序,所以mayavi只是把一个放在前面,即使数学上它应该放在后面。如何解决这个问题?请注意,我想有两个表面不同的颜色地图,因为他们代表不同的东西。谢谢!你知道吗

figure 1, correct plot 图1,正确的绘图 figure 2, wrong plot 图2,错误的绘图

这里是生成绘图的代码。视角是在交互窗口中选择的,不知道如何得到数值。你知道吗

import numpy as np
import mayavi.mlab

x,y = np.mgrid[-np.pi:np.pi:0.01, -np.pi:np.pi:0.01]

def surface1(x,y):
    return -np.sqrt((np.cos(x) + np.cos(y) - 1)**2 + np.sin(x)**2)

def surface2(x,y):
    return np.sqrt((np.cos(x) + np.cos(y) - 1)**2 + np.sin(x)**2)

s1 = mayavi.mlab.surf(x,y,surface1, colormap='viridis')
s2 = mayavi.mlab.surf(x,y,surface2, colormap='plasma')

mayavi.mlab.show()

编辑: 最终发现问题:需要指定正确的后端进行渲染。使用ipython3 --gui=qt解决了这个问题。因此,问题只在使用默认后端时出现(以两者中的为准)。我希望这将被记录得更清楚的地方,会节省我很多工作。你知道吗


Tags: import绘图returndefnppisqrtsin