學習繪製點
/*
* ModuleName: 模塊名稱
* Description:
* 參考代碼:https://lorensen.github.io/VTKExamples/site/Cxx/GeometricObjects/Point/
* Author: hsw
* Date: 2020-03-15
*
*/
// QT
#include <QMainWindow>
#include <QDebug>
// VTK
#include <vtkActor.h>
#include <vtkCellArray.h>
#include <vtkNamedColors.h>
#include <vtkPoints.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkSmartPointer.h>
#include <vtkAutoInit.h>
// C++
#include <array>
#include <vector>
#include <string>
namespace Ui {
class MainWindow;
}
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingContextOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
#include <string>
#include <vector>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
private:
};
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
vtkSmartPointer<vtkNamedColors> colors = vtkSmartPointer<vtkNamedColors>::New();
// Create the geometry of a point (the coordinate)
vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
const float p[3] = {1.0, 2.0, 3.0};
vtkIdType pid[1];
pid[0] = points->InsertNextPoint(p); // pid[0] is p insert cell id
// Create the topology of the point (a vertex)
vtkSmartPointer<vtkCellArray> vertices = vtkSmartPointer<vtkCellArray>::New();
vertices->InsertNextCell(1, pid);
// vtkPolyData
vtkSmartPointer<vtkPolyData> point = vtkSmartPointer<vtkPolyData>::New();
point->SetPoints(points);
point->SetVerts(vertices);
// vtkPolyDataMapper
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputData(point);
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
actor->GetProperty()->SetColor(colors->GetColor3d("Tomato").GetData());
actor->GetProperty()->SetPointSize(20);
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow = ui->qvtkWidget->GetRenderWindow();
renderWindow->SetWindowName("Point");
renderWindow->AddRenderer(renderer);
renderer->AddActor(actor);
renderer->SetBackground(colors->GetColor3d("DarkOliveGreen").GetData());
}
MainWindow::~MainWindow()
{
delete ui;
}