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.mzph.cn/news/178375.shtml

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

相关文章

蓝桥杯-01简介

文章目录 蓝桥杯简介参考资源蓝桥杯官网第15届大赛章程一、概况&#xff08;一&#xff09;大赛背景和宗旨&#xff08;二&#xff09;大赛特色&#xff08;三&#xff09;大赛项目1.Java软件开发2.C/C程序设计3.Python程序设计4.Web应用开发5.软件测试6.网络安全7.嵌入式设计与…

可视化文件编辑与SSH传输神器WinSCP如何公网远程本地服务器

可视化文件编辑与SSH传输神器WinSCP如何公网远程本地服务器 文章目录 可视化文件编辑与SSH传输神器WinSCP如何公网远程本地服务器1. 简介2. 软件下载安装&#xff1a;3. SSH链接服务器4. WinSCP使用公网TCP地址链接本地服务器5. WinSCP使用固定公网TCP地址访问服务器 1. 简介 …

CH02_交给子类

Template Method模式 组成模板的方法被定义在父类中&#xff0c;由于这些方法是抽象方法&#xff0c;所以只查看父类的代码是无法知道这些方法最终会进行何种具体处理的。唯一能知道的就是父类如何调用这些方法。 类图 说明 AbstractClass&#xff08;抽象类&#xff09; Abs…

vue项目中通过vuex管理数据

目录 1.前言&#xff1a; 2.vuex的基础用法&#xff1a; 1.构建与挂载vue 基础模板渲染 构建仓库 2.mutations的使用 1.介绍 ​编辑 2.案列&#xff1a; 3.传参 4.辅助函数mapMutations&#xff1a; 3.module分对象的写法 介绍 建立模块&#xff1a; 访问数据的方…

【VROC】看Intel VROC如何给NVMe SSD做RAID

在当今对硬盘性能要求越来越高的环境中&#xff0c;SATA和SAS接口由于自身的限制&#xff0c;其性能很难突破600MiB/s的瓶颈。因此&#xff0c;对于需要更高底层硬件性能的行业&#xff0c;如数据库等&#xff0c;对NVMe盘的需求越来越迫切。然而&#xff0c;NVMe盘直通到CPU&a…

三种常见的哈希结构

1.数组 2.set 使用序引用set头文件 unordered_set需引用unordered_set 3.map unordered_map需引用unordered_map头文件

error: ‘PixelPacket’ in namespace ‘Magick’ does not name a type

最近做一个项目需要配置ImageMagick库&#xff0c;本项目配置环境如下&#xff1a; ImageMagick version 7 Operating system, version and so on ubuntu 20.04 Descriptionerror: ‘PixelPacket’ in namespace ‘Magick’ does not name a type 这是在运行程序时候出现的问题…

优维低代码实践:搜索功能

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 优维…

设单链表中有仅三类字符的数据元素(大写字母、数字和其它字符),要求利用原单链表中结点空间设计出三个单链表的算法,使每个单链表只包含同类字符。

使用C语言编写的算法,将原单链表根据字符类型拆分为三个单链表。其中,大写字母链表(upperList)、数字链表(digitList)和其他字符链表(otherList)分别用于存储相应类型的字符。 `Upper Case List`存储了大写字母A、C, `Digit List`存储了数字1、2、3, `Other List`存…

C语言数据结构-----栈和队列练习题(分析+代码)

前言 前面的博客写了如何实现栈和队列&#xff0c;下来我们来看一下队列和栈的相关习题。 链接: 栈和队列的实现 文章目录 前言1.用栈实现括号匹配2.用队列实现栈3.用栈实现队列4.设计循环队列 1.用栈实现括号匹配 此题最重要的就是数量匹配和顺序匹配。 用栈可以完美的做到…

Egg.js中Cookie和Session

Cookie HTTP请求是无状态的&#xff0c;但是在开发时&#xff0c;有些情况是需要知道请求的人是谁的。为了解决这个问题&#xff0c;HTTP协议设计了一个特殊的请求头&#xff1a;Cookie。服务端可以通过响应头&#xff08;set-cookie&#xff09;将少量数据响应给客户端&#…

电子学会C/C++编程等级考试2023年03月(二级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:数字字符求和 请编写一个程序实现以下功能:从一个字符串中,提取出所有的数字字符即0-9,并作为数求和。 时间限制:1000 内存限制:65536输入 一行字符串,长度不超过100,字符串中不含空格。输出 字符串中所有数字字符作为数…

三维gis中用纹理限定多边形地理区域

在三维 gis 中经常需要在指定的多边形地理范围内做一些操作&#xff0c;比如地形的多边形裁剪、压平多边形区域内的倾斜摄影模型、在指定地理范围内绘制等间距的点等。这都涉及到限定多边形区域的问题。 所谓的限定多边形地理区域&#xff0c;核心问题在于判断某个片元是否处于…

1和0的故事-MISC-bugku-解题步骤

——CTF解题专栏—— 题目信息&#xff1a; 题目&#xff1a;1和0的故事 作者&#xff1a;Eas0a 提示&#xff1a;无 解题附件&#xff1a; 解题思路&#xff1a; 哦&#xff1f;1和0的故事&#xff1f;&#xff08;奸笑.jpg&#xff09;&#xff0c;打开看看啊。 emmm...j…

Java电子招投标采购系统源码-适合于招标代理、政府采购、企业采购、等业务的企业

项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&#xff0c;以及审…

高级/进阶”算法和数据结构书籍推荐

“高级/进阶”算法和数据结构书籍推荐《高级算法和数据结构》 高级算法和数据结构 为什么要选择本书 谈及为什么需要花时间学算法&#xff0c;我至少可以列举出三个很好的理由。 (1)性能&#xff1a;选择正确的算法可以显著提升应用程序的速度。仅就搜索来说&#xff0c;用二…

【AICFD案例教程】PCB多变量AI预测分析

AICFD是由天洑软件自主研发的通用智能热流体仿真软件&#xff0c;用于高效解决能源动力、船舶海洋、电子设备和车辆运载等领域复杂的流动和传热问题。软件涵盖了从建模、仿真到结果处理完整仿真分析流程&#xff0c;帮助工业企业建立设计、仿真和优化相结合的一体化流程&#x…

IDEA不支持Java8了怎么办?

IDEA不支持Java8了怎么办&#xff1f; 01 异常发生场景 当我准备创建一个springboot项目时&#xff0c;发现Java8没了 02 问题的产生及其原因 查阅了官方文档之后&#xff0c;确认了是Spring Boot 不再支持 Java 8&#xff0c;不是我的问题&#xff0c;这一天终于还是来了 0…

计算4人队形的最可能分布

2 2 2 1 2 2 2 2 2 1 2 2 2 2 2 1 2 2 3 3 3 x 3 3 2 2 2 1 2 2 2 2 2 1 2 2 在6*6的平面上2个点随机分布&#xff0c;有3种分布方式&#xff0c;2a1&#xff0c;2a2&#xff0c;2a3&#xff0c;占比为1&#xff1a;5&#xff1a;1. 3 3 …

Rust UI开发(四):iced中如何添加菜单栏(串口调试助手)

注&#xff1a;此文适合于对rust有一些了解的朋友 iced是一个跨平台的GUI库&#xff0c;用于为rust语言程序构建UI界面。 这是一个系列博文&#xff0c;本文是第四篇&#xff0c;前三篇链接&#xff1a; 1、Rust UI开发&#xff08;一&#xff09;&#xff1a;使用iced构建UI时…