первая проблема. Помогите с превращением эллипсоида в систему треугольных площадок. Есть матрицы x,y,z хранящие координаты точек эллипсоида, полученные по параметрическим уравнениям. Нужно преобразовать x,y,z в массив tri хранящий сегменты (площадки) с координатами трех точек (вершин площадок или рамок). Понимаю что моя попытка (второй листинг) совсем не верная, т.к. даже число точек будет меньше чем n1*n2 из-за полюсов. Направление обхода точек должно определять нормаль к эллипсойду по правилу правого (впрочем можно и левого) винта.
вторая проблема. не смог в mgrid передать переменные n1 и n2 из-за j.
#!/usr/bin/python
from numpy import *
from enthought.mayavi import mlab
rad=array([2.,2.,1.])
z=array([0.,0.,0.])
p,t=mgrid[0.:pi:4j,0:2.*pi:8j]
x=z[0]+rad[0]*sin(p)*cos(t)
y=z[1]+rad[1]*sin(p)*sin(t)
z=z[2]+rad[2]*cos(p)
mlab.clf()
mlab.mesh(x, y, z, color=(0, 1, 1))
mlab.mesh(x, y, z, representation='wireframe', color=(1, 0, 0))
mlab.show()
tri=zeros((32,3,3))
cycle=0
for i in range(3):
for j in range(5):
tri[i*5+j][0]=array([x[i][j],y[i][j],z[i][j]])
tri[i*5+j][1]=array([x[i-1][j],y[i-1][j],z[i-1][j]])
tri[i*5+j][2]=array([x[i][j-1],y[i][j-1],z[i][j-1]])
print tri