Qt&Vtk-013-Cube

简介: Qt&Vtk-013-Cube

image.png

文章目录


Qt&Vtk-Cube


今天搬运的代码前面已经搞过了,为了整体性,在做一次搬运,官方示例演示如下。开搞image.png

1 代码搬运


1.1 cube.h


#ifndef CUBE_H
#define CUBE_H
#include <QWidget>
#include "QVTKOpenGLWidget.h"               //新版本,旧版QVTKWidget
#include "vtkAutoInit.h"
#include "vtkActor.h"
#include "vtkCamera.h"
#include "vtkCellArray.h"
#include "vtkFloatArray.h"
#include "vtkNamedColors.h"
#include "vtkNew.h"
#include "vtkPointData.h"
#include "vtkPolyData.h"
#include "vtkPolyDataMapper.h"
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "array"
namespace Ui {
class Cube;
}
class Cube : public QWidget
{
    Q_OBJECT
public:
    explicit Cube(QWidget *parent = 0);
    ~Cube();
private:
    Ui::Cube *ui;
    std::array<std::array<double,3>,8> pts;
    std::array<std::array<vtkIdType,4>,6> ordering;
    vtkPolyData *cube = nullptr;
    vtkPoints *points = nullptr;
    vtkCellArray *polys = nullptr;
    vtkFloatArray *scalars = nullptr;
    vtkNamedColors *colors = nullptr;
    vtkPolyDataMapper *mapper = nullptr;
    vtkActor *actor = nullptr;
    vtkRenderer *render = nullptr;
};
#endif // CUBE_H

1.2 cube.cpp


#include "cube.h"
#include "ui_cube.h"
Cube::Cube(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Cube)
{
    ui->setupUi(this);
    pts = {{{{0, 0, 0}},
            {{1, 0, 0}},
            {{1, 1, 0}},
            {{0, 1, 0}},
            {{0, 0, 1}},
            {{1, 0, 1}},
            {{1, 1, 1}},
            {{0, 1, 1}}}};
    ordering = {{{{0, 1, 2, 3}},
                 {{4, 5, 6, 7}},
                 {{0, 1, 5, 4}},
                 {{1, 2, 6, 5}},
                 {{2, 3, 7, 6}},
                 {{3, 0, 4, 7}}}};
    cube = vtkPolyData::New();
    points = vtkPoints::New();
    polys = vtkCellArray::New();
    scalars = vtkFloatArray::New();
    for(auto i =0;i<pts.size();++i)
    {
        points->InsertPoint(i,pts[i].data());
        scalars->InsertTuple1(i,i);
    }
    for(auto && i : ordering)
        polys->InsertNextCell(vtkIdType(i.size()),i.data());
    cube->SetPoints(points);
    cube->SetPolys(polys);
    cube->GetPointData()->SetScalars(scalars);
    mapper = vtkPolyDataMapper::New();
    mapper->SetInputData(cube);
    mapper->SetScalarRange(cube->GetScalarRange());
    actor = vtkActor::New();
    actor->SetMapper(mapper);
    render = vtkRenderer::New();
    render->AddActor(actor);
    colors = vtkNamedColors::New();
    render->SetBackground(colors->GetColor3d("black").GetData());
    ui->widget->GetRenderWindow()->AddRenderer(render);
}
Cube::~Cube()
{
    delete ui;
}

image.pngimage.png

目录
相关文章
Vue3 父组件调用子组件方法($refs 在setup()、<script setup> 中使用)
Vue3 父组件调用子组件方法($refs 在setup()、<script setup> 中使用)
2000 0
|
4月前
|
运维 网络协议 数据可视化
流量实时分析软件的核心价值与实战指南
流量实时分析软件是网络运维与安全的必备工具,被誉为网络的“千里眼”。它通过捕获、解析并可视化网络流量数据,帮助管理员快速识别异常、排查问题,保障业务稳定运行。本文深入探讨其作用机制、核心功能(如流量捕获、协议解析、可视化告警等)、典型应用场景(故障定位、威胁检测、合规审计)及选型建议,强调其在现代IT系统中的重要价值。
流量实时分析软件的核心价值与实战指南
|
开发框架 前端开发 关系型数据库
ABP框架使用Mysql数据库,以及基于SQLServer创建Mysql数据库的架构和数据
ABP框架使用Mysql数据库,以及基于SQLServer创建Mysql数据库的架构和数据
|
7月前
|
Web App开发 前端开发 安全
语音交友app系统源码功能及技术研发流程剖析
语音交友App核心功能包括语音聊天(一对一、群聊、语音消息)、语音房间(直播、主题房、管理)、社交互动(好友、关注、打赏)、内容发现、音效美化、通知提醒及安全隐私等。开发流程涵盖需求分析、技术选型(前端、后端、数据库、实时通信)、UI/UX设计、前后端开发、实时通信集成、音效处理、测试优化、部署上线及运营维护,确保稳定高效运行并持续优化用户体验。
|
前端开发 API 网络架构
Vue+ElementUI实现动态树和表格数据的分页模糊查询
Vue+ElementUI实现动态树和表格数据的分页模糊查询
284 0
|
移动开发 定位技术 HTML5
|
JavaScript
vue全局修改滚动条样式
vue全局修改滚动条样式
499 1
|
数据可视化 前端开发 JavaScript
可视化逻辑编排工具——低代码/无代码
可视化逻辑编排工具——低代码/无代码
749 0
|
数据采集 监控 供应链
智慧港口三维可视化结合阿里云IOT技术实践
在经济全球化的推动下,港口作为交通运输的枢纽,在促进国际贸易和地区发展中起着举足轻重的作用。随着港口信息化水平的不断提高,国内外许多港口都在尝试将大数据技术、云计算、物联网、可视化等相关信息技术应用于港口生产,数据应用的重点将从传统的数据电话管理转向深度数据挖掘应用。以数据资源为核心,打造港口信息枢纽,提供多层次、多元化边界、精细化服务,实现信息服务产业化,优化港口各环节运行,深化与客户的关系,提升提高港口企业的生产效率,服务港口。
828 0
|
存储 SQL 数据处理
同步还是异步?ETL架构的选择,为何关系到数据处理速度和系统性能
同步还是异步?ETL架构的选择,为何关系到数据处理速度和系统性能
279 0