zoukankan      html  css  js  c++  java
  • VTK初学一,a Mesh from vtkImageData

    #ifndef INITIAL_OPENGL
    #define INITIAL_OPENGL
    #include <vtkAutoInit.h>
    VTK_MODULE_INIT(vtkRenderingOpenGL)
    VTK_MODULE_INIT(vtkInteractionStyle)
    #endif
    
    
    #include <iostream>
    using namespace std;
    #include <vtkVersion.h>
    #include <vtkPolyData.h>
    #include <vtkProperty.h>
    #include <vtkMath.h>
    #include <vtkSmartPointer.h>
    #include <vtkPolyDataMapper.h>
    #include <vtkActor.h>
    #include <vtkRenderWindow.h>
    #include <vtkRenderer.h>
    #include <vtkRenderWindowInteractor.h>
    #include <vtkImageData.h>
    #include <vtkGreedyTerrainDecimation.h>
    #include <vtkInteractorStyleTrackballCamera.h>
    #include <vtkInteractionWidgetsModule.h>
    
    
    void myShow(vtkGreedyTerrainDecimation* anInput)
    {
    
    
        vtkSmartPointer<vtkPolyDataMapper> aMapper=vtkSmartPointer<vtkPolyDataMapper>::New();
        aMapper->SetInputConnection(anInput->GetOutputPort());
        aMapper->ScalarVisibilityOn();
    
    
        vtkSmartPointer<vtkActor> anActor=vtkSmartPointer<vtkActor>::New();
        anActor->SetMapper(aMapper);
        anActor->GetProperty()->SetInterpolationToFlat();
        anActor->GetProperty()->EdgeVisibilityOn();
        anActor->GetProperty()->SetEdgeColor(1,0,0);
    
    
        vtkSmartPointer<vtkRenderer> ren1=vtkSmartPointer<vtkRenderer>::New();
        vtkSmartPointer<vtkRenderWindow> renWin=vtkSmartPointer<vtkRenderWindow>::New();
        ren1->AddActor(anActor);
        ren1->ResetCamera();
        ren1->SetBackground(1,1,1);
        renWin->AddRenderer(ren1);
        renWin->SetSize(512,512);
    
    
        vtkSmartPointer<vtkRenderWindowInteractor> iren=vtkSmartPointer<vtkRenderWindowInteractor>::New();
        vtkSmartPointer<vtkInteractorStyleTrackballCamera> style=vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
        iren->SetRenderWindow(renWin);
        iren->SetInteractorStyle(style);
        iren->Start();
    }
    int main()
    {
        vtkSmartPointer<vtkImageData> image=vtkSmartPointer<vtkImageData>::New();
        image->SetDimensions(20,20,1);//头两个参数分别是沿x、y方向的取样点数,第三个参数是z方向的取样点数
        image->AllocateScalars(VTK_UNSIGNED_CHAR,1);
        int dims[3];
        image->GetDimensions(dims);
        for(double i=0;i<dims[0];i++)
        {
            for(double j=0;j<dims[1];j++)
            {
                unsigned char* pixel=static_cast<unsigned char*>(image->GetScalarPointer(i,j,0));
                pixel[0]=vtkMath::Round(vtkMath::Random(0,5));//在(i,j)位置上的“高”
            }
        }
        vtkSmartPointer<vtkGreedyTerrainDecimation>decimation=vtkSmartPointer<vtkGreedyTerrainDecimation>::New();
        decimation->SetInputData(image);
        decimation->Update();
        //可视化
        myShow(decimation);
        return 0;
    }
    
    
    
    
  • 相关阅读:
    python基础(9):基本数据类型四(set集合)、基础数据类型补充、深浅拷贝
    python基础(8):基本数据类型三(dict)、is和==、编码和解码
    python基础(7):基本数据类型二(list、tuple)、range
    python基础(1):python介绍、python发展史
    python基础(6):基本数据类型一(int、bool、str)
    python基础(5):格式化输出、基本运算符、编码问题
    python基础(4):用户交互、if判断、while循环、break和continue
    python基础(2):python的安装、第一个python程序
    python基础(3):变量、常量、注释、基本数据类型
    java基础(32):类加载、反射
  • 原文地址:https://www.cnblogs.com/phoenixdsg/p/6120493.html
Copyright © 2011-2022 走看看