VTK学习之路——画画我的小苹果
2014-09-17 18:50
246 查看
数据集主要由描述数据集几何形状的点集数据及构成数据集的单元构成,因此构建数据集的主要任务就是确定点集和构建单元,本示例程序构建了一个苹果的实体,然后绘制苹果,示例程序执行的步骤如下:
1、首先确定苹果外轮廓的控制点,形成点集。
2、构建一个线单元。
3、构建多边形数据,把这些点集连接起来绘制一条线。
4、采用压制过滤器旋转轮廓线,构成苹果的表面实体。
5、绘制苹果
示例程序的代码如下:
结果的几个角度截图
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.0,0.0,1.5); pPoints->InsertPoint(1,1.0,0.0,1); pPoints->InsertPoint(2,2.0,0.0,1.5); pPoints->InsertPoint(3,3.0,0.0,2.5); pPoints->InsertPoint(4,3.5,0.0,3.0); pPoints->InsertPoint(5,4.0,0.0,5.0); pPoints->InsertPoint(6,3.5,0.0,6.0); pPoints->InsertPoint(7,2.0,0.0,7.0); pPoints->InsertPoint(8,1.0,0.0,6.0); pPoints->InsertPoint(9,0.0,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.0,1.0,0.0); //绘制 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学习之路——单元和点集
- vtk学习之路—第二章
- VTK学习之路——可视化管线
- VTK学习之路——可视化管线的执行与数据集
- JAVA学习之路:不走弯路,就是捷径
- Java学习之路:不走弯路,就是捷径
- JAVA学习之路:不走弯路,就是捷径
- Java学习之路:不走弯路,就是捷径 www.51testing.com
- 未来美好憧憬:计算机之路漫漫兮,悠悠载,希望到研究生的时候能够组成一个大家自己的团队,一起学习,开发,研究...
- 继续写写我的Java学习之路([我最喜欢的文章之一,转载)
- 【学习之路】程序员 如何掌握 计算专业机英语
- JAVA学习之路:不走弯路,就是捷径
- JAVA学习之路:不走弯路,就是捷径
- Java学习之路:不走弯路,就是捷径 (1)
- 我的vc学习之路——山穷水尽疑无路,柳暗花明又一村
- JAVA学习之路:不走弯路,就是捷径(二)
- Java学习之路:不走弯路,就是捷径
- JAVA学习之路:不走弯路,就是捷径(一)
- 别人的JAVA学习之路,值得学习(2)