VTK用户指南5:第二部分通过示例学习VTK_16.7 多边形数据集Polygonal Data

vtkPolyData是一种具体的数据集类型,表示顶点、直线、多边形和三角形条带等渲染基本体。数据是完全非结构化的:点在超类vtkPointSet中表示,单元使用vtkCellArray的四个实例表示,这是一个连接列表(图16-3)。四个VTKCellarray代表顶点和多顶点;直线和多段线;三角形、四边形和多边形;和三角带。
在这里插入图片描述
图(a) vtkPolyData和vtkUnstructuredGrid的完整非结构化数据表示。单元指向定义它们的点;点指向使用它们的单元格。该结构可用于确定顶点、边和面邻居以及其他拓扑信息。
图(b) 非结构化数据由点(三维空间中的几何图形和位置)、单元阵列(单元连接性)、单元类型(提供对单元的随机访问)和单元链接(提供拓扑信息)表示。单元类型和单元链接阵列是按需创建的。
图16-3 表示非结构化数据。这种结构用于表示多边形和非结构化网格数据集。
由于vtkPolyData是非结构化的,因此必须显式表示单元和点。为了支持其超类vtkDataSet所需的一些方法(主要是拓扑方法,如GetPointCells()和GetCellNeights()),vtkPolyData具有复杂的内部数据结构,如图16-3所示。除了vtkPoints和vtkCellArrays之外,数据结构还包括单元类型(vtkCellTypes)和单元链接(vtkCellLinks)的列表。单元类型数组允许随机访问单元。这是必要的,因为vtkCellArray无法支持随机访问,因为单个单元的大小可能不同。单元链接数组通过主要包含对使用特定顶点的所有单元的引用来支持拓扑操作。(有关更多信息,请参阅可视化工具包文本。)这两个类的实例vtkCellTypes和vtkCellLinks仅在需要时实例化。也就是说,如果需要对单元格进行随机访问,则实例化vtkCellTypes;或者,如果需要拓扑信息,则会实例化vtkCellLinks。
虽然这个结构相当复杂,但好消息是,在很大程度上,内部结构的管理是由您负责的。通常,只要使用vtkDataSet的API来接口信息,就永远不需要直接操作该结构。在某些情况下,在编写筛选器或使用某些vtkPolyData或vtkUnstructuredGrid方法时,可能必须使用BuildCells()和BuildLinks()方法显式创建单元格类型和/或单元格链接数组。在极少数情况下,您可能希望直接操纵结构,删除点或单元,和/或修改链接数组以反映拓扑的变化。有关更多信息,请参阅第355页的“数据集支持的对象”一节。演示这些复杂运算符用法的代码示例包括Graphics/vtkDecimatePro、Graphics/vtkDelaunay2D和Graphics/vtkDelaunay3D类。

vtkPolyData Methods

vtkPolyData类相当复杂,重载了从其超类vtkDataSet和vtkPointSet继承的许多方法。大部分复杂性是由于在单独的VTKCellarray中定义顶点、直线、多边形和三角形条带,以及在网格上操作的特殊(几何)方法。

SetVerts (verts)

指定顶点vertices列表,verts。参数verts是vtkCellArray的一个实例。

注:顶点(vertices)和点(points)之间的区别在于点定义几何体;而顶点表示包含单个点的单元。单元可以在VTK中直接渲染,而点则不能。

verts = GetVerts()

Get the list of vertices. The list is an instance of vtkCellArray.

SetLines (lines)

Specify the list of lines, lines. The parameter lines is an instance of vtkCellArray.

lines = GetLines()

Get the list of lines. The list is an instance of vtkCellArray.

SetPolys(polys)

Specify the list of polygons, polys. The parameter polys is an instance of vtkCellArray.

polys = GetPolys()

Get the list of polygons. The list is an instance of vtkCellArray.

SetStrips(strips)

Specify the list of triangle strips三角形条带, strips. The parameter strips is an instance of vtkCellArray.

strips = GetStrips()

Get the list of triangle strips. The list is an instance of vtkCellArray

numVerts = GetNumberOfVerts()

Return the number of vertices.

numLines = GetNumberOfLines()

Return the number of lines.

numPolys = GetNumberOfPolys()

Return the number of polygons.

numStrips = GetNumberOfStrips()

Return the number of triangle strips.

Allocate(numCells, extend)

在调用InsertNextCell()(将在下面两项中介绍)方法之前执行初始内存分配。参数numCells是对要插入的单元数的估计;extend是用来扩展内部结构的大小(如果需要)。

Allocate(inPolyData, numCells, extend)

与上述方法类似,此方法为顶点、直线、多边形和三角形条形阵列分配初始存储。不过,它会检查提供的inPolyData,以确定要分配哪些数组;仅当inPolyData中的相应数组中存在数据时,才会分配它们。

cellId = InsertNextCell(type, npts, pts)

给定单元格类型(cell type)、type、单元格中的点数、npts和ids点的整数列表、pts,插入一个单元格并返回其单元格id。有关类型值的定义,请参见图19-20。在调用此方法之前,请确保调用Allocate()。

cellId = InsertNextCell(type, pts)

给定一个单元格类型、type,vtkIdList的实例、ts,插入一个单元格并返回其单元格id。
在调用此方法之前,请确保调用Allocate()。

Reset()

将vtkPolyData的此实例恢复到其初始状态,而不释放分配的内存。

BuildCells()

构建内部vtkCellTypes数组。这允许对单元格进行随机访问(例如GetCell()和其他特殊的vtkPolyData方法)。通常,除非对vtkPolyData执行专门的操作,否则不需要调用此方法。

BuildLinks()

构建内部vtkCellLinks阵列。这样可以访问拓扑信息,例如邻域(例如顶点、边、面邻域)。通常不需要调用此方法,除非对vtkPolyData执行特殊操作。

DeleteCells()

释放内部vtkCellTypes阵列(array)的内存,该阵列允许随机访问单元。此方法也会隐式删除单元格链接,因为它们不再有效

DeleteLinks()

Release the memory for the internal vtkCellLinks array

GetPointCells(ptId, ncells, cells)

Given a point id (ptId), return the number of cells using the point (ncells), and an integer array of cell ids that use the point (cells).

GetCellEdgeNeighbors(cellId, p1, p2, cellIds)

给定一个单元格(cellId)和两个点(p1和p2)形成单元格边缘,填写用户提供的使用边缘(p1,p2)的所有单元格列表。

GetCellPoints(cellId, npts, pts)







  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
vtk用户指南》是一本介绍Visualization Toolkit(VTK)的使用和应用的指南,它提供了VTK的详细说明和说明,以便用户可以有效地利用VTK进行科学和工程可视化。该指南涵盖了VTK的各个方面,包括数据处理、可视化和交互式操作等内容。 VTK是一个强大的开源软件库,用于开发和呈现三维图形和图像的应用程序。它广泛应用于医学成像、地质学、气象学、工程建模等领域,因此《vtk用户指南》对于从事这些领域的科研人员和工程师来说是一本非常有价值的参考书籍。 该指南的中文版PDF能够帮助中国的VTK用户更方便地了解和使用VTK,提高他们的工作效率和成果。通过阅读《vtk用户指南》中文版PDF,用户可以学习VTK的基本概念、算法和数据结构,了解VTK的特点和优势,并掌握VTK的基本操作和高级功能。 此外,该指南还介绍了VTK在实际项目中的应用示例,帮助用户更好地理解VTK在科学和工程领域的实际价值和作用。通过学习vtk用户指南》,用户可以更好地利用VTK进行数据的可视化和分析,为自己的研究和项目提供更好的支持和帮助。 总之,《vtk用户指南》中文版PDF是一本非常有用的参考资料,对于VTK用户和开发者来说具有重要的意义。阅读该指南能够帮助用户更好地了解和掌握VTK的使用和应用,为他们的工作和研究提供更好的支持和指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haimianjie2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值