QT 5.9.2+VTK8.0实现等高线绘制

article/2025/6/8 14:41:30

项目下载链接:QT5.9.2+VTK8.0实现等高线绘制资源-CSDN文库

示例如下:

主要代码如下:

#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkPolyDataMapper.h"
#include "vtkVolume16Reader.h"
#include "vtkActor.h"
#include "vtkOutlineFilter.h"
#include "vtkCamera.h"
#include "vtkProperty.h"
#include "vtkPolyDataNormals.h"
#include "vtkContourFilter.h"
#include "vtkFloatArray.h"
#include "vtkPointData.h"
#include "dataimport.h"
#include <vtkDataSetMapper.h>
#include <vtkDelaunay2D.h>
#include <vtkLookupTable.h>
#include <vtkScalarBarActor.h>
#include <vtkSmoothPolyDataFilter.h>#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);
using namespace std;int main()
{DataImport import;QVector<point_3D> points;QString PathName = "SrcData_Filtered.txt";import.Data_ReadFromTXT(PathName, points);//【导入数据】vtkSmartPointer<vtkPoints> vtk_points =vtkSmartPointer<vtkPoints>::New();vtkSmartPointer<vtkCellArray> cellArray = vtkSmartPointer<vtkCellArray>::New();vtkSmartPointer<vtkFloatArray> pointScalar = vtkSmartPointer<vtkFloatArray>::New();for(unsigned int x=0; x<points.count(); x++){vtk_points->InsertNextPoint(points.at(x).x_value, points.at(x).y_value,points.at(x).z_value);//每个坐标点都需要创建一个顶点CellcellArray->InsertNextCell(x);//设置结点标量pointScalar->InsertNextValue(points.at(x).z_value);}double rangeMin = pointScalar->GetRange()[0];double rangeMax = pointScalar->GetRange()[1];vtkSmartPointer<vtkPolyData> polydata =vtkSmartPointer<vtkPolyData>::New();polydata->SetPoints(vtk_points);//polydata->SetPolys(cellArray);//设置单元数据polydata->GetPointData()->SetScalars(pointScalar);//设置点集标量//表面重建方式1-vtkDelaunay2DvtkSmartPointer<vtkDelaunay2D> delaunay =vtkSmartPointer<vtkDelaunay2D>::New();delaunay->SetInputData(polydata);delaunay->Update();//重建后进行拉普拉斯平滑vtkSmartPointer<vtkSmoothPolyDataFilter> smoothFilter =vtkSmartPointer<vtkSmoothPolyDataFilter>::New();smoothFilter->SetInputConnection(delaunay->GetOutputPort());smoothFilter->SetBoundarySmoothing(true);//控制是否对边界点平滑smoothFilter->SetFeatureEdgeSmoothing(true);//控制是否对特征边上的点的平滑,设为false会更平滑smoothFilter->SetNumberOfIterations(200);//平滑次数,越大越平滑smoothFilter->Update();// 获取等值面vtkContourFilter *skinExtractor = vtkContourFilter::New();//skinExtractor->SetInputConnection(v16->GetOutputPort());skinExtractor->SetInputConnection(smoothFilter->GetOutputPort());//skinExtractor->SetValue(0, 392);//设置值为*的等值线//skinExtractor->SetValue(1, 394);//设置值为*的等值线//skinExtractor->GenerateValues(10, 370, 400);//生成等分的10个等值线skinExtractor->GenerateValues(20, rangeMin, rangeMax);//生成等分的*个等值线// 是一个过滤器Filter,用来计算法向量,对锐边缘(sharp Edge)进行处理vtkPolyDataNormals *skinNormals = vtkPolyDataNormals::New();skinNormals->SetInputConnection(skinExtractor->GetOutputPort());skinNormals->SetFeatureAngle(160.0);//创建颜色表 这里只输入颜色值的数量,然后自动生成表vtkLookupTable *lut = vtkLookupTable::New();lut->SetTableRange(pointScalar->GetRange());lut->SetHueRange(0.85, 0.0);        //色调范围从紫色到红色lut->Build();vtkPolyDataMapper *skinMapper = vtkPolyDataMapper::New();skinMapper->SetInputConnection(skinNormals->GetOutputPort());skinMapper->SetLookupTable(lut);skinMapper->SetScalarRange(pointScalar->GetRange());//skinMapper->ScalarVisibilityOff();//不显示多颜色vtkActor *skinActor = vtkActor::New();skinActor->SetMapper(skinMapper);//【加颜色映射表】vtkScalarBarActor *barActor = vtkScalarBarActor::New();barActor->SetLookupTable(lut);// 绘制外部轮廓的正方体vtkOutlineFilter *outlineData = vtkOutlineFilter::New();//outlineData->SetInputConnection(v16->GetOutputPort());outlineData->SetInputConnection(delaunay->GetOutputPort());vtkPolyDataMapper *mapOutline = vtkPolyDataMapper::New();mapOutline->SetInputConnection(outlineData->GetOutputPort());vtkActor* outline_actor = vtkActor::New();outline_actor->SetMapper(mapOutline);outline_actor->GetProperty()->SetColor(0, 0, 0);vtkCamera *aCamera = vtkCamera::New();//aCamera->SetViewUp(0, 0, -1);aCamera->SetViewUp(1, 1, 0);//aCamera->SetPosition(0, 1, 0);aCamera->SetPosition(-1, -1, 0.5);aCamera->SetFocalPoint(0, 0, 0);aCamera->ComputeViewPlaneNormal();aCamera->Dolly(1.5);vtkRenderer *aRender = vtkRenderer::New();aRender->AddActor(outline_actor);aRender->AddActor(skinActor);aRender->AddActor(barActor);aRender->SetActiveCamera(aCamera);aRender->ResetCamera();//aRender->SetBackground(1, 1, 1);aRender->SetBackground(0.5, 0.5, 0.5);aRender->ResetCameraClippingRange();vtkRenderWindow *renWin = vtkRenderWindow::New();renWin->AddRenderer(aRender);renWin->SetSize(640, 480);vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();iren->SetRenderWindow(renWin);iren->Initialize();iren->Start();system("pause");return 0;
}


http://www.hkcw.cn/article/sSIZeahFJt.shtml

相关文章

【C++】特殊类设计

1.设计一个不能被拷贝的类 C98中&#xff1a; 将拷贝构造函数和赋值运算符重载只声明不定义&#xff0c;将访问权限设置私有 原因&#xff1a; 设置成私有&#xff1a;如果只声明没有设置成private&#xff0c;用户自己如果在类外定义了&#xff0c;就可以不能禁止拷贝了只声…

Oracle 用户/权限/角色管理

1. 用户 1.1. 用户的创建和删除 1.1.1. 创建用户 create user user identified {by password | externally} [ default tablespace tablespace ] [ temporary tablespace tablespace ] [ quota {integer [k | m ] | unlimited } on tablespace [ quota {integer [k | m ] | …

机器人现可完全破解验证码:未来安全技术何去何从?

引言 随着计算机视觉技术的飞速发展&#xff0c;机器学习模型现已能够100%可靠地解决Google的视觉reCAPTCHAv2验证码。这标志着一个时代的结束——自2000年代初以来&#xff0c;CAPTCHA&#xff08;"全自动区分计算机与人类的图灵测试"的缩写&#xff09;一直是区分…

AI赋能SEO关键词革新

内容概要 随着人工智能技术与搜索引擎优化的深度融合&#xff0c;传统关键词策略正经历系统性变革。基于智能语义分析与深度学习算法&#xff0c;AI能够实时解析海量搜索数据&#xff0c;构建动态更新的关键词库&#xff0c;突破人工筛选的局限性。通过自然语言处理技术&#…

深入解析Java11核心新特性

文章目录 前言一、标准化HTTP Client&#xff1a;告别HttpURLConnection1.1 HttpURLConnection 的痛点1.2 标准化 HTTP Client 的解决方案1.3 实战应用指南1.4 总结 二、局部变量类型推断增强&#xff1a;Lambda中的var2.1 解决的问题&#xff1a;类型声明的一致性困境2.2 实现…

香橙派3B学习笔记6:基本的Bash脚本学习_UTF-8格式问题

今日学习基本的linux 的一些 bash 脚本 ssh &#xff1a; orangepi本地ip 密码 &#xff1a; orangepi 操作系统发行版&#xff1a; 基于 Ubuntu 20.04.6 LTS&#xff08;Focal Fossa&#xff09;的定制版本&#xff0c;专门为 Orange Pi 设备优化。PRETTY_NAME"Orange P…

腾讯下乡了。。。

大家好&#xff0c;我是苍何。 这两天在网上出现很多腾讯元宝在乡下的横幅&#xff0c;着实把我吓了一大跳。 甚至养猪问题也可以直接问元宝&#x1f436; 前两天&#xff0c;刚好回乡下给我儿子过 2 岁生日&#xff0c;家里大婶的弟弟就是专业的养猪大户&#xff0c;在吃饭的…

如何在PowerBI中使用Analyze in Excel

如何在PowerBI中使用Analyze in Excel 之前分享过如何使用DAXStudio将PowerBI与Excel连接 &#xff0c;今天介绍另外一个工具&#xff0c;也可以实现同样的功能&#xff0c;Analyze in Excel。 使用Analyze in Excel 第一步&#xff1a; 首先准备好一个PBIX文件&#xff0c…

接口测试的用例设计

1.简介 在这篇文章里&#xff0c;我们来学习一下接口测试用例设计&#xff0c;主要是来学习一些用例设计要点。其实说白了&#xff0c;接口用例设计和功能用例设计差不多&#xff0c;照猫画虎即可。不要把它想象的多么高大上&#xff0c;多么的难&#xff0c;其实一样&#xff…

AI“实体化”革命:具身智能如何重构体育、工业与未来生活

近年来&#xff0c;人工智能&#xff08;AI&#xff09;技术的飞速发展正在重塑各行各业&#xff0c;而具身智能&#xff08;Embodied AI&#xff09;作为AI领域的重要分支&#xff0c;正逐渐从实验室走向现实应用。具身智能的核心在于让AI系统具备物理实体&#xff0c;能够与环…

车规级BMS芯片国产化!精准电量监测延长电池寿命

通品替代芯片充电管理类应用值得一看&#xff1a;华芯邦以创新技术领航国产化新赛道。 在消费电子、新能源汽车、工业设备等领域&#xff0c;电源管理芯片如同设备的“心脏”&#xff0c;直接决定了产品的续航能力、安全性和用户体验。然而&#xff0c;长期以来&#xff0c;这…

【摘录】LCD/LED/OLED/Micro LED

端午节焦点访谈播出了&#xff1a;成都辰显光电有限公司总经理黄秀颀博士作为科技领军人才代表出镜&#xff0c;分享了其带领团队推进Micro-LED技术创新与产业化。作为显示行业的一份子很惭愧&#xff0c;对这些技术还是一片空白&#xff0c;补补知识吧。 1、LCD&#xff08;液…

C++和C#界面开发方式的全面对比

文章目录 C界面开发方式1. **MFC&#xff08;Microsoft Foundation Classes&#xff09;**2. **Qt**3. **WTL&#xff08;Windows Template Library&#xff09;**4. **wxWidgets**5. **DirectUI** C#界面开发方式1. **WPF&#xff08;Windows Presentation Foundation&#xf…

【氮化镓】钝化层对p-GaN HEMT阈值电压的影响

2021年5月13日,中国台湾阳明交通大学的Shun-Wei Tang等人在《Microelectronics Reliability》期刊发表了题为《Investigation of the passivation-induced VTH shift in p-GaN HEMTs with Au-free gate-first process》的文章。该研究基于二次离子质谱(SIMS)、光致发光(PL)…

Juce实现Table自定义

Juce实现Table自定义 一.总体展示概及概述 在项目中Juce中TableList往往无法满足用户需求&#xff0c;头部和背景及背景颜色设置以及在Cell中添加自定义按钮&#xff0c;所以需要自己实现自定义TabelList&#xff0c;该示例是展示实现自定义TableList&#xff0c;实现自定义标…

VBA 64位API声明语句第010讲

跟我学VBA&#xff0c;我这里专注VBA, 授人以渔。我98年开始&#xff0c;从源码接触VBA已经20余年了&#xff0c;随着年龄的增长&#xff0c;越来越觉得有必要把这项技能传递给需要这项技术的职场人员。希望职场和数据打交道的朋友&#xff0c;都来学习VBA,利用VBA,起码可以提高…

【鸿蒙】HarmonyOS NEXT之如何正常加载地图组件

1、不支持模拟器&#xff0c;需要真机&#xff01; 2、Map地图需要在AGC上申请权限&#xff0c;需要在AGC上创建对应的项目 地址&#xff1a; AppGallery Connect 2.1 AGC中项目创建 2.1.1 添加项目 2.1.2 起个名字 2.1.3 添加应用&#xff1a; 2.1.4 选择HarmonyOS APP&…

精美的软件下载页面HTML源码:现代UI与动画效果的完美结合

精美的软件下载页面HTML源码&#xff1a;现代UI与动画效果的完美结合 在数字化产品推广中&#xff0c;一个设计精良的下载页面不仅能提升品牌专业度&#xff0c;还能显著提高用户转化率。本文介绍的精美软件下载页面HTML源码&#xff0c;通过现代化UI设计与丰富的动画效果&…

3. 简述node.js特性与底层原理

&#x1f63a;&#x1f63a;&#x1f63a; 一、Node.js 底层原理&#xff08;简化版&#xff09; Node.js 是一个 基于 Chrome V8 引擎构建的 JavaScript 运行时&#xff0c;底层核心由几部分组成&#xff1a; 组成部分简要说明 1.V8 引擎 将 JS 编译成机器码执行&#xff0…

【后端高阶面经:架构篇】51、搜索引擎架构与排序算法:面试关键知识点全解析

一、搜索引擎核心基石&#xff1a;倒排索引技术深度解析 &#xff08;一&#xff09;倒排索引的本质与构建流程 倒排索引&#xff08;Inverted Index&#xff09;是搜索引擎实现快速检索的核心数据结构&#xff0c;与传统数据库的正向索引&#xff08;文档→关键词&#xff0…