使用 vtkPolyData
构建球体表面
cpp
复制代码
#include <vtkSmartPointer.h>
#include <vtkSphereSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkProperty.h>
int main() {
// 创建一个球体源
vtkSmartPointer<vtkSphereSource> sphereSource = vtkSmartPointer<vtkSphereSource>::New();
sphereSource->SetRadius(50.0); // 设置球体半径为50
sphereSource->SetThetaResolution(50); // 设置经度方向的分辨率
sphereSource->SetPhiResolution(50); // 设置纬度方向的分辨率
sphereSource->Update();
// 创建Mapper
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(sphereSource->GetOutputPort());
// 创建Actor
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
actor->GetProperty()->SetColor(0.0, 0.0, 1.0); // 设置颜色为蓝色
// 创建Renderer和RenderWindow
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
// 创建RenderWindowInteractor
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
// 将Actor添加到Renderer
renderer->AddActor(actor);
renderer->SetBackground(0.1, 0.2, 0.3); // 设置背景颜色
// 渲染和交互
renderWindow->Render();
renderWindowInteractor->Start();
return 0;
}
代码说明:
vtkSphereSource
:用于生成球体的几何数据。
SetRadius(50.0)
:设置球体的半径为50。
SetThetaResolution
和 SetPhiResolution
:设置球体的分辨率(即细分程度)。
vtkPolyDataMapper
:将几何数据映射为可渲染的对象。
vtkActor
:表示场景中的对象,设置颜色为蓝色。
vtkRenderer
和 vtkRenderWindow
:用于渲染和显示场景。
vtkRenderWindowInteractor
:提供交互功能(如旋转、缩放)。