第05章 20 可视化血液流之另篇

 

#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;
}

代码解释

  1. 包含头文件

    • 包含必要的VTK头文件,以便使用相关的VTK类。
  2. 主函数

    • main函数是程序的入口点。
  3. 创建VTK对象

    • 使用vtkSmartPointer管理VTK对象的生命周期,以确保内存正确释放。
    • 创建vtkStructuredPointsReader对象来读取结构化点数据文件carotid.vtk
    • 创建vtkPointSource对象来生成点数据,设置点的数量、中心位置和半径。
    • 创建vtkThresholdPoints对象来根据阈值过滤点数据,设置输入端口和阈值。
    • 创建vtkStreamTracer对象来追踪流线,设置输入和源连接,以及各种追踪参数,并调用Update方法来执行追踪。
    • 创建vtkTubeFilter对象来将流线转换为管状结构,设置输入连接、半径、侧面数和半径变化选项。
    • 创建vtkPolyDataMapper对象来映射管状结构的数据,设置输入连接和标量范围。
  4. 返回0

    • 表示程序正常结束。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值