#include <vtkSmartPointer.h>
#include <vtkStructuredPointsReader.h>
#include <vtkPointSource.h>
#include <vtkThresholdPoints.h>
#include <vtkStreamTracer.h>
#include <vtkTubeFilter.h>
#include <vtkPolyDataMapper.h>
int main()
{
// 创建vtkStructuredPointsReader对象,用于读取结构化点数据
vtkSmartPointer<vtkStructuredPointsReader> reader =
vtkSmartPointer<vtkStructuredPointsReader>::New();
reader->SetFileName("carotid.vtk");
// 创建vtkPointSource对象,用于生成点数据
vtkSmartPointer<vtkPointSource> psource =
vtkSmartPointer<vtkPointSource>::New();
psource->SetNumberOfPoints(25);
psource->SetCenter(133.1, 116.3, 5.0);
psource->SetRadius(2.0);
// 创建vtkThresholdPoints对象,用于根据阈值过滤点数据
vtkSmartPointer<vtkThresholdPoints> threshold =
vtkSmartPointer<vtkThresholdPoints>::New();
threshold->SetInputConnection(reader->GetOutputPort());
threshold->ThresholdByUpper(275);
// 创建vtkStreamTracer对象,用于追踪流线
vtkSmartPointer<vtkStreamTracer> streamers =
vtkSmartPointer<vtkStreamTracer>::New();
streamers->SetInputConnection(reader->GetOutputPort());
streamers->SetSourceConnection(psource->GetOutputPort());
streamers->SetMaximumPropagation(100.0);
streamers->SetInitialIntegrationStep(0.2);
streamers->SetTerminalSpeed(0.01);
streamers->Update();
// 创建vtkTubeFilter对象,用于将流线转换为管状结构
vtkSmartPointer<vtkTubeFilter> tubes =
vtkSmartPointer<vtkTubeFilter>::New();
tubes->SetInputConnection(streamers->GetOutputPort());
tubes->SetRadius(0.3);
tubes->SetNumberOfSides(6);
tubes->SetVaryRadiusToVaryRadiusOff();
// 创建vtkPolyDataMapper对象,用于映射管状结构的数据
vtkSmartPointer<vtkPolyDataMapper> streamerMapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
streamerMapper->SetInputConnection(tubes->GetOutputPort());
streamerMapper->SetScalarRange(2, 10);
return 0;
}
代码解释
-
包含头文件:
- 包含必要的VTK头文件,以便使用相关的VTK类。
-
主函数:
main
函数是程序的入口点。
-
创建VTK对象:
- 使用
vtkSmartPointer
管理VTK对象的生命周期,以确保内存正确释放。 - 创建
vtkStructuredPointsReader
对象来读取结构化点数据文件carotid.vtk
。 - 创建
vtkPointSource
对象来生成点数据,设置点的数量、中心位置和半径。 - 创建
vtkThresholdPoints
对象来根据阈值过滤点数据,设置输入端口和阈值。 - 创建
vtkStreamTracer
对象来追踪流线,设置输入和源连接,以及各种追踪参数,并调用Update
方法来执行追踪。 - 创建
vtkTubeFilter
对象来将流线转换为管状结构,设置输入连接、半径、侧面数和半径变化选项。 - 创建
vtkPolyDataMapper
对象来映射管状结构的数据,设置输入连接和标量范围。
- 使用
-
返回0:
- 表示程序正常结束。