vtkSmartPointer<xxx> Point_Array;
vtkCellArray * Cell_Array = Point_Array->GetOutput()->GetPolys();
已知Cell_Array
是包含多边形顶点信息的数组。
网上常用的是这个,用法是:
vtkIdType npts, *pt_id; //npts表示一个cell中顶点数目,pt_id是cell顶点的id,是个数组
while(Cell_Array->GetNextCell(npts, pt_id))
{
//每遍历一次,npts,pt_id都会不断更新到下一个多边形
}
GetNextCell使用简单,但是弊端是只能单线程操作,如果我们想并行多线程计算每个多边形呢?能够通过多边形索引就能找到多边形的参数就好了,那么GetCell就派上用场了。
先计算Point_Array
中有多少个多边形
vtkIdType numCells = Cell_Array ->GetNumberOfCells();
vtkIdType cellLocation = 0; // the index into the cell array
vtkIdType npts1, *pt_id1;
for(int i =0; i < numCells; i++) { Cell_Array ->GetCell(cellLocation, npts1, pt_id1);cellLocation = (i + 1) * (1 + npts1);......
}
重点就是cellLocation的计算方式,一开始我只是简单的cellLocation = i,结果就出错了。