Qt&Vtk-028-SGrid

简介: Qt&Vtk-028-SGrid

image.png 摘要

文章目录


1 官方示例展示


代码搬运工作就要接近尾声了,和面也不想在抄了,编程了直接拷贝了。看下官方实例image.png

#ifndef SGRID_H
#define SGRID_H
#include <QWidget>
#include "QVTKOpenGLWidget.h"               //新版本,旧版QVTKWidget
#include "vtkAutoInit.h"
#include "vtkActor.h"
#include "vtkCamera.h"
#include "vtkFloatArray.h"
#include "vtkHedgeHog.h"
#include "vtkMath.h"
#include "vtkNamedColors.h"
#include "vtkNew.h"
#include "vtkPointData.h"
#include "vtkPoints.h"
#include "vtkPolyDataMapper.h"
#include "vtkProperty.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkRenderer.h"
#include "vtkStructuredGrid.h"
#include "array"
namespace Ui {
class SGrid;
}
class SGrid : public QWidget
{
    Q_OBJECT
public:
    explicit SGrid(QWidget *parent = 0);
    ~SGrid();
private:
    Ui::SGrid *ui;
    vtkNew<vtkNamedColors> colors;
    float rMin = 0.5, rMax = 1.0, deltaRad, deltaZ;
    std::array<int, 3> dims = {{13, 11, 11}};
    vtkNew<vtkStructuredGrid> sgrid;
    vtkNew<vtkFloatArray> vectors;
    vtkNew<vtkPoints> points;
    vtkNew<vtkHedgeHog> hedgehog;
    vtkNew<vtkPolyDataMapper> sgridMapper;
    vtkNew<vtkActor> sgridActor;
    vtkNew<vtkRenderer> renderer;
};
#endif // SGRID_H

2.2 sgrid.cpp


#include "sgrid.h"
#include "ui_sgrid.h"
SGrid::SGrid(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::SGrid)
{
    ui->setupUi(this);
    sgrid->SetDimensions(dims.data());
    vectors->SetNumberOfComponents(3);
    vectors->SetNumberOfTuples(dims[0] * dims[1] * dims[2]);
    points->Allocate(dims[0] * dims[1] * dims[2]);
    deltaZ = 2.0 / (dims[2] - 1);
    deltaRad = (rMax - rMin) / (dims[1] - 1);
    float x[3], v[3];
    v[2] = 0.0;
    for (auto k = 0; k < dims[2]; k++)
    {
        x[2] = -1.0 + k * deltaZ;
        int kOffset = k * dims[0] * dims[1];
        for (auto j = 0; j < dims[1]; j++)
        {
            float radius = rMin + j * deltaRad;
            int jOffset = j * dims[0];
            for (auto i = 0; i < dims[0]; i++)
            {
                float theta = i * vtkMath::RadiansFromDegrees(15.0);
                x[0] = radius * cos(theta);
                x[1] = radius * sin(theta);
                v[0] = -x[1];
                v[1] = x[0];
                int offset = i + jOffset + kOffset;
                points->InsertPoint(offset, x);
                vectors->InsertTuple(offset, v);
            }
        }
    }
    sgrid->SetPoints(points);
    sgrid->GetPointData()->SetVectors(vectors);
    hedgehog->SetInputData(sgrid);
    hedgehog->SetScaleFactor(0.1);
    sgridMapper->SetInputConnection(hedgehog->GetOutputPort());
    sgridActor->SetMapper(sgridMapper);
    sgridActor->GetProperty()->SetColor(colors->GetColor3d("Indigo").GetData());
    renderer->AddActor(sgridActor);
    renderer->SetBackground(colors->GetColor3d("Cornsilk").GetData());
    renderer->ResetCamera();
    renderer->GetActiveCamera()->Elevation(60.0);
    renderer->GetActiveCamera()->Azimuth(30.0);
    renderer->GetActiveCamera()->Zoom(1.0);
    ui->widget->GetRenderWindow()->AddRenderer(renderer);
}
SGrid::~SGrid()
{
    delete ui;
}

image.pngimage.png

目录
相关文章
|
弹性计算 关系型数据库 Apache
基于ECS搭建云上博客
本场景将基于一台配置了CentOS 7.7操作系统的ECS实例(云服务器)。通过本教程的操作,您可以在一台CentOS 7.7操作系统的ECS实例上安装和部署LAMP环境,然后安装 WordPress,帮助您快速搭建自己的博客。
基于ECS搭建云上博客
Temporary email邮箱API发送邮件的步骤
使用Temporary email API发送邮件可保护隐私。步骤包括:了解API原理,注册获取API密钥,调用API并传入密钥,生成临时邮箱地址,编写邮件内容,然后发送。此方法确保真实邮箱不被泄露,适用于避免垃圾邮件。记得遵守使用规定和法规。
|
Python
pyqt 界面卡顿 解决办法 多线程
pyqt 界面卡顿 解决办法 多线程
443 0
|
JavaScript 前端开发 安全
如何学好JavaScript:从初学者到专家的学习指南
JavaScript是一门强大的编程语言,用于在网页上创建交互性和动态性。无论你是初学者还是有经验的开发者,学好JavaScript都是一个有价值的追求。这篇文章将指导你如何系统地学习JavaScript,并逐步提升你的技能水平,从初学者到专家。
|
API Python
永续合约/秒合约系统设计开发dapp技术/代码搭建示例
永续合约是一种类似于期货合约的金融衍生品,与传统合约不同的是,它没有到期日期。HKD交易所的永续合约是基于标 记价格和保证金机制的交易方式,允许用户通过杠杆操作来增加收益和风险。在永续合约交易中,用户可以选择开多或开空 仓位,实现对市场走势的利润预测。
|
网络协议 PHP 网络虚拟化
BGP MPLS VPN(OPTION C)实验笔记
BGP MPLS VPN(OPTION C)实验笔记
513 1
|
存储 数据库 Android开发
Android -- 购物车
Android -- 购物车
305 0
|
SQL 运维 数据建模
《全链路数据治理-智能数据建模 》——客户案例:工业OT 域数据最佳实践(1)
《全链路数据治理-智能数据建模 》——客户案例:工业OT 域数据最佳实践(1)
500 0
|
存储 架构师 数据管理
免费下载!《云存储应用白皮书》详解创新背后的技术实践
进入21世纪,云存储技术兴起,并成为应对数据洪流的利器。《云存储应用白皮书》作为云存储行业全景式文档,阐述了变革时代之下云存储的三大核心技术趋势,旨在为数字经济从业者提供具有指导性、操作性的参考资料。电子书现已开放下载,即刻收藏阅读吧!
1801 0
免费下载!《云存储应用白皮书》详解创新背后的技术实践
|
网络协议 网络架构
TCP-IP四层模型是什么
TCP-IP四层模型是什么

热门文章

最新文章