Windows Qt C++ VTK 绘制三维曲线

Qt  自带数据可视化从文档上看,只能实现三维曲面。

QwtPlot3D在Qt6.6.0上没编译通过。

QCustomPlot 只能搞二维。

VTK~搞起。抄官网demo。

后续需求:

1、对数轴

2、Y轴逆序

3、Z轴值给色带,类似等高线图的色带

期待各位大佬多多指导。

 vtkNew<vtkNamedColors> colors;

    // Create the data.
    vtkNew<vtkTable> table;
    vtkNew<vtkTable> table1;

    vtkNew<vtkFloatArray> arrX0;
    arrX0->SetName("X");
    table->AddColumn(arrX0);

    vtkNew<vtkFloatArray> arrX1;
    arrX1->SetName("Y");
    table->AddColumn(arrX1);

    vtkNew<vtkFloatArray> arrX2;
    arrX2->SetName("Z");
    table->AddColumn(arrX2);

    vtkNew<vtkFloatArray> arrX3;
    arrX3->SetName("-Z");
    table->AddColumn(arrX3);

    vtkNew<vtkFloatArray> arrX4;
    arrX4->SetName("-Y");
    table->AddColumn(arrX4);

    const unsigned int numberOfTimePoints = 128;

    table->SetNumberOfRows(numberOfTimePoints);

    for (unsigned int ii = 0; ii < numberOfTimePoints; ++ii)
    {
        double value = ii;
        double value1 = rand() % 100;

        table->SetValue(ii, 0, ii);
        table->SetValue(ii, 1, ii);
        table->SetValue(ii, 2, sin(value));
        table->SetValue(ii, 3, sin(value) + 10);
        table->SetValue(ii, 4, sin(value) + 20);
    }

    // Set up a 3D scene and add an XYZ chart to it.
    vtkNew<vtkContextView> contextView;
    contextView->GetRenderWindow()->SetSize(1024, 1024);
    contextView->GetRenderWindow()->SetWindowName("PlotLine3D");

    vtkNew<vtkChartXYZ> chartXYZ;
    chartXYZ->SetGeometry(vtkRectf(5.0, 5.0, 635.0, 475.0));
    contextView->GetScene()->AddItem(chartXYZ);


    // Add a line plot.
    vtkNew<vtkPlotLine3D> plotLine3D;
    plotLine3D->SetInputData(table, 0, 1, 2);

    contextView->GetRenderWindow()->SetMultiSamples(0);

    plotLine3D->GetPen()->SetWidth(1.0);

    chartXYZ->AddPlot(plotLine3D);


    // Add a line plot.
    vtkNew<vtkPlotLine3D> plotLine3D1;
    plotLine3D1->SetInputData(table, 0, 1, 3);

    plotLine3D1->GetPen()->SetWidth(2.0);

    chartXYZ->AddPlot(plotLine3D1);


    // Add a line plot.
    vtkNew<vtkPlotLine3D> plotLine3D2;
    plotLine3D2->SetInputData(table, 0, 1, 4);

    plotLine3D2->GetPen()->SetWidth(3.0);

    chartXYZ->AddPlot(plotLine3D2);


    chartXYZ->SetXAxisLabel("振幅");
    chartXYZ->SetVisible(true);

    // Finally render the scene.
    contextView->GetRenderer()->SetBackground(colors->GetColor3d("DarkOliveGreen").GetData());
    contextView->GetRenderWindow()->Render();
    contextView->GetInteractor()->Initialize();
    contextView->GetInteractor()->Start();

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

免费开源的微信小程序源码、小游戏源码精选70套!

微信小程序已经成为我们日常的一部分了&#xff0c;也基本是每个程序员都会涉及的内容&#xff0c;今天给大家分享从网络收集的70个小程序源码。其中这些源码包含&#xff1a;小游戏到商城小程序&#xff0c;再到实用的工具小程序&#xff0c;以及那些令人惊叹的防各大站点的小…

【Linux】动态库和静态库——动态库和静态库的打包和使用、gcc编译、拷贝到系统默认的路径、建立软连接

文章目录 动态库和静态库1.静态库和动态库的介绍2.静态库的打包和使用2.1生成静态库2.2使用静态库的三种方式2.2.1gcc编译2.2.2拷贝到系统默认的路径2.2.3建立软连接 3.动态库的打包和使用3.1生成动态库3.2使用动态库3.3解决加载不到动态库的方法 动态库和静态库 1.静态库和动…

1月全志芯片开源项目分享合辑

1、柚子爱AI相机&#xff08;YuzuAI-YuzuMaix-AIoT-V831&#xff09; 本项目于去年4月首次发布&#xff0c;是基于V831的AI相机开源项目&#xff0c;经过几个版本的迭代&#xff0c;最终运用了叠层的设计来实现AI摄像头掌控板的奇葩组合。 开发板主控是全志V831&#xff0c;采…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖微信小程序端(十五)

用户端历史订单模块 1. 查询历史订单1.1 需求分析和设计1.2 代码实现1.2.1 user/OrderController1.2.2 OrderService1.2.3 OrderServiceImpl1.2.4 OrderMapper1.2.5 OrderMapper.xml1.2.6 OrderDetailMapper 2. 查询订单详情2.1 需求分析和设计2.2 代码实现2.2.1 user/OrderCon…

qt初入门7:进度条,定时器,时间控件练习

参考课本demo&#xff0c;空闲时间练习一下进度条&#xff0c;定时器&#xff0c;日期相关控件和使用。 1&#xff1a;demo运行结果 2&#xff1a;进度条控件梳理 进度条显示控件实际上是QProgressBar, 显示的进度可以通过代码控制&#xff0c;也可以通过其他控件上获取到的值…

【算法】BFS算法解决多源最短路问题(C++)

文章目录 前言那么什么是单源最短路 / 多源最短路呢&#xff1f;如何解决此类题&#xff1f;解法一解法二对于解法二&#xff0c;如何编写代码&#xff1f; 算法题542.01矩阵1020.飞地的数量1765.地图中的最高点1162.地图分析 前言 此前我们对 单源最短路 问题进行的讲解&…

Linux中并发程序设计(进程的创建和回收、exec函数使用、守护进程创建和使用、GDB的父、子进程代码的调试、线程的创建和参数传递)

进程的创建和回收 进程概念 概念 程序 存放在磁盘上的指令和数据的有序集合&#xff08;文件&#xff09; 静态的 进程 执行一个程序所分配的资源的总称 动态的进程和程序比较 注&#xff1a;进程是存在RAM中&#xff0c;程序是存放在ROM(flash)中的进程内容 BSS段&#xff…

一篇文章搞懂Python的文件读写

目录 一、打开文件 二、读取文件内容 三、写入文件内容 四、追加内容到文件末尾 五、文件路径 六、错误处理 七、关闭文件 八、文件读写的高级功能 总结 在Python中&#xff0c;文件读写是一项常见的操作。通过文件读写&#xff0c;我们可以保存数据&#xff0c;加载数…

算法学习记录:动态规划

前言&#xff1a; 算法学习记录不是算法介绍&#xff0c;本文记录的是从零开始的学习过程&#xff08;见到的例题&#xff0c;代码的理解……&#xff09;&#xff0c;所有内容按学习顺序更新&#xff0c;而且不保证正确&#xff0c;如有错误&#xff0c;请帮助指出。 学习工具…

Find My资讯|苹果Apple Pencil 3将支持Find My定位查找功能

国外科技媒体 9to5Mac 深挖 iOS 17.4 Beta 1 更新代码&#xff0c;发现了 Apple Pencil 3 的踪迹&#xff0c;并显示该手写笔支持 Find My 功能。这就意味着可以和 AirPods 和 AirTags 一样&#xff0c;用户可以通过 Find My 网络&#xff0c;寻找丢失的 Apple Pencil 手写笔。…

Kotlin for loop: in、 until、 step、 downTo

Kotlin for loop: in、 until、 step、 downTo fun loop1() {for (i in 0..5) {print("$i ")}println("\n1-end\n") }fun loop2() {for (i in 0 until 5) {print("$i ")}println("\n2-end\n") }fun loop3() {for (i in 0 until (5)) {…

探索Viper-适用于GoLang的完整配置解决方案

前言 对于现代应用程序&#xff0c;尤其大中型的项目来说&#xff0c;在程序启动和运行时&#xff0c;往往需要传入许多参数来控制程序的行为&#xff0c;我们可以通过命令行参数&#xff0c;环境变量&#xff0c;配置文件等方式来将参数传递给程序。而Viper库为Golang语言开发…

LabVIEW继电器触点接触电阻自动测试

继电器作为工业中的重要组件&#xff0c;其性能直接影响着整个生产线的可靠性和安全性。触点接触电阻是衡量继电器性能的重要参数&#xff0c;传统的测试方法效率低下且成本高昂。为了解决这些问题&#xff0c;采用LabVIEW软件&#xff0c;结合专业的硬件平台&#xff0c;实现了…

备战蓝桥杯----数据结构及STL应用(基础2)

上次我们讲了vector的大致内容&#xff0c;接下来让我们讲一下栈&#xff0c;队列吧&#xff01; 什么是栈呢&#xff1f; 很简单&#xff0c;我们用的羽毛球桶就是&#xff0c;我们取的球&#xff0c;是最后放的&#xff0c;栈是一种先进后出的数据结构。 方法函数 s.push(…

怎样做好Code Review

Code Review方案 定义 Code Review代码评审是指在软件开发过程中&#xff0c;通过对源代码进行系统性检查的过程。通常的目的是查找各种缺陷&#xff0c;包括代码缺陷、功能实现问题、编码合理性、性能优化等&#xff1b;保证软件总体质量和提高开发者自身水平 code review …

SRM是什么意思?SRM供应商管理系统哪个好?

阅读本文&#xff0c;您将了解&#xff1a;一、SRM是什么意思&#xff1b;二、SRM的应用价值&#xff1b;三、SRM供应商管理系统哪个好&#xff1f;推荐在零代码平台自主开发。 在当今快速变化的商业环境中&#xff0c;企业之间的协作和效率至关重要。供应链管理作为企业运营的…

HarmonyOS鸿蒙学习笔记(24)AppScope的icon和UIAblity的icon的区别

在HarmonyOS中有两个配置文件app.json5配置文件和module.json5配置文件&#xff0c;两个配置文件都有icon和label标签&#xff1a; 二者区别如下&#xff1a; app.json5的icon app.json5里面的icon和label:对应的是应用图标和应用标签&#xff0c;应用图标和标签是在设置应用…

HarmonyOS --@state状态装饰器

在声明式UI中&#xff0c;是以状态驱动视图更新。 状态&#xff08;state&#xff09;&#xff1a;指驱动视图更新的数据&#xff08;被装饰器标记的变量&#xff09;。 试图&#xff08;view&#xff09;&#xff1a;基于UI描述渲染得到用户界面 State装饰器标记的变量必须初…

C# Socket 允许控制台应用通过防火墙

需求&#xff1a; 在代码中将exe添加到防火墙规则中&#xff0c;允许Socket通过 添加库引用 效果&#xff1a; 一键三联 若可用记得点赞评论收藏哦&#xff0c;你的支持就是写作的动力。 源地址: https://gist.github.com/cstrahan/513804 调用代码: private static void …

雅特力AT32 Workbench图形化代码生成工具,简化嵌入式开发利器

嵌入式系统应用市场广泛&#xff0c;早已遍及日常生活&#xff0c;随着产品需求复杂度的提升&#xff0c;32位MCU开发难度也随之增加&#xff0c;如何降低开发成本&#xff0c;缩短开发周期&#xff0c;是所有嵌入式开发人员的共同课题。 面对市场竞争日益加剧的情形&#xff…