第05章 12 可视化热量流线图一例
下面是一个使用VTK(Visualization Toolkit)和C++编写的示例代码,展示如何在一个厨房模型中可视化热量流线图,并按照热量传递速度着色显示。这个示例假设你已经安装了VTK库,并且你的开发环境已经配置好来编译和运行VTK程序。
示例代码
#include <vtkSmartPointer.h>
#include <vtkXMLPolyDataWriter.h>
#include <vtkXMLUnstructuredGridReader.h>
#include <vtkPolyData.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkStreamTracer.h>
#include <vtkArrowSource.h>
#include <vtkGlyph3D.h>
#include <vtkNamedColors.h>
#include <vtkLookupTable.h>
#include <vtkColorTransferFunction.h>int main(int, char *[])
{// 读取厨房模型的数据vtkSmartPointer<vtkXMLUnstructuredGridReader> reader = vtkSmartPointer<vtkXMLUnstructuredGridReader>::New();reader->SetFileName("kitchen.vtu");reader->Update();vtkSmartPointer<vtkUnstructuredGrid> kitchen = vtkSmartPointer<vtkUnstructuredGrid>::New();kitchen = reader->GetOutput();// 创建流线追踪器vtkSmartPointer<vtkStreamTracer> streamTracer = vtkSmartPointer<vtkStreamTracer>::New();streamTracer->SetInputData(kitchen);streamTracer->SetSourceData(kitchen);streamTracer->SetIntegrationDirectionToForward();streamTracer->SetMaximumPropagation(100);streamTracer->SetInitialIntegrationStep(0.1);streamTracer->Set integrateUsingVariableTimeStepOn();streamTracer->Update();// 创建箭头源vtkSmartPointer<vtkArrowSource> arrowSource = vtkSmartPointer<vtkArrowSource>::New();// 使用Glyph3D来可视化流线vtkSmartPointer<vtkGlyph3D> glyph3D = vtkSmartPointer<vtkGlyph3D>::New();glyph3D->SetSourceConnection(arrowSource->GetOutputPort());glyph3D->SetInputConnection(streamTracer->GetOutputPort());glyph3D->SetVectorModeToUseVector();glyph3D->SetScaleFactor(0.1); // 调整箭头的大小glyph3D->OrientOn();glyph3D->Update();// 创建颜色查找表vtkSmartPointer<vtkLookupTable> lookupTable = vtkSmartPointer<vtkLookupTable>::New();lookupTable->SetNumberOfTableValues(256);lookupTable->Build();// 使用颜色传输函数来生成渐变颜色vtkSmartPointer<vtkColorTransferFunction> colorTransferFunction = vtkSmartPointer<vtkColorTransferFunction>::New();colorTransferFunction->AddRGBPoint(0.0, 0.0, 0.0, 1.0); // 蓝色colorTransferFunction->AddRGBPoint(1.0, 1.0, 0.0, 0.0); // 红色// 将颜色传输函数应用到查找表for (int i = 0; i < 256; i++){double color[3];colorTransferFunction->GetColor((double)i / 255.0, color);lookupTable->SetTableValue(i, color[0], color[1], color[2], 1.0);}// 创建映射器和演员vtkSmartPointer<vtkPolyDataMapper> glyphMapper = vtkSmartPointer<vtkPolyDataMapper>::New();glyphMapper->SetInputConnection(glyph3D->GetOutputPort());glyphMapper->SetLookupTable(lookupTable);glyphMapper->SetScalarRange(0, 1); // 假设速度范围是0到1vtkSmartPointer<vtkActor> glyphActor = vtkSmartPointer<vtkActor>::New();glyphActor->SetMapper(glyphMapper);// 创建渲染器、渲染窗口和交互器vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();renderWindow->AddRenderer(renderer);vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();renderWindowInteractor->SetRenderWindow(renderWindow);// 添加演员到渲染器renderer->AddActor(glyphActor);renderer->SetBackground(1, 1, 1); // 白色背景// 渲染renderWindow->Render();renderWindowInteractor->Start();return 0;
}
代码说明
-
读取厨房模型的数据:
- 使用
vtkXMLUnstructuredGridReader读取厨房模型的VTK文件(假设文件名为kitchen.vtu)。
- 使用
-
创建流线追踪器:
- 使用
vtkStreamTracer创建流线追踪器,设置输入数据为厨房模型,并设置流线的传播方向和最大传播距离。
- 使用
-
创建箭头源:
- 使用
vtkArrowSource创建箭头源,用于表示流线的方向和大小。
- 使用
-
可视化流线:
- 使用
vtkGlyph3D将流线表示为箭头,并设置矢量模式和缩放因子。
- 使用
-
创建颜色查找表:
- 使用
vtkLookupTable和vtkColorTransferFunction创建颜色查找表,生成渐变颜色。
- 使用
-
创建映射器和演员:
- 使用
vtkPolyDataMapper将数据映射到演员,并设置查找表和标量范围。
- 使用
-
创建渲染器、渲染窗口和交互器:
- 创建渲染器、渲染窗口和交互器,并将演员添加到渲染器中,最后开始渲染循环。
注意事项
- 确保厨房模型文件
kitchen.vtu存在,并且路径正确。 - 根据实际情况调整流线追踪器的参数,如最大传播距离和初始步长。
- 可以根据实际的热量传递速度范围调整
glyphMapper的标量范围。
这个示例展示了如何在VTK中可视化厨房模型中的热量流线图,并按照热量传递速度着色显示。你可以根据需要进一步调整和优化代码。
相关文章:
第05章 12 可视化热量流线图一例
下面是一个使用VTK(Visualization Toolkit)和C编写的示例代码,展示如何在一个厨房模型中可视化热量流线图,并按照热量传递速度着色显示。这个示例假设你已经安装了VTK库,并且你的开发环境已经配置好来编译和运行VTK程序…...
微信小程序压缩图片
由于wx.compressImage(Object object) iOS 仅支持压缩 JPG 格式图片。所以我们需要做一下特殊的处理: 1.获取文件,判断文件是否大于设定的大小 2.如果大于则使用canvas进行绘制,并生成新的图片路径 3.上传图片 async chooseImage() {let …...
2025_1_27 C语言内存,递归,汉诺塔问题
1.c程序在内存中的布局 代码段(Code Segment) 位置:通常位于内存的最低地址。 用途:存储程序的可执行指令。 特点:只读,防止程序运行时被修改。数据段(Data Segment) 位置…...
K8s运维管理平台 - xkube体验:功能较多
目录 简介Lic安装1、需要手动安装MySQL,**建库**2、启动命令3、[ERROR] GetNodeMetric Fail:the server is currently unable to handle the request (get nodes.metrics.k8s.io qfusion-1) 使用总结优点优化 补充1:layui、layuimini和beego的详细介绍1.…...
舆情系统的情报搜索功能
引言 随着信息技术的发展和网络媒体的快速发展,舆情监测已成为各行各业不可或缺的工具。舆情系统中的情报搜索功能,作为其核心组成部分,能够帮助用户迅速、全面地捕捉互联网、社交平台、新闻媒体等渠道中的各类信息和舆论动态。情报搜索不仅提…...
简易CPU设计入门:控制总线的剩余信号(二)
项目代码下载 请大家首先准备好本项目所用的源代码。如果已经下载了,那就不用重复下载了。如果还没有下载,那么,请大家点击下方链接,来了解下载本项目的CPU源代码的方法。 CSDN文章:下载本项目代码 上述链接为本项目…...
[创业之路-270]:《向流程设计要效率》-2-企业流程架构模式 POS架构(规划、业务运营、支撑)、OES架构(业务运营、使能、支撑)
目录 一、POS架构 二、OES架构 三、POS架构与OES架构的差异 四、各自的典型示例 POS架构典型示例 OES架构典型示例 示例分析 五、各自的典型企业 POS架构典型企业 OES架构典型企业 分析 六、各自典型的流程 POS架构的典型流程 OES架构的典型流程 企业流程架构模式…...
9【如何面对他人学习和生活中的刁难】
我们在学习的过程中,会遇到很多来自于他人的刁难与嘲讽,如果处理不好,这会大大影响我们的心情,从而影响学习的效率 我建议,如果你学习或生活中也遇到了类似的问题,不要去生气,更不要发生冲突&a…...
脚本/编译安装nginx1.11.10
1、通过脚本安装nginx1.11.10 在保证yum源正常(国内源)的情况下,这个脚本是可以正常安装的–with-pcre/usr/src/pcre-8.12/ # 如果自带的pcre无效就使用这个自定义pcre的路径(pcre安装在第3步骤) #!/bin/bash#安装nginx所需依赖包 yum -y install pcre* pcre-dev…...
基于迁移学习的ResNet50模型实现石榴病害数据集多分类图片预测
完整源码项目包获取→点击文章末尾名片! 番石榴病害数据集 背景描述 番石榴 (Psidium guajava) 是南亚的主要作物,尤其是在孟加拉国。它富含维生素 C 和纤维,支持区域经济和营养。不幸的是,番石榴生产受到降…...
基于PostgreSQL的自然语义解析电子病历编程实践与探索(上)
一、引言 1.1研究目标与内容 本研究旨在构建一个基于 PostgreSQL 的自然语义解析电子病历编程体系,实现从电子病历文本中提取结构化信息,并将其存储于 PostgreSQL 数据库中,以支持高效的查询和分析。具体研究内容包括: 电子病历的预处理与自然语言处理:对电子病历文本进…...
5.1.3 软件过程评估
文章目录 软件能力成熟度模型CMM能力成熟度模型集成 软件能力成熟度模型CMM 软件能力成熟度模型是用于评价软件承接方能力的方法,通过评价,也可以让承接方看到自身缺陷,不断改进和提升软件过程能力。分为5个成熟度等级,初始级、可…...
【JavaEE】Spring(5):Mybatis(上)
一、什么是Mybatis Mybatis是一个持久层的框架,它用来更简单的完成程序和数据库之间的交互,也就是更简单的操作和读取数据库中的数据 在讲解Mybatis之前,先要进行一些准备工作: 1. 为项目添加 Mybatis 相关依赖 2. 创建用户表以…...
记录 | MaxKB创建本地AI智能问答系统
目录 前言一、重建MaxKBStep1 复制路径Step2 删除MaxKBStep3 创建数据存储文件夹Step4 重建 二、创建知识库Step1 新建知识库Step2 下载测试所用的txtStep3 上传本地文档Step4 选择模型补充智谱的API Key如何获取 Step5 查看是否成功 三、创建应用Step1 新建应用Step2 配置AI助…...
【Spring】Spring启示录
目录 前言 一、示例程序 二、OCP开闭原则 三、依赖倒置原则DIP 四、控制反转IOC 总结 前言 在软件开发的世界里,随着项目的增长和需求的变化,如何保持代码的灵活性、可维护性和扩展性成为了每个开发者必须面对的问题。传统的面向过程或基于类的设计…...
八股——Java基础(四)
目录 一、泛型 1. Java中的泛型是什么 ? 2. 使用泛型的好处是什么? 3. Java泛型的原理是什么 ? 什么是类型擦除 ? 4.什么是泛型中的限定通配符和非限定通配符 ? 5. List和List 之间有什么区别 ? 6. 可以把List传递给一个接受List参数的方法吗? 7. Arra…...
游戏策划的分类
游戏策划是一个复杂而多面的领域,涉及游戏设计、玩法创新、故事叙述等多个方面。根据不同的职责和工作内容,游戏策划可以分为以下几类: 1. 系统策划 • 职责:负责游戏的整体系统设计,包括角色系统、技能系统、装备系统…...
面试场景问题集合
文章目录 项目地址一、1. 电商平台中订单未支付过期如何实现自动关单?2. 如果你的系统的 QPS 突然提升 10 倍你会怎么设计? 项目地址 教程作者:教程地址: 代码仓库地址: 所用到的框架和插件: dbt airflo…...
观察者模式 - 观察者模式的应用场景
引言 观察者模式(Observer Pattern)是设计模式中行为型模式的一种,它定义了对象之间的一对多依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会自动收到通知并更新。观察者模式广泛应用于事件处理系统…...
基于STM32的循迹小车设计与实现
1 系统方案设计 根据系统设计功能,展开基于STM32的循迹小车设计,整体设计框图如图2.1所示。系统采用STM32单片机作为控制器,通过L298驱动器控制两个直流电机实现对小车的运动控制,两路红外模块实现黑线的检测,HC-SR04超声波模块实…...
AI刷题-蛋糕工厂产能规划、优质章节的连续选择
挑两个简单的写写 目录 一、蛋糕工厂产能规划 问题描述 输入格式 输出格式 解题思路: 问题理解 数据结构选择 算法步骤 关键点 最终代码: 运行结果:编辑 二、优质章节的连续选择 问题描述 输入格式 输出格式 解题思路&a…...
从理论到实践:Django 业务日志配置与优化指南
在现代 Web 开发中,日志记录是确保系统可维护性和可观测性的重要手段。通过合理的日志配置,我们可以快速定位问题、分析系统性能,并进行安全审计。本文将围绕 Django 框架,详细介绍如何配置和优化业务日志,确保开发环境和生产环境都能高效地记录和管理日志。 © ivwdc…...
达梦拷贝DM_HOME的复制安装
近期一个项目需求,需要在没有安装包的情况下,将达梦数据库安装到虚机上(生产机上安装了达梦),故采用直接打包生产机DM_HOME的方式拷贝至虚机,再依次执行达梦的部分指令完成安装。以下为验证的步骤ÿ…...
网络工程师 (3)指令系统基础
一、寻址方式 (一)指令寻址 顺序寻址:通过程序计数器(PC)加1,自动形成下一条指令的地址。这是计算机中最基本、最常用的寻址方式。 跳跃寻址:通过转移类指令直接或间接给出下一条指令的地址。跳…...
vue3和vue2的区别有哪些差异点
Vue3 vs Vue2 主要差异对比指南 官网 1. 核心架构差异 1.1 响应式系统 Vue2:使用 Object.defineProperty 实现响应式 // Vue2 响应式实现 Object.defineProperty(obj, key, {get() {// 依赖收集return value},set(newValue) {// 触发更新value newValue} })Vue3…...
第一届“启航杯”网络安全挑战赛WP
misc PvzHE 去这个文件夹 有一张图片 QHCTF{300cef31-68d9-4b72-b49d-a7802da481a5} QHCTF For Year 2025 攻防世界有一样的 080714212829302316092230 对应Q 以此类推 QHCTF{FUN} 请找出拍摄地所在位置 柳城 顺丰 forensics win01 这个软件 云沙盒分析一下 md5 ad4…...
DeepSeek R1与OpenAI o1深度对比
文章目录 引言技术原理DeepSeek R1OpenAI o1 性能表现官方数据推理任务知识密集型任务通用能力 价格对比应用场景科研与技术开发自然语言处理(NLP)企业智能化升级教育与培训数据分析与智能决策 部署与集成DeepSeek R1OpenAI o1 伦理考量DeepSeek R1OpenA…...
图漾Halcon版本SDK使用教程【V1.1.0新版本】
1.下载并安装 Halcon 1.1 下载Halcon软件 在 Halcon 官网(https://www.mvtec.com/downloads) 下载 Halcon (Windows 版) 安装包,并根据官方文档安装 Halcon,下载HALCON24.11Progress-Steady。 1.2 安装Halcon 1.解压HALCON 24.11.1.0的安装包压缩文件…...
基于区块链的数字身份认证:安全与隐私的未来
友友们好! 我的新专栏《Python进阶》正式启动啦!这是一个专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会找到: ● 深入解析:每一篇文章都将…...
软件开发中的密码学(国密算法)
1.软件行业中的加解密 在软件行业中,加解密技术广泛应用于数据保护、通信安全、身份验证等多个领域。加密(Encryption)是将明文数据转换为密文的过程,而解密(Decryption)则是将密文恢复为明文的过程。以下…...
