hello vtk 圆柱

VTK 可视化的流程及步骤

标题引入VTK库和初始化:
  • 引入 VTK 库和 AutoInit 模块,以便使用 VTK 的渲染和交互功能
设置背景颜色和颜色对象:
  • 使用 vtkNamedColors 设置背景颜色和演员颜色。
创建圆柱体源:
  • 使用 vtkCylinderSource 创建一个圆柱体,可以设置分辨率(面的数量)。
创建 PolyData 映射器:
  • 使用 vtkPolyDataMapper 将圆柱体的输出连接到映射器的输入。
创建演员(Actor):
  • 使用vtkActor创建演员,并将映射器连接到演员。
设置演员属性:
  • 设置演员的属性,例如颜色,旋转角度等。
创建渲染器:
  • 使用 vtkRenderer 创建渲染器,并将演员添加到渲染器。
设置渲染器属性:
  • 设置渲染器的背景颜色,相机位置等。
创建渲染窗口:
  • 使用 vtkRenderWindow 创建渲染窗口,并将渲染器添加到渲染窗口。
设置渲染窗口属性:
  • 设置渲染窗口的大小和名称。
创建渲染窗口交互器:
  • 使用 vtkRenderWindowInteractor 创建渲染窗口交互器,并将渲染窗口连接到交互器。
渲染窗口并开始交互:
  • 调用 Render 方法渲染窗口,然后调用Start方法开始交互事件循环。
#include <vtkActor.h>
#include <vtkCylinderSource.h>
#include <vtkNew.h>// 引入VTK并初始化
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);#include <vtkCamera.h>
#include <vtkNamedColors.h>		// 颜色
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>#include <array>int main()
{	vtkNew<vtkNamedColors> colors;std::array<unsigned char, 4> bg{26, 51, 102, 255};colors->SetColor("BlackColor", bg.data());vtkNew<vtkCylinderSource> cylinder;cylinder->SetResolution(10); // 设置圆柱的分辨率(面的数量)vtkNew<vtkPolyDataMapper> cylinderMapper;cylinderMapper->SetInputConnection(cylinder->GetOutputPort());// 设置演员及属性vtkNew<vtkActor> cylinderActor;cylinderActor->SetMapper(cylinderMapper);	// 将映射器连接到演员cylinderActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData()); // 设置演员的颜色属性cylinderActor->RotateX(30.0);		// 绕X轴旋转30度cylinderActor->RotateY(-45.0);		// 绕Y轴旋转-45度vtkNew<vtkRenderer> renderer;renderer->AddActor(cylinderActor);	// 将演员添加到渲染器renderer->SetBackground(colors->GetColor3d("BlackColor").GetData());renderer->ResetCamera();	// 重置相机位置renderer->GetActiveCamera()->Zoom(1.5); // 缩放相机视图vtkNew<vtkRenderWindow> renderWindow;renderWindow->SetSize(300, 300);		 // 设置渲染窗口大小renderWindow->AddRenderer(renderer);	 // 将渲染器添加到渲染窗口renderWindow->SetWindowName("Cylinder"); // 设置渲染窗口名称vtkNew<vtkRenderWindowInteractor> renderWindowInteractor;renderWindowInteractor->SetRenderWindow(renderWindow);  // 将渲染窗口与交互器连接renderWindow->Render();	// 渲染窗口renderWindowInteractor->Start(); // 开始渲染窗口的交互事件循环return 0;
}

在这里插入图片描述

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

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

相关文章

图书管理系统源码,图书管理系统开发,图书借阅系统源码四TuShuManager应用程序MVC控制器Controllers

Asp.net web应用程序MVC之Controllers控制器 Controller在ASP.NET MVC中负责控制所有客户端与服务器端的交互,并且负责协调Model与View之间的数据传递,是ASP.NET MVC的核心。 撰写Controller的基本要求: 1、Controller必须为公开类别; 2、Controller名称必须以Controller结…

【C++】哈希(位图、布隆过滤器)

一、哈希的应用&#xff08;位图和布隆过滤器&#xff09; 1、位图&#xff08;bitset&#xff09; &#xff08;1&#xff09;位图概念 【题目】 给 40亿 个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在这 40亿 个数中。…

UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown

一个奇怪的BUG 这个代码会报下面的错&#xff1a; 但是把模型导入部分注释掉之后就没有这个错误了&#xff08;第六行&#xff09; 解决办法&#xff1a;在模型加载后面加入一行代码 matplotlib.use( TkAgg’)&#xff0c;这个bug的问题就是模型加载改变了matplotlib使用的终端…

【Dockerfile】将自己的项目构建成镜像部署运行

目录 1.Dockerfile 2.镜像结构 3.Dockerfile语法 4.构建Java项目 5.基于Java8构建项目 1.Dockerfile 常见的镜像在DockerHub就能找到&#xff0c;但是我们自己写的项目就必须自己构建镜像了。 而要自定义镜像&#xff0c;就必须先了解镜像的结构才行。 2.镜像结构 镜…

在VMcentos7上用docker部署SELKS(IDS系统)

基本安装所需环境&#xff1a; 2核&#xff08;至少&#xff09;10 GB 可用 RAM&#xff08;经测试&#xff0c;4GB也能运行但会卡&#xff09;至少 30 GB 可用磁盘空间&#xff08;实际磁盘占用情况主要取决于规则数量和网络流量&#xff09;。建议使用 200GB SSD 级别。git,…

【Linux】:信号在内核里的处理

信号的发送和保存 一.内核中的信号处理二.信号集操作函数1.一些信号函数2.sigprocmask3.sigpending4.写代码 三.信号在什么时候处理的四.再谈地址空间 一.内核中的信号处理 1.实际执行信号的处理动作称为信号递达(Delivery )2.信号从产生到递达之间的状态,称为信号未决(Pending…

深度学习18

卷积层 查看每个数据 使用tensorboard查看 池化层 使用数据集进行训练 创建实例&#xff0c;使用tensorboard进行显示 最大池化保留了图片信息&#xff0c;神经网络训练的数据量大大减小&#xff0c;可以加快训练 非线性激活 非线性激活为神经网络加入了一些非线性的特质…

【密码学】【安全多方计算】浅析隐私求交PSI

文章目录 隐私求交的定义隐私求交方案介绍1. 基于DH的PSI方案2. 基于OT的PSI方案3.基于OPRF的PSI方案 总结 隐私求交的定义 隐私集合求交使得持有数据参与方通过计算得到集合的交集数据&#xff0c;而不泄露任何交集以外的数据信息。 隐私求交方案介绍 1. 基于DH的PSI方案 …

linux查看emmc分区信息(10种方法 )

目录 ## 1 emmc ## 2 uboot查看 ## 3 kernel查看 方法1 方法2 方法3 方法4 方法5 方法6 方法7 方法8 方法9 方法10 ## 1 emmc 我们要说的是&#xff0c;User Data Partition中的再分区 可简化为 ## 2 uboot查看 u-boot> mmc partPartition Map for MMC device…

(Linux2.6内核)进程调度队列与切换

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 我们首先来了解几个概念 1. 进程在CPU上运行的时候&#xff0c;一定要运行完才行吗&#xff1f;答案是否定的&#xff0c;我们大部分的操作系统&#xff0c;主流就是分时操作系统&#xff0c;即基于时间片进程轮转执行的。 …

Ubuntu18.04磁盘取证-中难度篇

涉及的镜像文件&#xff1a; sdb.vhd uac.tar ubuntu.20211208.mem 需要利用的工具&#xff1a; volatility3 volatility2.6.1 FTK/Autopsy Strings 题干 容器是一个Ubuntu Linux 蜜罐&#xff0c;用来观察利用 CVE-2021-41773 的漏洞攻击者想要做什么。 您将看到一个 cr…

SIT65HVD75,可替代SN65HVD75,3.0~5.5V 供电,ESD 15kV HBM,20Mbps 半双工 RS485/RS422 收发器

SIT65HVD75 是一款 3.0V~5.5V 电源供电、总线端口 ESD 保护能力 HBM 达到 15kV 以上、 总线耐压范围达到 15V 、半双工、低功耗&#xff0c;功能完全满足 TIA/EIA-485 标准要求的 RS-485 收发 器。 SIT65HVD75 包括一个驱动器和一个接收器&#xff0c;两者均可…