Qt&Vtk-013-Cube

举报
DreamLife 发表于 2022/04/14 23:32:16 2022/04/14
【摘要】 文章目录 Qt&Vtk-Cube1 代码搬运1.1 cube.h1.2 cube.cpp 2 运行效果★ 源码 ★ Qt&Vtk-Cube 今天搬运的代码前面...

头图

Qt&Vtk-Cube

今天搬运的代码前面已经搞过了,为了整体性,在做一次搬运,官方示例演示如下。开搞
在这里插入图片描述

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
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59

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;
}



  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

2 运行效果

在这里插入图片描述

★ 源码 ★

在这里插入图片描述

这里就要有人问了呀,这么优秀的代码,能不能分享下呀,当然可以呀,我不生产代码,我只是代码的搬运工,链接如下:

自取:https://github.com/DreamLife-Jianwei/Qt-Vtk

在这里插入图片描述


博客签名2021

文章来源: dreamlife.blog.csdn.net,作者:DreamLife.,版权归原作者所有,如需转载,请联系作者。

原文链接:dreamlife.blog.csdn.net/article/details/119573739

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。