Python中的球体网格

时间:2014-08-11 22:57:00

标签: python math 3d interpolation mayavi

我试图在球体表面上插入和可视化函数。为此,我需要一个带有球体上插值点坐标的网格。

最初,我尝试使用

生成球体
phi, theta = np.mgrid[0:pi:n, 0:2 * pi:n]

生成如下网格点:

enter image description here

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()并绘制球体网格)

有谁知道我可以这样做的方式?

0 个答案:

没有答案