我试图在球体表面上插入和可视化函数。为此,我需要一个带有球体上插值点坐标的网格。
最初,我尝试使用
生成球体phi, theta = np.mgrid[0:pi:n, 0:2 * pi:n]
生成如下网格点:
def make_coor(n):
phi, theta = np.mgrid[0:pi-0:n, 0:2 * pi:n]
Coor = namedtuple('Coor', 'r phi theta x y z')
r = 1
x = r * sin(phi) * cos(theta)
y = r * sin(phi) * sin(theta)
z = r * cos(phi)
return Coor(r, phi, theta, x, y, z)
pts=make_coor(15j)
mlab.figure()
mlab.points3d(pts.x,pts.y,pts.z, scale_factor=0.1)
mlab.mesh(pts.x,pts.y,pts.z)
mlab.savefig('spheretest.png')
mlab.show()
这很棒,因为它让我生成插值点并一次性绘制球体网格。但是,请注意球体顶部的点?嗯,在mgrid中,北极和南极实际上代表了很多次。 (希望这显然会发生这种情况)
这是一个问题,因为当我尝试进行插值时,我不能有多个插值点代表球体上的相同点。这意味着我需要一种方法来生成我的插值点和我的网格网格,使得我在任何地方都没有重复点(特别是在极点处)。 (网格网格是这样的,我可以将插值点发送到mlab.mesh()
并绘制球体网格)
有谁知道我可以这样做的方式?