首页 > 其他分享 >《VTK图形图像开发进阶》第3章VTK基本数据结构——单元类型

《VTK图形图像开发进阶》第3章VTK基本数据结构——单元类型

时间:2023-08-10 21:22:32浏览次数:46  
标签:进阶 图形图像 VTK 四边形 类型 顶点 单元 定义

数据集由一个或多个单元组成。

一系列有序的点按指定类型连接所定义的结构就是单元(Cell),单元是VTK可视化系统的基础。这些顺序连接的点定义了单元的拓扑结构,而点的坐标定义了单元的几何结构。

如下图是类型为六面体(Hexahedron)的单元,顶点列表(由点的索引号表示,即8-10-1-6-21-22-5-7,每个点通过索引号可在顶点列表中检索到该点的实际坐标值)定义了六面体单元的拓扑结构,从图中可以看出,索引为8和10的点连接就构成了六面体十二条边中的一条,而8-10-1-6这四个点连接就构成了六面体的一个面。从这个示例中,可以看出单元是由单元的类型(如六面体)和构成单元的顶点列表两部分构成的。

image

通常用数学符号\(C_i\)来表示单元,换言之,单元就是一个有顺序的点集:\(C_i=\{p_1,p_2,...p_i\}\),其中\(p_i∈P\),\(P\)就是该有序的点集。单元的类型决定了点集里点的顺序(或者说点的拓扑),而定义单元的点的个数就是该单元的大小(Size)。

单元的拓扑维度除了三维之外,还可以是零维、一维、二维等,如零维的顶点(Vertex)、一维的线(Line)、二维的三角形(Triangle)等。单元可以是基本类型或者基本类型的组合。基本类型是指不可再分的单元,组合类型由基本类型组合而成的。比如,三角形条带(Triangle Strip)是由多个三角形组成的。

3.1 线性单元

单元类型的线性与非线性的划分主要以插值函数为依据,对于线性单元,采用的是线性或者常量插值函数。单元里的任意一条边都是由两个点连接定义的。VTK里单元的类型定义在vtkCellType.h文件里。

线性的单元类型如下:

类型 图示 说明
VTK_VERTEX image 顶点,由一个点定义,是零维的基本类型
VTK_POLY_VERTEX image 多顶点,多个顶点组合而成,是零维的组合单元,其定义不受顶点顺序的限制
VTK_LINE image 直线,一维的基本类型,由两个点定义,方向是从第一个点指向第二个点
VTK_POLY_LINE image 折线,由一个或多个线段组合成,一维的类型。由n+1个有序的点连接定义的,n表示折线的线段条数,每两个点(i, i+1)定义一条线段
VTK_TRIANGLE image 三角形,二维的基本类型,由三个点按逆时针的方向连接定义,点的连接方向和表面法向量符合右手法则
VTK_TRIANGLE_STRIP image 三角形条带,由一个或多个三角形组合而成,二维类型。由n+2个有序的点连接定义的,n表示三角形条带里三角形的个数,定义三角形条带的点不需要共面。定义每个三角形的顶点顺序为\((i,i+1,i+2),0 \leq i \leq n\)
VTK_QUAD image 四边形,二维的基本类型,是由共面的四个点按逆时针的方向连接定义的。四边形要求是非自交的凸多边形,利用右手法则可以得到改四边形的表面法向量
VTK_PIXEL image 二维的基本类型,是由共面的四个点按一定的顺序连接定义的。该类型的单元与四边形的区别在拓扑结构上,Pixel类型要求相邻的两条边必须垂直,而且相对的两条边要与坐标轴平行,因此Pixel的表面法向量也与其中的一条坐标轴平行。定义Pixel的四个顶点的顺序与四边形不同,Pixel顶点的计数是先沿着X轴的方向,然后是Y轴,最后是Z轴方向。Pixel是四边形类型的特殊形式,注:Pixel是一种单元类型,与图像像素(Pixel)的概念不同
VTK_POLYGON image 多边形,二维的基本类型,是由共面的三个或三个以上的点按逆时针方向的顺序连接定义的,多边形的表面法向量方向由右手法则确定。该类型要求多边形可以是非凸的,但是不能含有内部循环或者出现相交的边。多边形有n条边,n就是组成多边形的点的个数。
VTK_TETRA image 四面体,三维的基本类型,是由不共面的四个点两两连接定义的,四面体有6条边4个面
VTK_HEXAHEDRON image 六面体,三维的基本类型,包含六个四边形表面、12条边和8个顶点,顶点连接顺序如图,六面体要求必须是凸的
VTK_VOXEL image 三维的基本类型,与六面体的拓扑不一样,但几何上有所区别。Voxel要求相邻的两个面必须垂直,点的连接顺序如图。Voxel是六面体的特殊形式。与Pixel类似,Voxel与三维图像体素的概念是不同的
VTK_WEDGE image 楔形,三维的基本类型,由3个四边形面、2个三角形面、9条边和6个顶点构成。六个点的连接顺序如图,要求面和边不能与其他的相交,且楔形必须是凸的
VTK_PYRAMID image 角锥体,三维基本类型,由1个四边形面、4个三角形面、8条边和5个顶点构成。构成角锥体的点的连接顺序如图。定义四边形的点要求是共面的,且四个点构成的四边形必须是凸的,第五个点与其他四个点不在一个面上
VTK_PENTAGONAL_PRISM image 五棱柱,三维基本类型,由五个四边形面、两个五边形面、15条边和10个顶点构成。点的连接顺序如图,五棱柱的面和边不能与其他的相交且五棱柱必须是凸的
VTK_HEXAGONAL_PRISM image 六角柱,三维基本类型,由6个四边形面、两个六边形面、18条边和12个顶点构成。点的连接顺序如图,六角柱的面和边不能与其他的相交且六角柱必须是凸的

3.2 非线性单元

线性单元与非线性单元的不同点是在渲染和数据处理方法方面,线性单元很容易转换成线性图元,用图形库处理;而非线性单元不被图形库直接支持,必须先转换成线性单元才能被支持。

一般的策略如下(VTK主要采用第一种方法):

  • 将非线性单元细分成线性单元,再把细分的结果当作线性单元来处理。
  • 开发可以直接渲染或者可视化非线性单元的算法。
  • 程序自定义渲染图形库的操作。

image

VTK里非线性单元的类型也是定义在vtkCellType.h文件中,非线性单元的类型如下。

类型 图示 说明
VTK_QUADRATIC_EDGE image 二次曲线,一维基本类型,由三个点定义,其中前两个点分别对应曲线的端点,第三个点位于曲线的中间位置,曲线的方向是由第一个点指向第二个点
VTK_QUADRATIC_TRIANGLE image 二次三角形,二维的基本类型之一,由六个点定义,其中前三个点对应三角形的三个顶点,另外三点分别对应三条边的中点
VTK_QUADRATIC_LINEAR_QUAD image 二次线性四边形,二维的基本类型之一,由六个点定义,其中前四个点对应四边形顶点,另外两个点位于第一和第三条边的中点处
VTK_QUADRATIC_QUAD image 二次四边形,二维的基本类型之一,由八个点定义,其中前四个点对应四个顶点,后四点分别对应四条边的中点
VTK_BIQUADRATIC_QUAD image 双二次四边形,二维的基本类型之一,由九个点定义,其中前四个点对应四个顶点,后四点分别对应四条边的中心,最后一个点位于该二次四边形的中心位置
VTK_QUADRATIC_TETRA image 二次四面体,三维的基本类型之一,由10个点定义,其中前四个点对应四面体的四个顶点,其余六个点分别对应六条边的中点
VTK_QUADRATIC_PYRAMID image 二次角锥体,三维的基本类型之一,由13个点定义,其中前五个点对应角锥体的五个顶点,其余八个点分别对应八条边的中点
VTK_QUADRATIC_HEXAHEDRON image 二次六面体,三维的基本类型之一,由20个点定义,其中前八个点对应六面体的八个顶点,其余12个点分别对应12条边的中点
VTK_BIQUADRATIC_QUADRATIC_HEXAHEDRON image 双二次六面体,三维的基本类型之一,由24个点定义,其中前八个点对应六面体的八个顶点,其余12个点分别对应12条边的中点,最后4个点位于前4面的中心位置
VTK_TRIQUADRATIC_HEXAHEDRON image 三次六面体,三维的基本类型之一,由27个点定义,其中前八个点对应六面体的八个顶点,其余12个点分别对应12条边的中点,另外6个点位于6个面的中心位置,最后一个点位于六面体的中心
VTK_QUADRATIC_LINEAR_WEDGE image 二次线性楔形体,三维的基本类型之一,由12个点定义,其中前六个点对应楔形体的六个顶点,其余六个点分别对应组成上下面两个面的三角形边的中点
VTK_QUADRATIC_WEDGE image 二次楔形体,三维的基本类型之一,由15个点定义,其中前六个点对应楔形体的六个顶点,其余九个点分别对应九条边的中点
VTK_BIQUADRATIC_QUADRATIC_WEDGE image 双二次楔形体,三维的基本类型之一,由18个点定义,其中前六个点对应楔形体的六个顶点,九个点分别对应九条边的中点,最后三个点位于每个二次曲面的中心位置

标签:进阶,图形图像,VTK,四边形,类型,顶点,单元,定义
From: https://www.cnblogs.com/sdyan/p/17614751.html

相关文章

  • AI模型部署&推理进阶教程:使用CSK6视觉开发套件拍照并进行物体识别
    前言在已发布的《CSK6AI模型部署教程》系列文章中,我们实现了将训练的LNN模型在CSK6芯片上运行的完整流程:将一张苹果的图片提取到的特征,并打包到了固件里面,然后在固件里去将它送给thinker模型去进行推理,得出一个苹果的一个推理结果。在以往分享的示例中我们的thinker模型是打包WAS......
  • Ubuntu18.04 安装Opencv3.4.15、PCL1.8.1、VTK7.1.0、Eigen3.4、Pangolin0.6、Sophus
    Eigen3.4安装方法mkdirbuild&&cdbuildcmake..sudomakeinstall安装后头文件安装在/usr/local/include/eigen3/,可以打开看一看安装的库Pangolin0.6安装方法+安装依赖项目sudoapt-getinstalllibglew-devsudoapt-getinstalllibboost-devli......
  • 16.Mycat进阶
    课程目标1、掌握不同数据分片策略的配置方式与特点2、Mycat扩缩容与数据导入导出3、理解Mycat注解的作用与应用场景4、读写分离的实现和原理5、Mycat核心原理分析总结内容定位适合在了解了Mycat的基本使用之后,想要深入学习Mycat的同学1分片策略详解Mycat权威指......
  • 《VTK图形图像开发进阶》第3章VTK基本数据结构——数据对象和数据集
    3.1可视化数据的基本特点离散性数据具有规则或不规则的结构(结构化与非结构化)数据具有维度3.2数据对象和数据集vtkDataObject下图为vtkDataObject类的继承图vtkDataSetVTK里与数据集对应的类是vtkDataSet,该类从vtkDataObject直接派生。vtkDataSet由两个部分组成,即组织......
  • linux进阶:内核模块
    现代内核派系宏内核关键功能(基本功能,不可裁剪、扩展)和服务功能(如文件系统、设备驱动、网络服务等,可裁剪、扩展)均在内核空间提供。运行效率高。扩展性较差。systemcall(系统调用)能够先入内核态来使用内核提供的服务。微内核内核空间只提供关键功能,服务功能在用户空间提供。......
  • hadoop进阶---hadoop性能优化(一)---hdfs空间不足的管理优化
    Hadoop空间不足,hive首先就会没法跑了,进度始终是0%。将HDFS备份数降低将默认的备份数3设置为2。步骤:CDH–>HDFS–>配置–>搜索dfs.replication–>设置为2删除无用HDFS数据和Hbase表格主要使用命令hadoopfs-du,hadoopfs-ls,hadoopfs-rm空间不足根本的解决办法自然是清理空......
  • 【动画进阶】神奇的 3D 磨砂玻璃透视效果
    最近,群友分享了一个很有意思的效果:原效果的网址:frosted-glass。该效果的几个核心点:毛玻璃磨砂效果卡片的3D旋转跟随效果整体透明度和磨砂感、以及卡片的3D形态会随着用户移动鼠标而进行动态变化原效果实现的较为复杂,并且实际体验卡顿感较强。本文,我们就将尝试一步一步......
  • RabbitMQ从入门到精通零基础进阶学习路线?
    RabbitMQ从入门到精通零基础进阶学习路线?学习RabbitMQ可以遵循以下路线,从入门到精通:步骤1:理解消息队列和RabbitMQ基础知识-学习什么是消息队列和为什么要使用它们。-了解RabbitMQ的概念和术语,如生产者、消费者、队列、交换器和绑定等。步骤2:安装和设置RabbitMQ-下载和安装Ra......
  • 《VTK图形图像开发进阶》第2章——VTK智能指针
    2.1引用计数如果很多对象有相同的值,在程序里没有必要将这个值存储多次。更好的办法是让所有的对象共享这个值。这么做不但节省内存,而且可以使程序运行得更快,因为不需要构造和析构这个值的副本。引用计数就是这样一个技巧,它允许多个有相同值的对象共享这个值。引用计数是个简单......
  • 《VTK图形图像开发进阶》第2章——坐标系统及空间变换
    2.1坐标系统计算机图形学里常用的坐标系统主要有4种,分别是Model坐标系统、World坐标系统、View坐标系统和Display坐标系统,此外还有两种表示坐标点的方式:以屏幕像素值为单位和归一化坐标值(各坐标轴取值范围为[-1,1])。它们之间的关系如下图。Model坐标系统:定义模型时所采用的......