我正在尝试在球体上绘制数据,但是我无法摆脱它在方位角phi = 2 * pi处缠绕的接缝。我写了一个简单的例子来说明问题:
from mayavi import mlab
import numpy as np
from import_field_map import import_field_map
data = np.empty([24, 25])
for ldx, line in enumerate(data):
for cdx, col in enumerate(line):
data[ldx, cdx] = ldx
phi_range = np.linspace(0.0, 2 * np.pi, 25)
theta_range = np.linspace(-np.pi / 2, np.pi / 2, 24)
phis, thetas = np.meshgrid(phi_range, theta_range)
x = np.cos(thetas) * np.cos(phis)
y = np.cos(thetas) * np.sin(phis)
z = np.sin(thetas)
mlab.figure(1, bgcolor=(1, 1, 1), fgcolor=(0, 0, 0), size=(400, 300))
mlab.clf()
mlab.mesh(x, y, z, scalars=data, colormap='jet')
mlab.view()
mlab.show()
看起来Mayavi无法在这些点处计算GL顶点法线,因为它不知道网格是周期性的。
答案 0 :(得分:0)
我刚刚发现了一个解决问题根源的解决方案(除非它不是问题,我只是使用Mayavi错误)。
使用scipy.ndimage.zoom
我可以对数据数组进行上采样,从而增加渲染面的数量。然后,面和法线法线之间的差异变得很小,以至于接缝不再明显。