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
本教程主要说明如何用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
相关文章推荐
- VTK教程之五&nbsp;数据集的类型和数据集…
- VTK教程之八&nbsp;可视化基础算法-颜色…
- VTK教程之十一&nbsp;可视化基础算法-方…
- VTK教程之四&nbsp;单元和点集
- VTK教程之九&nbsp;可视化基础算法-二维…
- VTK教程之二&nbsp;可视化管线的执行
- VTK教程之一&nbsp;可视化管线
- VTK教程之十二&nbsp;可视化基础算法-几…
- VTK教程之七 可视化基础算法-概述
- VTK教程之十&nbsp;可视化基础算法-三维…
- VTK教程之十三&nbsp;可视化基础算法-位…
- 新手终极宝典&nbsp;iTunes使用教程精华大全
- 超详细获得免费iTunes&nbsp;Store帐户教程
- 利用数据集在水晶报表中显示图像的 .NET 程序教程
- iPhone&nbsp;LumaQQ聊天软件详细使用教程
- iBus&nbsp;1.3删除乱码名文件及文件夹指导教程
- Total&nbsp;Video视频转换软件使用教程
- 新版iPhone&nbsp;PC&nbsp;Suite完全详细使用教程
- 连破6台1.1.1&nbsp;Windows破解教程图文版
- iDemocracy&nbsp;1.1.1&nbsp;图文破解教程