首页 > 使用GetNextCell或者GetCell输出vtkCellArray的坐标点

使用GetNextCell或者GetCell输出vtkCellArray的坐标点

vtkSmartPointer<xxx> Point_Array;
vtkCellArray * Cell_Array = Point_Array->GetOutput()->GetPolys();

已知Cell_Array是包含多边形顶点信息的数组。

GetNextCell(vtkIdType& npts, vtkIdType* &pts)

网上常用的是这个,用法是:

vtkIdType npts, *pt_id; //npts表示一个cell中顶点数目,pt_id是cell顶点的id,是个数组
while(Cell_Array->GetNextCell(npts, pt_id){ 
//每遍历一次,npts,pt_id都会不断更新到下一个多边形
}

GetNextCell使用简单,但是弊端是只能单线程操作,如果我们想并行多线程计算每个多边形呢?能够通过多边形索引就能找到多边形的参数就好了,那么GetCell就派上用场了。

GetCell(vtkIdType loc, vtkIdType &npts, vtkIdType* &pts)

先计算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,结果就出错了。

更多相关: