【vtk学习笔记4】基本数据类型

news2024/12/25 12:36:22

一、可视化数据的基本特点

可视化数据有以下特点:

  1. 离散型
    计算机处理的数据是对无限、连续的空间进行采样,生成的有限采样点数据。在某些离散点上有精确的值,但点与点之间值不可知,只有通过插值方式获取
  2. 数据具有规则或不规则的结构
    可视化数据分为规则与不规则或称为结构化与非结构化。规则结构数据点之间有固定的关联关系,可以通过这些关系确定每个点的坐标,不规则数据之间没有关联关系。规则结构的数据在存储及计算时占优势,不规则数据在数据表达方面更加自由、灵活、通用
  3. 数据具有维度
    可视化数据分为零维、一维、二维、三维甚至更高维,例如零维表现为点,一维数据表现为曲线,二维数据表现为曲面,三维数据表现为体,甚至可以包含时间维度。

二、数据对象vtkDataObject

在VTK中,数据一般以数据对象(类vtkDataObject)的形式表现。数据对象是数据的集合,数据对象表现的数据是可以被可视化管线处理的数据,只有当数据对象被组织成一种结构后,才能被VTK提供的可视化算法处理。
VTK里的所有数据结构形式都是从vtkDataObject派生出来,但在实际的应用中,没有直接使用vtkDataObject来实例化数据对象,而是根据具体的可视化数据选用具体的子类实现。

三、vtkDataSet

将数据对象组织成一种结构并且赋予相应的属性值,就形成了数据集(DataSet)。vtk里与数据集对应的类是vtkDataSet,该类从vtkDataObject直接派生。vtkDataSet由两部分组成:组织结构、属性数据。

组织结构又细分为拓扑结构和几何结构。拓扑结构描述了对象的构成形式,几何结构表述对象的空间位置关系。如点数据定义的一系列坐标点构成了数据集的几何结构;点之间的连接形成单元数据(Cell Data)则是拓扑结构。

属性数据是组织结构数据的补充,可以是空间某点的位移值,温度值等。

四、单元类型

一系列有序的点按指定类型连接所定义的结构就是单元,数据集由一个或多个单元组成。VTK支持的线性和非线性单元如下图:

无法显示图片时显示的文字
VTK线性单元
无法显示图片时显示的文字
VTK非线性单元

单元是由单元类型和构成单元的顶点两部分组成。单元类型决定了点集里点的顺序,点的个数是单元是大小Size。单元的线性与非线性的划分主要是以插值函数为依据。VTK里单元类型的定义在vtkCellType.h文件中。

非线性单元提供更加准确的插值函数,可获得更加理想的可视化效果。非线性单元需转换成线性单元才能进行渲染,VTK中是将非线性单元进行细分,将细分结果当初线性单元进行处理。

无法显示图片时显示的文字
VTK用固定细分方法处理非线性单元

最后看个绘制三角形的例子:

#include <vtkSmartPointer.h>
#include <vtkPolygon.h>
#include <vtkTriangle.h>
#include <vtkCellArray.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkProperty.h>
#include <vtkNew.h>
#include <iostream>

int main(int argc, char *argv[])
{
    // 几何点
	vtkNew<vtkPoints> points;
	points->InsertNextPoint(0.0, 0.0, 0.0);
	points->InsertNextPoint(1.0, 0.0, 0.0);
	points->InsertNextPoint(1.0, 1.0, 0.0);

    // 多边形单元,有三个顶点
	vtkNew<vtkPolygon> polygon;
	polygon->GetPointIds()->SetNumberOfIds(3);
	polygon->GetPointIds()->SetId(0, 0);
	polygon->GetPointIds()->SetId(1, 1);
	polygon->GetPointIds()->SetId(2, 2);

    // 数据集的单元Set
	vtkNew<vtkCellArray> cells;
	cells->InsertNextCell(polygon);

    // 建立多边形数据集,包括几何点与拓扑信息
	vtkNew<vtkPolyData> polygonPolyData;
	polygonPolyData->SetPoints(points);
	polygonPolyData->SetLines(cells);

	vtkSmartPointer<vtkPolyDataMapper> mapper =
		vtkSmartPointer<vtkPolyDataMapper>::New();
	mapper->SetInputData(polygonPolyData);

	vtkSmartPointer<vtkActor> actor =
		vtkSmartPointer<vtkActor>::New();
	actor->SetMapper(mapper);

	vtkSmartPointer<vtkRenderer> renderer =
		vtkSmartPointer<vtkRenderer>::New();
	renderer->AddActor(actor);
	renderer->SetBackground(0.5, 0.5, 0.5);

	vtkSmartPointer<vtkRenderWindow> renderWindow =
		vtkSmartPointer<vtkRenderWindow>::New();
	renderWindow->AddRenderer(renderer);
	renderWindow->SetSize( 640, 480 );
	renderWindow->Render();
	renderWindow->SetWindowName("PolyDataNew");

	vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
		vtkSmartPointer<vtkRenderWindowInteractor>::New();
	renderWindowInteractor->SetRenderWindow(renderWindow);

	renderWindow->Render();
	renderWindowInteractor->Start();

	return EXIT_SUCCESS;
}

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

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

相关文章

const迭代器与模板构造函数

在自己实现C中list的时候&#xff0c;当实现const迭代器的时候&#xff0c;发现报错了&#xff0c;一直思考到现在 才发现是一个&#xff0c;很简单的问题&#xff0c;但是也让我有了一点感受&#xff0c;我在这里给大家分享一下。文章目录 1.当时遇到的问题2.解决方法3. 自己的…

什么是用户体验测试? 为什么很重要?

在当今数字化时代&#xff0c;用户体验(User Experience&#xff0c;简称UX)已经成为产品成功的关键因素之一。无论是应用程序、网站、硬件设备还是软件&#xff0c;提供出色的用户体验不仅能够吸引更多用户&#xff0c;还能够增加用户满意度&#xff0c;提高品牌忠诚度&#x…

残差网络ResNet

残差网络的提出,是为了解决深度学习中的退化问题。 退化问题指的是随着神经网络层数的增加&#xff0c;网络性能反而逐渐降低的现象。换句话说&#xff0c;当我们不断增加神经网络的层数时&#xff0c;神经网络的训练误差可能会持续下降&#xff0c;但是验证集误差却不断增加&…

全球发布|首个AI视角下的生态系统架构解读—《生态系统架构--人工智能时代从业者的新思维》重磅亮相!

点击可免费注册下载 &#x1f447; 人工智能时代的企业架构师必读系列 《生态系统架构--人工智能时代从业者的新思维》 Philip Tetlow、Neal Fishman、Paul Homan、Rahul著 The Open Group Press 2023年11月出版 这本书可以很好地帮助全球架构师使用人工智能来构建、开发和…

HarmonyOS基础组件的使用

ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript&#xff08;简称TS&#xff09;的基础上&#xff0c;匹配ArkUI框架&#xff0c;扩展了声明式UI、状态管理等相应的能力&#xff0c;让开发者以更简洁、更自然的方式开发跨端应用。 HarmonyOS基础组件和Compose组件很相…

React事件处理

目录 前言 1. 添加事件处理函数 2. 传递参数 使用箭头函数 使用bind方法 3. 阻止默认行为和冒泡 阻止默认行为 阻止事件冒泡 4. 最佳实践 前言 React是一个流行的JavaScript库&#xff0c;用于构建用户界面。在React中&#xff0c;事件处理是非常重要的一部分&#xf…

基于springboot 的小小宠物领养平台的设计与实现

摘 要 社会经济正在不断进步和发展&#xff0c;互联网技术更新迭代之快超乎人们的想象&#xff0c;在线宠物领养系统是一种全新的方式。通过互联网可以搜索到任何东西&#xff0c;只要你输入关键字词&#xff0c;搜索引擎就会把对应的信息给搜索出来。喜欢宠物的人士需要有一…

Jetcache开启FASTJSON2序列化

为什么要用Jetcache JetCache是一个基于Java的缓存系统封装&#xff0c;它提供统一的API和注解来简化缓存的使用。JetCache比SpringCache更强大的注解&#xff0c;可以原生的支持TTL、两级缓存、分布式自动刷新&#xff0c;还提供了Cache接口用于手工缓存操作。 以前使用红薯…

MySQL 优化思路篇

MySQL 优化思路篇 1、MySQL 查询的优化步骤2、查询系统性能参数3、慢查询日志定位问题3.1、开启慢查询日志参数3.2、查看慢查询数目3.3、慢查询日志的分析工具 mysqldumpslow3.4、关闭慢查询日志3.5、慢查询日志的删除与重建 4、SHOW PROFILE &#xff1a;查看SQL执行成本 1、…

【每日OJ题—— 203. 移除链表元素(指针)】

每日OJ题——203. 移除链表元素&#xff08;指针&#xff09; 1.题目&#xff1a;203. 移除链表元素2.方法讲解2.1.解法一&#xff1a;2.1.1.图文分析2.1.2.代码实现2.1.3.提交结果展示 2.2.解法二&#xff1a;2.2.1.图文分析2.2.2.代码实现2.2.3.提交结果展示 1.题目&#xff…

期 货 跟 单/资 管 分 仓/镜像跟单/外 盘 分 仓的全面介绍!

期货跟单是经过科学的筛选找出合格的目标样本数据然后利用样本交易数据转化成未来实际账面利润的综合性过程。 期货跟单分为正向跟单和反向跟单&#xff0c;简单地说就是找出期高手正向跟随高手赚取收益或找出期货低手反向跟随赚取收益。 期货跟单软件是实现跟单过程自动化的工…

案例精选|聚铭综合日志分析系统夯实徐州公交集团网络环境基础

徐州市公共交通集团有限公司成立于1960年&#xff0c;现隶属徐州市交通控股集团有限公司&#xff0c;下辖7家运营公司&#xff0c;1家站务公司&#xff0c;8家直属单位及13个职能部室。运营车辆2364辆&#xff0c;线路177条&#xff0c;线路长度3560公里&#xff0c;日发送班次…

后端神器!代码写完直接调试!

Apipost推出IDEA插件非常省时高效&#xff0c;写完代码直接可以进行调试&#xff0c;而且支持生成接口文档&#xff0c;真是后端神器啊&#xff01; 可以点击下方链接安装更新或在插件商店中搜索安装 下载链接&#xff1a;https://plugins.jetbrains.com/plugin/22676-apipos…

gdb调试内核

1、设置内核配置 CONFIG_KGDBy, CONFIG_DEBUG_INFO y, CONFIG_FRAME_POINTERy,CONFIG_STRICT_KERNEL_RWX is not set 屏蔽掉该选型 然后重新给板子烧录内核镜像 2、进入uboot&#xff0c;设置bootargs&#xff0c;添加kgdboc参数 setenv bootargs mem512M consolettyAMA0,…

通付盾WAAP网络与数据安全Agent深度解析

引言&#xff1a; ​随着现代Web应用程序的发展、应用程序环境和威胁的代际转变&#xff0c;应用的去中心化和分布式趋势明显&#xff0c;Bot和自动攻击的日益复杂化&#xff0c;移动应用使用量的增加和现代应用开发带来的API端点的激增&#xff0c;极大地扩展了威胁面&#x…

安达发|汽车零配件在生产上常常会遇到哪些困难?

汽车零配件在生产上常常会遇到许多困难&#xff0c;这些困难涉及到技术、质量、成本和供应链等多个方面。以下是一些常见的困难及其解决方案&#xff1a; 1.技术难题&#xff1a;汽车零配件的生产需要高度的技术支持&#xff0c;尤其是在新材料、新工艺和新设备的应用上。解决技…

多模态模型的语言幻觉和视觉幻觉

HALLUSIONBENCH: You See What You Think?Or You Think What You See? An Image-Context Reasoning Benchmark Challenging for GPT-4V(ision),LLaVA-1.5, and Other Multi-modality Models 论文链接 github地址 论文中提出大的多模态模型出现“语言幻觉”和视觉错觉由下面…

媒介盒子分享:提升软文转化率的秘诀

哈喽大家好&#xff0c;今天盒子来和大家分享的干货内容是如何提升软文转化率。 优质内容能够打动消费者&#xff0c;促使消费者完成购买行为&#xff0c;这就是软文的作用&#xff0c;软文想要提升转化率&#xff0c;要做好以下五个关键点。 一、 把握用户需求 只要把握用户…

MobaXterm使用VNC远程操作ubuntu桌面

目录 1 在ubuntu中安装vnc 2 设置ubuntu远程连接 3 MobaXterm中连接ubuntu的vnc 1 在ubuntu中安装vnc 参考&#xff1a;Ubuntu18.04~Ubuntu22.04安装并配置VNC_ubuntu安装vnc-CSDN博客 大体流程就是在ubuntu中安装vnc&#xff0c;设置密码&#xff0c;然后配置服务&#x…