VTK中polydata的属性数据结构表示和用法

  vtk中通过vtkDataArray进行数据的存储,通过vtkDataObject进行可视化数据的表达,在vtkDataObject内部有一个vtkFieldData的实例,负责对数据的表达:

                                ​​​​​​​        

 vtkFieldData存储数据的属性数据,该数据是对拓扑结构和几何结构信息的补充。属性数据可以是某个空间点的温度或某个单元的质量等。在vtk中与数据集的点数据相关联的属性数据用vtkPointData表达,与单元数据相关联的属性数据用vtkCellData表达。

其属性内容都用vtkDataArray来存储,如<vtkDoubleArray>来存储某个空间点或者几何结构的某个属性。

例子1,几何结构点point对象的属性设置:

  • 实例化一个 vtkUnstructuredGrid 对象 unStructGrid
  • 设置节点序列信息 cells 和单元序列信息 points
  • 需要渲染节点属性信息时,通过预先设置好的节点属性信息Scalars 进行赋值,并且通过 SetScalarModeToUsePointData() 方法设置 mapper 只显示节点属性
unStructGrid->GetPointData()->SetScalars(Scalars);
ugridMapper->SetScalarModeToUsePointData();

例子2,拓扑结构cell对象的属性设置:

需要渲染单元属性信息时,通过事先设置好的单元属性信息Scalars 进行赋值,并且通过 SetScalarModeToUseCellData() 方法设置 mapper 只显示单元属性

unStructGrid->GetCellData()->SetScalars(Scalars); 
ugridMapper->SetScalarModeToUseCellData();

例子3,这里说明了如何创造并将数据写入一个属性数组scalars:

    // 创建一个属性数组scalars,存放点的属性vtkSmartPointer<vtkDoubleArray> scalars = vtkSmartPointer<vtkDoubleArray>::New();
// 填充点云数据(示例数据)double point[3] = { 0.0, 0.0, 0.0 };double pixel;for (int k = 0; k < dims[2]; k++)// dims[2]; k++){for (int j = 0; j < dims[1]; j++)//dims[1]; j++){for (int i = 0; i < dims[0]; i++){pixel = imageData->GetScalarComponentAsDouble(i, j, k, 0);//获取组分作为属性数据if (pixel > 0){point[0] = i;       //X轴横坐标point[1] = j;       //Y轴纵坐标point[2] = pixel;     //Z轴高度vtkIdType pId[1];       //定义用来存储点的坐标的中间变量,vtkIdType相当int long等类型points->InsertNextPoint(point);     //把点坐标加入VTKPoints中,InserNextPoint()返回加入这些point点依次在VTKPoints中的索引;                   pId[0] = points->InsertNextPoint(point);        //获取要插入cell的pint点的坐标数据。vertics->InsertNextCell(1, pId);        //将VTKPoints的内容加入拓扑结构cell中,这里每将point点加入VTKPoints一次,就将这个VTKPoints加入cell一次。vtkCellArray::InsertNextCell ( vtkIdType npts, vtkIdType * pts )的第一个参数值标是这个cell中点的个数,第二个参数指向那些点的坐标数据。vtkIdType *pts,存储的是所包括点在points中的顺序信息,其个数当然应该和前面的npts一致。这里,2点可以连成一条线,三点可以得到一个面。//也就是说:vtk中关于点、线、面的那些信息都是存放在cellarray中,应用时也是直接对cellarray指针进行处理,数据的写入和读取在vtkCellArray类完成。scalars->InsertNextValue(pixel);    //属性数组scalars,用来存放点属性polydata->SetPoints(points);//加入三维点polydata->SetVerts(vertics);//加入三维点的点索引//还是需要标量scalars来表示高度,并用这个标量进行映射// // scalars->InsertTuple1(i, pixel);//这个格式好像不对//  //polydata->GetPointData()->SetScalars(scalars);//加入点属性//cout << "高度scalars=" << scalars << endl;}}}}

——————————————————————————————————

在 VTK中,数据集的几何数据表示为Points (点集),拓扑关系表示为Cell(单元),属性数据包括Scalar(标量)、Vector(向量)、Normal(法线)、Texture(纹理)等。

image

在VTK中数据集的类型主要按构成数据集的几何数据和单元来划分,主要的数据集类型包括:Structured Points(结构化点集)【vtkStructuredPoints 的父类是vtkImageData】、Unstructured Points (非结构化点集)、Poly Data(多边形数据集)、Structured Grid(结构化网格数据集)、Unstructured Grid(非结构化网格数据集)、Rectilinear Grid(线性网格数据集)等几大类,各类的表现形式如下图所示。

image

image

image

image

(1) Structured Points

按规则排列的点的集合。点的排列和坐标轴平行,形成方形的点阵。vtkStructuredPoints 的父类是vtkImageData,vtkImageData是vtkDataSet的子类。

(2) Unstructured Points

不规则地分布在空间的点集。非结构化点集具有不规则的几何结构,但不具有拓扑结构,用离散点来表达,通常,这类数据没有固定的结构,是由一些可视化程序识别和创建的。

(3) Poly Data

在VTK中多边形数据集是由顶点、多顶点、线、多线、多边形各三角带构成,多边形数据是非结构化的,并且多边形数据集的单元在拓扑维度上有多种变化,顶点、线和多边形构成了用来表达0、1和2维几何图形的基本要素的最小集合,同时用多顶点、多线和三角形带单元来提高效率和性能,特别是用一个三角形带表达N个三角形只需要用N+2个点,但是用传统的表达方法需要用3N个点。vtkPolyData的父类是vtkPointSet,vtkPointSet是vtkDataSet的子类。

(4) Structured Grid

具有规则的拓扑结构和不规则的几何结构,但是单元没有重叠或交叉。vtkStructuredGrid的父类是vtkPointSet。

(5) Unstructured Grid

非结构化网格集是最常见的数据集类型,它的拓扑结构和几何结构都是非结构化的,在此数据集中所有单元类型都可以组成任意组合,所以单元的拓扑结构从零维延伸至三维,在 VTK中任一类型的数据集都可用非结构化网格来表达。vtkUnstructuredGrid的父类是vtkPointSet。

(6)  Rectilinear Grid

是排列在矩形方格中的点和单元的集合,线性网格的拓扑结构是规则的,但其几何结构只有一部分是规则的,也就是说,它的点是沿着坐标轴排列的,但是两点间的间隔可能不同。vtkRectilinearGrid的父类是vtkDataSet。

3.可视化数据集部分的 VTK类列表

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/784807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《福建教育》期刊简介及投稿要求

《福建教育》期刊简介及投稿要求 《福建教育》国内外公开发行的学术期刊&#xff0c;目前出版文献量达19187篇&#xff1b;总下载次数&#xff1a; 1361672次&#xff1b;总被引次数&#xff1a; 8709次 《福建教育》是福建省教育厅主管的唯一一份主流教育专业期刊&#xff0…

【嵌入式智能产品开发实战】(十二)—— 政安晨:通过ARM-Linux掌握基本技能【C语言程序的安装运行】

目录 程序的安装 程序安装的本质 在Linux下制作软件安装包 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 嵌入式智能产品开发实战 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xf…

再探Java为面试赋能(一)Java基础知识(一)变量初始化顺序、构造方法、clone方法

文章目录 第1章 Java基础知识1.1 变量的初始化顺序1.2 构造方法1.3 clone()方法1.3.1 按值传递和按引用传递1.3.2 浅拷贝&#xff08;Shallow Clone&#xff09;1.3.3 深拷贝&#xff08;Deep Clone&#xff09; 第1章 Java基础知识 1.1 变量的初始化顺序 在Java语言中&#…

MybatisPlus速成

MybatisPlus快速入门 快速入门入门案例常见注解常见配置 核心功能条件构造器自定义SQLService接口 扩展功能代码生成静态工具逻辑删除枚举处理器JSON处理器 插件功能分页插件通用分页实体 参考文档 mybatis-plus参考文档 全部资料链接 讲义 快速入门 入门案例 <dependency…

骑行不将就,坐垫要讲究!跟维乐来一场骑美合一的美学旅行~

想象一下&#xff0c;你胯下的坐垫不再是冷冰冰的硬疙瘩&#xff0c;而是化身为“骑行界的舒适艺术家”。美学坐垫宛如马鞍上的微型沙发&#xff0c;采用美学与人体工学的跨界联姻&#xff0c;不仅赏心悦目&#xff0c;更能温柔拥抱你的臀部。它那精妙的曲线设计&#xff0c;仿…

Pandas基本操作

import pandas as pd import numpy as np#读入csv文件 book_df pd.read_csv("./doubantushu2.csv",sep,,headerNone,names[bookname,writer,publication,year,price,value])#inplace "",表明是否对原数据库进行修改&#xff0c;默认为False&#xff08;不…

AI大模型在金融行业的应用场景和落地路径

作者&#xff1a;林建明 来源&#xff1a;IT阅读排行榜 本文摘编自《AIGC重塑金融&#xff1a;AI大模型驱动的金融变革与实践》&#xff0c;机械工业出版社出版这是最好的时代&#xff0c;也是最坏的时代。尽管大模型技术在金融领域具有巨大的应用潜力&#xff0c;但其应用也面…

minor 通过nginx代理 配置 OK

#以下勿动 location /fileStorage/upload/ { proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_he…

EXCEL VBA限制工作数据批号或者自定义规则完整

EXCEL VBA限制工作数据批号或者自定义规则完整 Private Sub Worksheet_Change(ByVal Target As Range)Dim nRow%, Arr(), cMc$, cPc$, cTxt$, nSum!If Target.Row 1 Or Target.Column <> 4 Then Exit SubIf Target.CountLarge > 1 Then Exit SubcMc Target.Offset(0…

再说机器学习

之前我们讨论过机器学习&#xff0c;那是在大厂AI课笔记里面。 今天我们再来说说机器学习。 机器学习概念 机器学习是人工智能的一个子领域&#xff0c;它的核心是让计算机从数据中学习&#xff0c;从而能够自动地改进其性能&#xff0c;在没有明确编程的情况下能够预测新数…

基于两个单片机串行通信的电子密码锁设计

1.功能 电子号码锁在实际应用中应该有两部分&#xff0c;一部分在外部&#xff0c;有键盘部分和密码显示&#xff1b;另一部分内部&#xff0c;设置密码、显示密码。使用单片机自身带有的串口可以很方便的实现单片机之间的通信&#xff0c;使输入的密码值传送到主机检验是否是…

ctf题目

目录 1.文件包含的一道题目&#xff0c;没什么难度&#xff0c; 2.一道sql注入的题目&#xff0c;伪静态 3.限制只能本地访问。 1.文件包含的一道题目&#xff0c;没什么难度&#xff0c; 但是一个点就是它这里去包含的那个文件名就是flag&#xff0c;而不是flag.php也不是f…

数据库---------完全备份和增量备份的数据恢复,以及断点恢复

目录 一、在数据库表中&#xff0c;分三次录入学生考试成绩 1.1先创建库&#xff0c;创建表&#xff0c;完成三次数据的录入 1.2首次录入成绩后&#xff0c;做该表的完全备份 1.3第二次插入后 做增量备份 1.4第三次插入后 做增量备份 二、模拟数据丢失&#xff0c;并使用…

小练习——java中循环语句打印乘法口诀表

正向乘法表 for (int i 1; i<9; i) {for (int j 1; j < i; j) {System.out.print(j "X" i "" (i * j) "\t");}System.out.println();}代码结果&#xff1a; 打印反向乘法表 for (int i 9; i > 1; i--) {for (int j 1; j <…

P32—P33:数据类型概述

P32 数据类型的作用&#xff1a;指导虚拟机JVM在运行时给该数据分配多大的内存 java中的数据类型包括两种&#xff1a;基本数据类型和引用数据类型 基本数据类型包括四大类八种&#xff1a; 第一类&#xff1a;整数型—byte、short、int、long第二类&#xff1a;浮点型—floa…

大数据技术之 Apache Doris(一)

第 1 章 Doris 简介 1.1 Doris 概述 Apache Doris 由百度大数据部研发&#xff08;之前叫百度 Palo&#xff0c;2018 年贡献到 Apache 社区后&#xff0c;更名为 Doris &#xff09;&#xff0c;在百度内部&#xff0c;有超过 200 个产品线在使用&#xff0c;部署机器超过 10…

机器学习周报第35期

目录 一、文献阅读&#xff1a;You Only Look Once: Unified, Real-Time Object Detection1.1 摘要1.2 背景1.3 论文模型1.4 网络设计1.5 YOLO的局限性1.6 实现代码 target 7*7*30 值域为0-1 一、文献阅读&#xff1a;You Only Look Once: Unified, Real-Time Object Detection…

从0开始搭建基于VUE的前端项目(三) Vuex的使用与配置

准备与版本 vuex 3.6.2(https://v3.vuex.vuejs.org/zh/)概念 vuex是什么? 是用作 【状态管理】的 流程图如下 state 数据状态,成员是个对象 mapState 组件使用this.$store.state.xxx获取state里面的数据 getters 成员是个函数,方便获取state里面的数据,也可以加工数据 ma…

LC 106.从中序与后序遍历序列构造二叉树

106. 从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a; inorder [9,3,15,20,7], post…

突破编程_C++_网络编程(OSI 七层模型(物理层与数据链路层))

1 OSI 七层模型概述 OSI&#xff08;Open Systems Interconnection&#xff09;七层模型&#xff0c;即开放系统互联参考模型&#xff0c;起源于 20 世纪 70 年代和 80 年代。随着计算机网络技术的快速发展和普及&#xff0c;不同厂商生产的计算机和网络设备之间的互操作性成为…