当前位置:首页 >> 开发者生态 >> 【vtk学习笔记4】基本数据类型,uc2009(udt数据类型)

【vtk学习笔记4】基本数据类型,uc2009(udt数据类型)

cpugpu芯片开发光刻机 开发者生态 19
文件名:【vtk学习笔记4】基本数据类型,uc2009 【vtk学习笔记4】基本数据类型 一、可视化数据的基本特点

可视化数据有以下特点:

离散型 计算机处理的数据是对无限、连续的空间进行采样,生成的有限采样点数据。在某些离散点上有精确的值,但点与点之间值不可知,只有通过插值方式获取数据具有规则或不规则的结构 可视化数据分为规则与不规则或称为结构化与非结构化。规则结构数据点之间有固定的关联关系,可以通过这些关系确定每个点的坐标,不规则数据之间没有关联关系。规则结构的数据在存储及计算时占优势,不规则数据在数据表达方面更加自由、灵活、通用数据具有维度 可视化数据分为零维、一维、二维、三维甚至更高维,例如零维表现为点,一维数据表现为曲线,二维数据表现为曲面,三维数据表现为体,甚至可以包含时间维度。 二、数据对象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);// 数据集的单元SetvtkNew<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;}
协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2026年1月    »
1234
567891011
12131415161718
19202122232425
262728293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接