读取到VTK数据后,将数据组织起来并添加属性值。

示例:

#include <vtkSmartPointer.h>
#include <vtkPoints.h>
#include <vtkPolygon.h>
#include <vtkTriangle.h>
#include <vtkCellArray.h>
#include <vtkPolyData.h>
#include <vtkUnsignedCharArray.h> //Attribution
#include <vtkPointData.h> //点数据
#include <vtkCellData.h> //单元数据
///
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h> int main()
{
//几何结构数据:点集
vtkSmartPointer<vtkPoints> pts =
vtkSmartPointer<vtkPoints>::New();
pts->InsertNextPoint(0.0, 0.0, 0.0);
pts->InsertNextPoint(1.0, 0.0, 0.0);
pts->InsertNextPoint(1.0, 1.0, 0.0);
pts->InsertNextPoint(0.0, 1.0, 0.0);
pts->InsertNextPoint(2.0, 0.0, 0.0); //拓扑结构数据,正四边形
//构建多边形单元
vtkSmartPointer<vtkPolygon> polygon =
vtkSmartPointer<vtkPolygon>::New();
polygon->GetPointIds()->SetNumberOfIds(4);
polygon->GetPointIds()->SetId(0, 0);//为对应索引的点设置坐标,坐标为vtkpionts中定义的5个坐标点
polygon->GetPointIds()->SetId(1, 1);
polygon->GetPointIds()->SetId(2, 2);//setId为指定的点设置索引
polygon->GetPointIds()->SetId(3, 3); //拓扑结构数据:三角形
vtkSmartPointer<vtkTriangle> triangle =
vtkSmartPointer<vtkTriangle>::New();
triangle->GetPointIds()->SetId(0, 1);
triangle->GetPointIds()->SetId(1, 2);
triangle->GetPointIds()->SetId(2, 4);
//构成拓扑结构集合
vtkSmartPointer<vtkCellArray> cells =
vtkSmartPointer<vtkCellArray>::New();
cells->InsertNextCell(polygon);
cells->InsertNextCell(triangle);
//合成几何拓扑结构用于显示(包括点数据和单元数据集)
vtkSmartPointer<vtkPolyData> polygonPolyData =
vtkSmartPointer<vtkPolyData>::New();
polygonPolyData->SetPoints(pts);
polygonPolyData->SetPolys(cells); //添加属性结构
unsigned char red[3] = { 255, 0, 0 };
unsigned char green[3] = { 0, 255, 0 };
unsigned char blue[3] = { 0, 0, 255 };
vtkSmartPointer<vtkUnsignedCharArray> ptColor =
vtkSmartPointer<vtkUnsignedCharArray>::New();//有5个点数据
ptColor->SetNumberOfComponents(3);//指定每个元组的大小,RGB三色分量组成
ptColor->InsertNextTupleValue(red);
ptColor->InsertNextTupleValue(green);
ptColor->InsertNextTupleValue(blue);
ptColor->InsertNextTupleValue(red);
ptColor->InsertNextTupleValue(green);
polygonPolyData->GetPointData()->SetScalars(ptColor); vtkSmartPointer<vtkUnsignedCharArray> cellColor =
vtkSmartPointer<vtkUnsignedCharArray>::New();//2个单元数据
cellColor->SetNumberOfComponents(3);
cellColor->InsertNextTupleValue(blue);
cellColor->InsertNextTupleValue(red);
polygonPolyData->GetCellData()->SetScalars(cellColor);
    vtkSmartPointer<vtkPolyDataMapper> mapper =
        vtkSmartPointer<vtkPolyDataMapper>::New();//将几何拓扑结构数据(可视化模型)进行映射到图形模型
    mapper->SetInputData(polygonPolyData);
 
    vtkSmartPointer<vtkActor> actor =
        vtkSmartPointer<vtkActor>::New();
    actor->SetMapper(mapper);
 
    vtkSmartPointer<vtkRenderer> render =
        vtkSmartPointer<vtkRenderer>::New();
    render->AddActor(actor);
    render->SetBackground(0.0, 0.0, 0.0);
 
    vtkSmartPointer<vtkRenderWindow> rw =
        vtkSmartPointer<vtkRenderWindow>::New();
    rw->AddRenderer(render);
    rw->SetSize(320, 240);
    rw->SetWindowName("Creating PolyData Structure");
 
    vtkSmartPointer<vtkRenderWindowInteractor> rwi =
        vtkSmartPointer<vtkRenderWindowInteractor>::New();
    rwi->SetRenderWindow(rw);
    rwi->Render();
    rwi->Start();
 
    return 0;
}

问题:1. 如何设置点的ID号,对比书籍,为什么解释不同。

步骤:导入点->设置点的ID->构建几何结构->构建拓扑结构集合-> 存储数据

    属性结构: 创建属性结构-> 创建元组->创建单元数据->合并数据

VTK数据拓扑结构、几何结构和属性数据的更多相关文章

  1. python利用mongodb上传图片数据 : GridFS 与 bson两种方式

    利用mongodb保存图片通常有两种方法,一种是将图片数据转化为二进制作为字典的键值对进行保存,另一种是利用mongodb提供的GridFS进行保存,两者各有利弊.性能方面的优劣未曾测试,无法进行评价 ...

  2. 聊聊GIS数据的四个分层与GIS服务

    本篇不讨论矢量栅格数据的结构,也不讨论矢量与栅格的区别(即设定读者有这方面的基础). 版权声明:原创.博客园/B站/小专栏/知乎/CSDN @秋意正寒 转载请标注原地址并声明转载: https://w ...

  3. ZTMap室内地图定位平台设计方案

    1   系统总体设计 1.1  系统概述 基于臻图信息室内GIS地图平台和室内定位平台,通过室内定位设备的部署和信号采集,实现对室内人员和资产的实时定位.路线导航.区域管控告警.客流统计等相关功能. ...

  4. 关于印发利用DEM确定耕地坡度分级技术规定(试行)的通知

    下载:http://files.cnblogs.com/files/gisoracle/%E5%88%A9%E7%94%A8DEM%E7%A1%AE%E5%AE%9A%E8%80%95%E5%9C%B ...

  5. (2)RGB-D SLAM系列- 工具篇(依赖库及编译)

    做了个SLAM的小视频,有兴趣的朋友可以看下 https://youtu.be/z5wDzMZF10Q 1)Library depended 一个完整的SLAM系统包括,数据流获取,数据读取,特征提取 ...

  6. activti表结构

    1.结构设计 1.1.    逻辑结构设计 Activiti使用到的表都是ACT_开头的. ACT_RE_*: ’RE’表示repository(存储),RepositoryService接口所操作的 ...

  7. activiti 工作流

    1. 工作流的概念 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程自动进行,从而实 ...

  8. Android 系统属性SystemProperty分析

     http://www.cnblogs.com/bastard/archive/2012/10/11/2720314.html Android System Property 一 System Pro ...

  9. activiti工作流数据库表详细介绍 (23张表)

    Activiti的后台是有数据库的支持,所有的表的表名都以ACT_开头,表名的第二部分是用来表示表的用途的两个字母标识. 用途也和服务的API对应. ACT_RE_*: 'RE'表示repositor ...

随机推荐

  1. Java线程--CyclicBarrier使用

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11867687.html Java线程--CyclicBarrier使用, 代码里头有详细注释: ...

  2. 直播媒体流red5

    第一步下载 安装setup-Red5-1.0.1-java6.exe 安装教程网上有很多 显示如下页面说明安装成功 第二步 下载oflaDemo的 解压放在 第三步  打开 然后 ok了 注意:下面的 ...

  3. Redis高可用(持久化、主从复制、哨兵、集群)

    Redis高可用(持久化.主从复制.哨兵.集群) 目录 Redis高可用(持久化.主从复制.哨兵.集群) 一.Redis高可用 1. Redis高可用概述 2. Redis高可用策略 二.Redis持 ...

  4. 我来教你如何将cpu使用率up起来(shell脚本[含注释])

    这个脚本是为了逃过一些资源检测的,当一些机器当前使用率偏低,会被客户要求收回,那咋办呢?使用下面的脚本,就可以留住你的机器了 假设要求cpu使用率不能低于35% 使用方法:bash up_up_up. ...

  5. 新手菜菜之2020Kubernetes详细介绍大全

    前文 Kubernetes笔记(一):十分钟布置一套K8s环境 介绍了怎么快速建立一个k8s体系.为了持续运用k8s来布置咱们的应用,需要先对k8s中的一些根本组件与概念有个了解. Kubernete ...

  6. Gateway 简介

    概述 微服务可能分布在不同的主机上,这样有许多缺点:前端需要硬编码调用不同地址的微服务很麻烦:存在跨域访问的问题:微服务地址直接暴露是不安全的.还有所以需要为前端提供一个统一的访问入口.Gateway ...

  7. 提高可测性-Mock平台设计和整体规划

    微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 平台背景 从业务特性上,不少测试的服务很多是依赖第三方的接口的,比如其中的支付场景,就需要很多状态的返回进行验证,但大部分服务提供商没有很 ...

  8. 生成式AI会成为是人工智能的未来吗

    生成式 AI 是一项创新技术,可帮助算法人员生成以前依赖于业务员的模型,提供创造性的结果,而不会因业务员思想和经验而产生任何差错. 人工智能中的这项新技术确定了输入的原始模型,以生成演示训练数据特征. ...

  9. Custom数据如何导入RENIX软件——网络测试仪实操

    在我们日常工作中,有的时候会需要把特定的数据内容从抓包软件中导入到RENIX软件中,然后以大速率发送出去,本文描述如何进行这样的操作. 一.整理需要抓取的数据部分 1.例如有一个数据包,里面包含特定的 ...

  10. 【C# Task】TaskCompletionSource

    TaskCompletionSource具体功能 用于封装一个没有不带委托的任务实列.可以在其他线程控制该任务实列什么时候结束.取消.错误.类似于EventWaitHandle的功能. 属性 Task ...