2012-06-20 59 views
0

所有在標題中,我想建立一個球體表面的網格。這並不難,但我不知道它是否已經存在?它是一個工具在numpy或scipy爲了建立一個球形網格?

比如我這樣做:

import scipy as sp 
from scipy import pi, cos, sin 

d = 1.0 

for theta in sp.linspace(0, pi, 20, endpoint = False): 
    for phi in sp.linspace(0, 2. * pi, 20, endpoint = False): 
     x = d * sin(theta) * cos(phi) 
     y = d * sin(theta) * sin(phi) 
     z = d * cos(theta) 

感謝

回答

2

我不認爲有什麼可以做到這一點。不過,你可以擺脫Python循環,這可能會讓點數增加很多。

theta = numpy.linspace(0, numpy.pi, 20, endpoint=False) 
phi = numpy.linspace(0, 2 * numpy.pi, 20, endpoint=False) 
theta, phi = numpy.meshgrid(theta, phi) 
d = 1.0 
x = d * numpy.sin(theta) * numpy.cos(phi) 
y = d * numpy.sin(theta) * numpy.sin(phi) 
z = d * numpy.cos(theta) 
+0

FYI任何人後來都會遇到這種情況。 您可以通過以下方式對上述內容進行翻譯和縮放: '(xs,ys,zs)= map(lambda p:p * r,(x,y,z))'xt = xs * x_centre''yt = YS * y_centre''zt = ZS * z_centre' – Bolster