VTK教程之十一 可视化基础算法-方…

矢量是有大小和方向的量,矢量数据在我们日常生活中经常见到,如:物体在某点的运动速度、计算有限元节点的位移、应力等,矢量数据一般和某个位置点相关,一般表示某个位置点的大小和方向,方向线是矢量数据可视化方法之一,该方法的主要目的是用方向线标识某点的矢量方向,在VTK中方向线有多种表现形式,除了用线标识矢量的方向外,还可以用箭头标识矢量的方向或根据矢量的大小(及其它标量值,如温度、压力)把矢量线绘制成不同的颜色以及用2D或3D几何符号代替方向线,用几何符号代替方向线也被称为方向符号,方向线的表现形式如下图所示:



 

方向线                 方向符号

应该根据实际的要求使用方向线技术,如果在矢量数据场中要标识许多点的矢量方向的话,大量使用方向线技术,将使点的矢量方向变得难以辨别,这就失去了矢量数据可视化的意义,下面给出一个方向线的示例程序。

#include "stdafx.h"

#include <vtkSmartPointer.h>

#include <vtkStructuredPointsReader.h>

#include <vtkHedgeHog.h>

#include <vtkLookupTable.h>

#include <vtkPolyDataMapper.h>

#include "vtkActor.h"

#include "vtkCamera.h"

#include "vtkPolyDataMapper.h"

#include "vtkRenderWindow.h"

#include "vtkRenderWindowInteractor.h"

#include "vtkRenderer.h"

int _tmain(int argc, _TCHAR* argv[])

{

   /读取结构化的网格数据文件

vtkSmartPointer<vtkStructuredPointsReader>pStructGrid=vtkStructuredPointsReader::New();

    pStructGrid->SetFileName("carotid.vtk");

    pStructGrid->Update();

   /创建矢量数据的方向线

    vtkSmartPointer<vtkHedgeHog>pHedHog=vtkHedgeHog::New();

    pHedHog->SetInput((vtkDataObject *)pStructGrid->GetOutput());

   /设置缩放因子,控制方向线的长度

    pHedHog->SetScaleFactor(0.3);

   /颜色表

    vtkSmartPointer<vtkLookupTable>pLookTable=vtkLookupTable::New();

    pLookTable->Build();

   /pLookTable->SetHueRange(0.667,0);

   /创建映射器

    vtkSmartPointer<vtkPolyDataMapper>pMapper=vtkPolyDataMapper::New();

    pMapper->SetInput(pHedHog->GetOutput());

    pMapper->SetLookupTable(pLookTable);

   /确定用颜色标识矢量数据标量值大小的范围

    pMapper->SetScalarRange(50,550);

    pMapper->SetScalarVisibility(1);

    vtkSmartPointer<vtkActor>pActor = vtkActor::New();

    pActor->SetMapper(pMapper);

   /绘制

    vtkSmartPointer<vtkRenderer>renderer = vtkRenderer::New();

    vtkSmartPointer<vtkRenderWindow>renWin = vtkRenderWindow::New();

    renWin->AddRenderer(renderer);

 

    vtkSmartPointer<vtkRenderWindowInteractor>iren = vtkRenderWindowInteractor::New();

    iren->SetRenderWindow(renWin);

    renderer->AddActor(pActor);

    renderer->ResetCamera();

    renderer->SetBackground(1,1,1);

    renWin->SetSize(300,300);

    renWin->Render();

    iren->Start();

    return 0;

}

该示例程序读取一个规则网格点数据集,然后用vtkHedgeHog类提取每个点的矢量方向,根据每个点的标量值,确定要绘制的方向线的颜色,然后绘制每个点的方向线,示例程序所读取的数据是一个文本文件,可以用记事本打开文件,看一看文件的结构和数据,程序运行结果如下图所示:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值