代码改变世界

vtkCellLinks——理解点,单元,和数据集的关系

2014-10-31 17:08  CN-Phoenix  阅读(2056)  评论(0编辑  收藏  举报

vtkCellLinks 表示a list of Links,每个Link包含一个单元Id的列表,

列表中的单元同时在使用同一个点。

//BTX
class Link {
public:
unsigned short ncells;  //列表中单元个数
vtkIdType *cells;      //指向单元id的指针
};

vtkCellLinks ::BuildLinks(vtkDataSet *data)

该函数的功能就是建立上述从Point到Cells的列表

 

从Cell到Points的关系由vtkCell完成,它包括单元所使用的点的信息

// left public for quick computational access
vtkPoints *Points;  //构成单元的Points的坐标信息
vtkIdList *PointIds;  //对应Points的Id信息

 

 同一类型的单元可以组成vtkCellArray的对象。

结构理解为:(n,id1,id2,...,idn, n,id1,id2,...,idn, ...)

n表示一个单元中包含的点的个数,id_表示单元关联的点的Id。

 

不同类型的多个vtkCellArray被添加到vtkCellTypes后可以构成比较复杂的数据集

如vtkPolyData,它包括主要成员变量:

vtkCellArray *Verts;  //点单元集
vtkCellArray *Lines;  //线单元集
vtkCellArray *Polys;  //多边形单元集
vtkCellArray *Strips;     //三角带单元集  

// supporting structures for more complex topological operations
// built only when necessary
vtkCellTypes *Cells;       //关联上述各种单元集,它是获取Cell到Points引用关系的前提
vtkCellLinks *Links;    //获取Point到Cells引用关系的前提

如果要处理点和单元的引用关系,需要先初始化Cells和Links这两个变量,即调用

分别调用BuildLinks和调用BuildCells,与此相反去掉关联的函数分别为DeleteLinks和DeleteCells