用于理解vtkPolyData和vtkCellArray的一段代码
2015-09-23 15:57
423 查看
#include "vtkActor.h" #include "vtkCamera.h" #include "vtkCellArray.h" #include "vtkFloatArray.h" #include "vtkPointData.h" #include "vtkPoints.h" #include "vtkPolyData.h" #include "vtkPolyDataMapper.h" #include "vtkRenderWindow.h" #include "vtkRenderWindowInteractor.h" #include "vtkRenderer.h" int main() { int i; static float x[8][3]={{0,0,0}, {1,0,0}, {1,1,0}, {0,1,0}, {0,0,1}, {1,0,1}, {1,1,1}, {0,1,1}}; static vtkIdType pts[6][4]={{0,1,2,3}, {4,5,6,7}, {0,1,5,4}, {1,2,6,5}, {2,3,7,6}, {3,0,4,7}}; // We'll create the building blocks of polydata including data attributes. vtkPolyData *cube = vtkPolyData::New(); vtkPoints *points = vtkPoints::New(); vtkCellArray *polys = vtkCellArray::New(); vtkFloatArray *scalars = vtkFloatArray::New(); // Load the point, cell, and data attributes. for (i=0; i<8; i++) points->InsertPoint(i,x[i]);//将点保存在vtkPoints中 for (i=0; i<6; i++) polys->InsertNextCell(4,pts[i]);//6个面,每个面由4个点组成,对应pts[i]的4个ID for (i=0; i<8; i++) scalars->InsertTuple1(i,i);//这个应该是为每个点赋颜色用的,对应 cubeMapper->SetScalarRange(0,7); // We now assign the pieces to the vtkPolyData. cube->SetPoints(points); points->Delete(); cube->SetPolys(polys); polys->Delete(); cube->GetPointData()->SetScalars(scalars); scalars->Delete(); // Now we'll look at it. vtkPolyDataMapper *cubeMapper = vtkPolyDataMapper::New(); cubeMapper->SetInput(cube); cubeMapper->SetScalarRange(0,7); vtkActor *cubeActor = vtkActor::New(); cubeActor->SetMapper(cubeMapper); // The usual rendering stuff. vtkCamera *camera = vtkCamera::New(); camera->SetPosition(1,1,1); camera->SetFocalPoint(0,0,0); vtkRenderer *renderer = vtkRenderer::New(); vtkRenderWindow *renWin = vtkRenderWindow::New(); renWin->AddRenderer(renderer); vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New(); iren->SetRenderWindow(renWin); renderer->AddActor(cubeActor); renderer->SetActiveCamera(camera); renderer->ResetCamera(); renderer->SetBackground(1,1,1); renWin->SetSize(300,300); // interact with data renWin->Render(); iren->Start(); // Clean up cube->Delete(); cubeMapper->Delete(); cubeActor->Delete(); camera->Delete(); renderer->Delete(); renWin->Delete(); iren->Delete(); return 0; }
相关文章推荐
- FTP上传下载文件
- java学习笔记之WeakHashMap 、IdentityHashMap、EnumMap
- Java正则表达式入门
- javaEE__sevlet
- CasperJS 1分钟写完爬虫拿亚马逊商品数据
- test5.21
- PAT(甲级)1003
- Java IO流
- python的编码问题
- C4.5决策树--Java
- Java Session
- php 限制 上传文件大小
- C#中调用OCX控件
- 集合迭代删除元素
- [Java新手区] 【最权威!Eclipse快捷键大全】
- c/c++编程习惯
- Java-Mail 发送邮件
- c# socket检测连接服务器连接
- C# 关于未找到元数据文件.exe和不包含适合于入口点的静态“Main”方法
- java 1:入门