首页 技术 正文
技术 2022年11月6日
0 收藏 499 点赞 837 浏览 2456 个字

数据集主要由描写叙述数据集几何形状的点集数据及构成数据集的单元构成,因此构建数据集的主要任务就是确定点集和构建单元,本演示样例程序构建了一个苹果的实体,然后绘制苹果。演示样例程序运行的过程例如以下:

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

结果的几个角度截图

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,083
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,558
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,407
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,180
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,817
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,900