Я использую Mayavi2 в скрипте Python для вычисления 3d-изо-поверхностей.В результате я получаю объект vtkPoints.Теперь я хочу преобразовать этот объект vtkPoints (vtkout в примере кода ниже) в простой массив с тремя строками, содержащий все значения x, y и z.Я получаю vtkout, используя такой код:
import numpy
from enthought.mayavi import mlab
import array
randVol = numpy.random.rand(50,50,50) # fill volume with some random potential
X, Y, Z = numpy.mgrid[0:50, 0:50, 0:50] # grid
surf = mlab.contour3d(X, Y, Z, randVol, contours=[0.5]) # calc contour
vtkout = surf.contour.contour_filter.output.points # get the vtkPoints object
В настоящее время я использую следующий код для извлечения точек в массив:
pointsArray = numpy.zeros((3, vtkout.number_of_points))
for n in range(vtkout.number_of_points):
pointsArray[0,n] = vtkout[n][0]
pointsArray[1,n] = vtkout[n][1]
pointsArray[2,n] = vtkout[n][2]
Интересно, нет ли общегорутина делает такие преобразования для меня удобным, быстрым и безопасным способом?