vtkjs - vtkPolydata&vtkDataSet

 
 
vtkDataSet
 
是一个表示数据集对象的抽象类,算法流处理对象都是数据集,下面是官方介绍
In vtk a dataset consists of a structure (geometry and topology) and
attribute data. The structure is defined implicitly or explicitly as
a collection of cells. The geometry of the structure is contained in
point coordinates plus the cell interpolation functions. The topology
of the dataset structure is defined by cell types and how the cells
share their defining points.

vtkDataSet由结构数据(geometry&topology) 和属性数据(attribute data)组成。

结构数据由一个cells集合显示或者隐式的定义。这里geometry 表示的是点的序号信息,topology由cell的类型表示这些点该怎么表达(点,线,面,多边形?)
属性数据要么是point data or cell data,典型的用于filter处理。
 
其实vtkDataSet主要作用就是定义了DataSet的几种属性,方便filter操作:
const DATASET_FIELDS = ['pointData', 'cellData', 'fieldData']
  // Add dataset attributes
  DATASET_FIELDS.forEach((fieldName) => {
    if (!model[fieldName]) {
      model[fieldName] = vtkDataSetAttributes.newInstance();
    } else {
      model[fieldName] = vtk(model[fieldName]);
    }
  });

 

vtkPointSet extends  vtkDataSet
上面的 vtkDataSet只定义几种属性数据,vtkPointSet表示点集,vtkPolygon继承于它。
其的points属性是一个vtkPoints数据对象,存放了顶点数据。
通过getPoints获取点集数据。
vtkPointSet is an abstract class that specifies the interface for
datasets that explicitly use "point" arrays to represent geometry.
For example, vtkPolyData and vtkUnstructuredGrid require point arrays
to specify point position, while vtkStructuredPoints generates point
positions implicitly.
下面是ts写它的定义
     class vtkPointSet extends vtkDataSet{
        //Constructor & properties
        static newInstance(initalValues?:{}):vtkPointSet;
        getNumberOfPoints();
        getBounds();
        computeBounds();
        shallowCopy(other, debug = false);
        getPoints():Core.vtkPoints;
        setPoints(vtkPoints:Core.vtkPoints);
      }

 

 
vtkpolydata  extends  vtkPointSet
 
除了本身是点集,还包含了cell信息,来表示这些点集如何拓扑(这些点构成什么样的片元,点?线?面?),cell信息包括(点verts ,线lines,三角面polys,三角带strips,)
下面几个方法可以获取对应的vtkCellArray数据
getVerts()
getLines()
getPolys()
getStrips()

vtkCellArray数据存放了每个Cell元素的顶点索引

                如三角面: [3,posid1,posid2,posid3,3,posid2,posid3,posid4]
                           线:[2,pos1,pos2,2,pos2,pos3]
 
 
 
vtkDataArray
可以把它认为是一个ArrayBuffer的封装,points,cells数据最终都存在这里。
通过下面两个方法来存取数据,因为他继承于vtkObject ,在setData后会调用modified方法通知对象修改。
setData(typeArray)
getData()

 

 
所以vtkPolyData获取点数据和cell数据
    let pld = sourcePxy.getDataset();
    let points = pld.getPoints().getData();
    let cells = pld.getPolys().getData();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值