vtk实战(五十一)—构建三维形体
来源:互联网 发布:手机麻将源码架设教程 编辑:程序博客网 时间:2024/04/28 18:14
#include <vtkSmartPointer.h>#include <vtkPolyDataMapper.h>#include <vtkTextMapper.h>#include <vtkActor.h>#include <vtkActor2D.h>#include <vtkRenderer.h>#include <vtkRenderWindow.h>#include <vtkRenderWindowInteractor.h>#include <vtkArrowSource.h>#include <vtkConeSource.h>#include <vtkCubeSource.h>#include <vtkCylinderSource.h>#include <vtkDiskSource.h>#include <vtkLineSource.h>#include <vtkRegularPolygonSource.h>#include <vtkSphereSource.h>#include <vector>int main(){ std::vector<vtkSmartPointer<vtkPolyDataAlgorithm> > geometricObjectSources; geometricObjectSources.push_back(vtkSmartPointer<vtkArrowSource>::New());//箭头 geometricObjectSources.push_back(vtkSmartPointer<vtkConeSource>::New());//锥体 geometricObjectSources.push_back(vtkSmartPointer<vtkCubeSource>::New());//立方体 geometricObjectSources.push_back(vtkSmartPointer<vtkCylinderSource>::New());//缸体 geometricObjectSources.push_back(vtkSmartPointer<vtkDiskSource>::New());//转盘 geometricObjectSources.push_back(vtkSmartPointer<vtkLineSource>::New());//直线 geometricObjectSources.push_back(vtkSmartPointer<vtkRegularPolygonSource>::New());//正多面体 geometricObjectSources.push_back(vtkSmartPointer<vtkSphereSource>::New());//球体 std::vector<vtkSmartPointer<vtkRenderer> > renderers; std::vector<vtkSmartPointer<vtkPolyDataMapper> > mappers; std::vector<vtkSmartPointer<vtkActor> > actors; std::vector<vtkSmartPointer<vtkTextMapper> > textmappers; std::vector<vtkSmartPointer<vtkActor2D> > textactors; for (unsigned int i = 0; i < geometricObjectSources.size(); i++) { geometricObjectSources[i]->Update(); mappers.push_back(vtkSmartPointer<vtkPolyDataMapper>::New());mappers[i]->SetInputConnection(geometricObjectSources[i]->GetOutputPort()); actors.push_back(vtkSmartPointer<vtkActor>::New()); actors[i]->SetMapper(mappers[i]); textmappers.push_back(vtkSmartPointer<vtkTextMapper>::New()); textmappers[i]->SetInput(geometricObjectSources[i]->GetClassName()); textactors.push_back(vtkSmartPointer<vtkActor2D>::New()); textactors[i]->SetMapper(textmappers[i]); textactors[i]->SetPosition(10, 10); } // 设置格网承载形体 int gridCols = 3; int gridRows = 3; // 定义渲染范围 int rendererSize = 200; vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New(); renderWindow->SetSize(rendererSize*gridCols, rendererSize*gridRows); vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New(); for (double row = 0; row < gridRows; row++) { for (double col = 0; col < gridCols; col++) { double index = row*gridCols + col; //为每个cell定义渲染器 vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New(); renderer->SetBackground(.1, .2, .3); double viewport[4] = { ((col)* rendererSize) / (gridCols * rendererSize), ((gridRows - (row + 1)) * rendererSize) / (gridRows * rendererSize), ((col + 1) * rendererSize) / (gridCols * rendererSize), ((gridRows - (row)) * rendererSize) / (gridRows * rendererSize) }; renderer->SetViewport(viewport); if (index < geometricObjectSources.size()) { renderer->AddActor(actors[index]); renderer->AddActor(textactors[index]); } renderWindow->AddRenderer(renderer); } } vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New(); interactor->SetRenderWindow(renderWindow); renderWindow->Render(); interactor->Start(); return 0;}
0 0
- vtk实战(五十一)—构建三维形体
- vtk实战(四十九)——使用vtkCell3D构建三维形体
- vtk实战(七)—读取三维点坐标
- vtk实战(九)—读取三维点坐标2
- 三维形体的构造及表达
- vtk实战(五十二)—箭头
- vtk实战(五十三)—坐标轴
- VTK三维测量
- vtk三维场景基本要素
- 三维形体的数据结构(1)半边数据结构
- vtk实战(一)——HelloVtk
- vtk实战(四)——透视投影变换
- vtk实战(五)—格式转换
- vtk实战(六)—读取".gml"文件
- vtk实战(八)—读取.raw文件
- VTK 面绘制 三维数据源
- 【VTK】三维体绘制方法
- VTK三维坐标点拾取
- ToolBar
- 运行时类型信息
- java中Socket的详细解析(转)
- 171. Excel Sheet Column Number
- springmvc源码解析(1)
- vtk实战(五十一)—构建三维形体
- java死锁案例
- 《java入门第一季》之面向对象(static关键字)
- win8.1下创建开机启动项
- whuProblem 1613 - Count in Sama’s triangle
- 【BZOJ2054】疯狂的馒头【BZOJ2375】疯狂的涂色【并查集】
- PAT乙级—1021. 个位数统计 (15)-native
- 136. Single Number--取出非重复数字
- 欢迎使用CSDN-markdown编辑器