VTK ( 002) 基础
创建实例
1. vtkNew<vtkClass-name> var-name;
2. vtkSmartPointer<vtkClass-name> var-name;
3. vtkClass-name *var-name;
4. vtkClass-name var-name;
创建一个窗口显示点集
#include <vtkActor.h>
#include <vtkPoints.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkSmartPointer.h>
#include <vtkVertexGlyphFilter.h>
void SetActorProperties(vtkSmartPointer<vtkActor> actor, double pointSize)
{
actor->GetProperty()->SetPointSize(pointSize); // 设置点的大小
}
int main(int argc, char* argv[])
{
// 创建点数据
vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
points->InsertNextPoint(0.0, 0.0, 0.0); // x, y, z
points->InsertNextPoint(1.0, 0.0, 0.0);
points->InsertNextPoint(0.0, 1.0, 0.0);
// 创建 vtkPolyData
vtkSmartPointer<vtkPolyData> polyData = vtkSmartPointer<vtkPolyData>::New();
polyData->SetPoints(points);
// 使用 vtkVertexGlyphFilter 转换点数据
vtkSmartPointer<vtkVertexGlyphFilter> vertexGlyphFilter = vtkSmartPointer<vtkVertexGlyphFilter>::New();
vertexGlyphFilter->SetInputData(polyData);
vertexGlyphFilter->Update();
// 创建 vtkPolyDataMapper 和 vtkActor
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(vertexGlyphFilter->GetOutputPort());
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
// 设置点的大小
SetActorProperties(actor, 10.0);
// 创建渲染器、渲染窗口和交互器
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
// 添加演员到渲染器并渲染
renderer->AddActor(actor);
renderer->SetBackground(0.1, 0.2, 0.3); // 设置背景颜色
renderWindow->Render();
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}