python:如何将numpy转换为vtkCellArray

2024-05-12 17:14:31 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有一个numpy poly,如何将其转换为vtkCellArray

例如,我可以使用以下代码生成多边形:

def computePoly(rows, columns):
    numberOfPolys = (rows - 1) * (columns - 1)
    polys = np.empty((numberOfPolys, 4), np.int64)
    index = 0
    for row in range(rows - 1):
        for col in range(columns - 1):
            pts = [0] * 4
            pts[0] = col + row * columns
            pts[1] = pts[0] + 1
            pts[2] = pts[0] + columns + 1
            pts[3] = pts[0] + columns
            polys[index, :] = pts
    return polys
polys = computePoly(500, 500)

那么,如何将polys转换为vtkCellArray? 我知道我可以在for循环中使用vtkCellArray.InsertNextCell来生成多边形。我之所以生成numpy多边形,是因为我可以使用numba或其他方法来加速它

因此,如何将numpy多边形(n*4)转换为vtkCellArray


Tags: columnsinnumpyforindexnprange多边形
1条回答
网友
1楼 · 发布于 2024-05-12 17:14:31

我自己回答这个问题。代码应为:

def computePoly(rows, columns):
    numberOfPolys = (rows - 1) * (columns - 1)
    polys = np.empty((numberOfPolys*5), dtype=np.int64)
    for row in range(rows - 1):
        for col in range(columns - 1):
            index = (row*(columns-1)+col)*5
            polys[index] = 4
            polys[index+1] = col + row * columns
            polys[index+2] = col + row * columns + 1
            polys[index+3] = col + row * columns + columns + 1
            polys[index+4] = col + row * columns + columns
    return polys
npPolys = computePoly(rows, columns)
polys = vtk.vtkCellArray()
polys.SetCells(npPolys.shape[0], vtk.util.numpy_support.numpy_to_vtkIdTypeArray(npPolys, deep=True))

相关问题 更多 >