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();

 

VTKvtkPolyDataVTK中的一个重要接口,它用于表示和操作多边形数据。vtkPolyData的数据结构包含了顶点、线段、多边形等几何元素,并且支持属性数据的附加。通过vtkPolyData接口,我们可以进行各种几何操作,如创建、修改、查询和可视化多边形数据。 引用提到了vtkPolyData的重要性,掌握了vtkPolyData的数据结构和相关方法可以更好地理解VTK。这个接口的方法包括添加几何元素、修改属性数据、进行几何操作等,可以通过官方文档或相关教程学习和了解。 如果你想将vtkUnstructuredGrid转换为vtkPolyData,可以参考引用中提供的方法。这个过程涉及重新构建输入vtkPolyData数据的Mesh数据,具体的步骤可以在文章中找到。 另外,引用提供了一篇介绍VTK的文章,可以作为参考。VTK是一个开源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化。它的内核是用C构建的,支持多种编程语言的调用,如Java、Tcl/Tk和Python。 总之,VTKvtkPolyData是用于表示和操作多边形数据的接口,可以通过学习相关文档和教程来深入了解其数据结构和方法。同时,可以通过转换方法将其他数据类型转换为vtkPolyData进行处理和可视化。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [VTK-vtkPolyData解读](https://blog.csdn.net/qq_40041064/article/details/127959529)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [VTK基础教程(1)- vtkPolyData 介绍](https://blog.csdn.net/qq_35769071/article/details/122671756)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值