如何判断一个vtkActor的类型
来源:互联网 发布:淘宝买csgo钥匙 编辑:程序博客网 时间:2024/06/05 08:02
在VTK管线流程中,有个重要的角色就是vtkActor,本文旨在学习示例代码,学习使用方法。
#include <vtkSmartPointer.h>#include <vtkActor.h>#include <vtkActorCollection.h>#include <vtkCubeAxesActor.h>#include <vtkPolyData.h>#include <vtkPolyDataMapper.h>#include <vtkRenderWindow.h>#include <vtkRenderWindowInteractor.h>#include <vtkRenderer.h>#include <vtkSphereSource.h>int main(int, char *[]){// SpherevtkSmartPointer<vtkSphereSource> sphereSource = vtkSmartPointer<vtkSphereSource>::New();sphereSource->Update();vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();mapper->SetInputConnection(sphereSource->GetOutputPort());vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();actor->SetMapper(mapper);// Cube axesvtkSmartPointer<vtkCubeAxesActor> cubeAxesActor = vtkSmartPointer<vtkCubeAxesActor>::New();// Create a renderer and render windowvtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();cubeAxesActor->SetCamera(renderer->GetActiveCamera());renderer->AddActor(actor);renderer->AddActor(cubeAxesActor);// Determine the types of the actors - method 1{std::cout << "Method 1:" << std::endl;vtkActorCollection* actorCollection = renderer->GetActors();actorCollection->InitTraversal();for(vtkIdType i = 0; i < actorCollection->GetNumberOfItems(); i++){vtkActor* nextActor = actorCollection->GetNextActor();std::cout << "nextActor " << i << " : " << nextActor->GetClassName() << std::endl;std::string className = nextActor->GetClassName();std::string wantedClass = "vtkCubeAxesActor";if(className == wantedClass){std::cout << "nextActor " << i << " is a vtkCubeAxesActor!" << std::endl;}else{std::cout << "nextActor " << i << " is NOT a vtkCubeAxesActor!" << std::endl;}}}// Determine the types of the actors - method 2{std::cout << "Method 2:" << std::endl;vtkActorCollection* actorCollection = renderer->GetActors();actorCollection->InitTraversal();for(vtkIdType i = 0; i < actorCollection->GetNumberOfItems(); i++){vtkActor* nextActor = actorCollection->GetNextActor();std::cout << "nextActor " << i << " : " << nextActor->GetClassName() << std::endl;if(nextActor->IsA("vtkCubeAxesActor")){std::cout << "nextActor " << i << " is a vtkCubeAxesActor!" << std::endl;}else{std::cout << "nextActor " << i << " is NOT a vtkCubeAxesActor!" << std::endl;}}}// Determine the types of the actors - method 3{std::cout << "Method 3:" << std::endl;vtkActorCollection* actorCollection = renderer->GetActors();actorCollection->InitTraversal();for(vtkIdType i = 0; i < actorCollection->GetNumberOfItems(); i++){vtkActor* nextActor = actorCollection->GetNextActor();std::cout << "nextActor " << i << " : " << nextActor->GetClassName() << std::endl;if(vtkCubeAxesActor::SafeDownCast(nextActor) != 0){std::cout << "nextActor " << i << " is a vtkCubeAxesActor!" << std::endl;}else{std::cout << "nextActor " << i << " is NOT a vtkCubeAxesActor!" << std::endl;}}}// Determine the types of the actors - method 4{std::cout << "Method 4:" << std::endl;vtkActorCollection* actorCollection = renderer->GetActors();actorCollection->InitTraversal();for(vtkIdType i = 0; i < actorCollection->GetNumberOfItems(); i++){vtkActor* nextActor = actorCollection->GetNextActor();std::cout << "nextActor " << i << " : " << nextActor->GetClassName() << std::endl;if(dynamic_cast<vtkCubeAxesActor*>(nextActor) != 0){std::cout << "nextActor " << i << " is a vtkCubeAxesActor!" << std::endl;}else{std::cout << "nextActor " << i << " is NOT a vtkCubeAxesActor!" << std::endl;}}}// Render the scenevtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();renderWindow->AddRenderer(renderer);vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();renderWindowInteractor->SetRenderWindow(renderWindow);renderer->ResetCamera();renderWindow->Render();renderWindowInteractor->Initialize();renderWindowInteractor->Start();return EXIT_SUCCESS;}
获取当前vtkRenderer的所有ACTORS:
vtkActorCollection* actorCollection = renderer->GetActors();遍历:
actorCollection->InitTraversal();for(vtkIdType i = 0; i < actorCollection->GetNumberOfItems(); i++){vtkActor* nextActor = actorCollection->GetNextActor();···}
获取ACTOR类名
std::string className = nextActor->GetClassName();
四种不同的判断方法
/****************方法一**************************/std::string wantedClass = "vtkCubeAxesActor";if(className == wantedClass){// true}else{// false}/****************方法二**************************/if(nextActor->IsA("vtkCubeAxesActor")){// true}else{// false}/****************方法三**************************/if(vtkCubeAxesActor::SafeDownCast(nextActor) != 0){// true}else{// false}/****************方法四**************************/if(dynamic_cast<vtkCubeAxesActor*>(nextActor) != 0){// true}else{// false}
0 0
- 如何判断一个vtkActor的类型
- java如何判断一个文件的类型
- java如何判断一个文件的类型
- 如何判断一个基本类型的变量的类型呢?
- 如何判断一个对象是否是基本类型的Wrapper
- 如何判断一个对象是否是基本类型的Wrapper
- 如何判断一个(压缩)文件的类型,以及zcat/gzcat
- 判断一个变量的类型
- 如何判断浏览器的类型?
- 如何判断浏览器的类型?
- 如何判断变量的类型
- vtkActor在Render中移动的方法
- C/C++中如何判断一个输入的变量是否和其定义的类型一致
- 如何判断一个单链表是有环的?
- jquery 判断一个控件的的类型
- 如何判断一个NVARCHAR类型的字段中包含中文(这里只为简体中文)
- C++面向对象程序设计中如何判断一个对象的类类型
- java如何通过一个字段的get属性来判断类型
- android资源的热更新(替换 AssetManager+LoadedApk中的资源路径)
- Java Web开发--------监听器
- ubuntu实现无密码登陆
- ubuntu14.04的hadoop环境搭建(全分布模式)
- CentOS 6.5下NFS安装配置
- 如何判断一个vtkActor的类型
- Win7上的Eclipse3.3远程连接ubuntu14.04中的hadoop0.20.2
- HDFS可靠性措施
- Ubuntu 16.04搭建lamp环境
- 第一个hadoop程序-WordCount
- 从WordCount看MapReduce框架执行流程
- hdu5755 2016 Multi-University Training Contest 3 Gambler Bo 解题报告
- JavaScript日期格式转换
- css超出隐藏,并且不带滚动条