您的位置:首页 > 其它

VTK教程之六 构建数据集的例子程序

2014-12-12 09:38 281 查看
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

本教程主要说明如何用VTK构建一个可视化的数据集,数据集主要由描述数据集几何形状的点集数据及构成数据集的单元构成,因此构建数据集的主要任务就是确定点集和构建单元,本示例程序构建了一个瓶子的实体,然后绘制瓶子,示例程序执行的步骤如下:

1、首先确定瓶子外轮廓的控制点,形成点集。

2、构建一个线单元。

3、构建多边形数据,把这些点集连接起来绘制一条线。

4、采用压制过滤器旋转轮廓线,构成瓶子的表面实体。

5、绘制瓶子

示例程序的代码如下:

//示例程序首先创建瓶子的轮廓线,然后转动轮廓线形成瓶子实体

#include "stdafx.h"

#include <vtkPoints.h>

#include <vtkSmartPointer.h>

#include <vtkCellArray.h>

#include <vtkPolyData.h>

#include <vtkPolyDataMapper.h>

#include
<vtkRotationalExtrusionFilter.h>

#include <vtkActor.h>

#include <vtkProperty.h>

#include <vtkRenderer.h>

#include <vtkRenderWindow.h>

#include
<vtkRenderWindowInteractor.h>

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

{

//定义瓶子轮廓线的点坐标

vtkSmartPointer<vtkPoints>pPoints=vtkPoints::New();

pPoints->InsertPoint(0,0.01,0.0,0.0);

pPoints->InsertPoint(1,1.5,0.0,0.0);

pPoints->InsertPoint(2,1.5,0.0,3.5);

pPoints->InsertPoint(3,1.25,0.0,3.75);

pPoints->InsertPoint(4,0.75,0.0,4.00);

pPoints->InsertPoint(5,0.6,0.0,4.35);

pPoints->InsertPoint(6,0.7,0.0,4.65);

pPoints->InsertPoint(7,1.0,0.0,4.75);

pPoints->InsertPoint(8,1.0,0.0,5.0);

pPoints->InsertPoint(9,0.2,0.0,5.0);

//构建线单元,绘制轮廓线

vtkSmartPointer<vtkCellArray>pLineCell=vtkCellArray::New();

//构建一个单元,由10个点构成

pLineCell->InsertNextCell(10);

/ /构成单元点集的索引号

pLineCell->InsertCellPoint(0);

pLineCell->InsertCellPoint(1);

pLineCell->InsertCellPoint(2);

pLineCell->InsertCellPoint(3);

pLineCell->InsertCellPoint(4);

pLineCell->InsertCellPoint(5);

pLineCell->InsertCellPoint(6);

pLineCell->InsertCellPoint(7);

pLineCell->InsertCellPoint(8);

pLineCell->InsertCellPoint(9);

//定义多边形数据集

vtkSmartPointer<vtkPolyData>pPolyData=vtkPolyData::New();

//设置构成多边形的几何数据

pPolyData->SetPoints(pPoints);

//设置单元类型,线单元

pPolyData->SetLines(pLineCell);

//压制轮廓线,形成瓶子实体

vtkSmartPointer<vtkRotationalExtrusionFilter>pExtruFilter=vtkRotationalExtrusionFilter::New();

pExtruFilter->SetInput(pPolyData);

//设置生成瓶子表面的光滑度参数,瓶子的表面由多少个面构成

pExtruFilter->SetResolution(10);

//将数据映射到图形系统进行绘制

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

pMap->SetInput(pExtruFilter->GetOutput());

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

pActor->SetMapper(pMap);

pActor->GetProperty()->SetColor(0.3800,0.7000,0.1600);

//绘制

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

pRen->AddActor(pActor);

//创建绘制窗体

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

pRenWin->AddRenderer(pRen);

//创建交互器

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

pIren->SetRenderWindow(pRenWin);

//设置背景颜色

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

//设置窗口尺寸

pRenWin->SetSize(300,300);

pRenWin->Render();

pRen->ResetCamera();

//开始绘制

pIren->Initialize();

pIren->Start();

return 0;

}

#Vtk
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: