import Blender
from Blender import NMesh
import math
from math import *
me=NMesh.GetRaw()
i=0
j=0
maxpoint=32**2
n=sqrt(maxpoint)

for i in range(0,n):
    for j in range(0,n):
        x=2*(1 - e**((0.5236 * i)/(6*pi))) * cos(0.5236 * i) * (cos(0.5 * 0.1745* j))**2
        y=2 * (-1 + e**((0.5236 * i)/(6 * pi))) * cos(0.5*0.1745*j) * cos(0.5*0.1745*j) * sin(0.5236 * i)
        z=1 - e**((0.5236*i)/(3*pi)) - sin(0.1745*j) + e**((0.5236*i)/(6*pi)) * sin(0.1745*j)
        v=NMesh.Vert(x,y,z)
        me.verts.append(v)
n0=int(n)

for i in range(0,n-1):  
    for j in range(0,n-1):  
        f=NMesh.Face()  
        f.v.append(me.verts[i*n0+j])  
        f.v.append(me.verts[i*n0+j+1])  
        f.v.append(me.verts[(i+1)*n0+j+1])  
        f.v.append(me.verts[(i+1)*n0+j]) 
        f.smooth=1
        me.faces.append(f) 

#pour fermer la forme  
for j in range(0,n-1):
    f=NMesh.Face()  
    f.v.append(me.verts[j*n0])  
    f.v.append(me.verts[j*n0+n0-1])  
    f.v.append(me.verts[(j+1)*n0+n0-1])  
    f.v.append(me.verts[(j+1)*n0]) 
    f.smooth=1
    me.faces.append(f) 

NMesh.PutRaw(me,"plane",1)  
Blender.Redraw()