首页 > 其他分享 >VTK 实例59:加入边界限制的三角剖分(表面重建)

VTK 实例59:加入边界限制的三角剖分(表面重建)

时间:2023-08-16 09:02:07浏览次数:35  
标签:59 剖分 GetPointIds VTK InsertNextId poly vtkSmartPointer New include

  1 #include <vtkAutoInit.h>
  2 VTK_MODULE_INIT(vtkRenderingOpenGL2);
  3 VTK_MODULE_INIT(vtkRenderingFreeType);
  4 VTK_MODULE_INIT(vtkInteractionStyle);
  5 
  6 #include <vtkSmartPointer.h>
  7 #include <vtkProperty.h>
  8 #include <vtkPolygon.h>
  9 #include <vtkCellArray.h>
 10 #include <vtkPoints.h>
 11 #include <vtkPolyData.h>
 12 #include <vtkPointData.h>
 13 #include <vtkDelaunay2D.h>
 14 #include <vtkMath.h>
 15 #include <vtkPolyDataMapper.h>
 16 #include <vtkActor.h>
 17 #include <vtkRenderWindow.h>
 18 #include <vtkRenderer.h>
 19 #include <vtkRenderWindowInteractor.h>
 20 #include <vtkVertexGlyphFilter.h>
 21 
 22 int main(int, char *[])
 23 {
 24     vtkSmartPointer<vtkPoints> points =
 25         vtkSmartPointer<vtkPoints>::New();
 26 
 27     unsigned int gridSize = 10;
 28     for(unsigned int x = 0; x < gridSize; x++)
 29     {
 30         for(unsigned int y = 0; y < gridSize; y++)
 31         {
 32             points->InsertNextPoint(x, y, vtkMath::Random(0.0, 3.0));
 33         }
 34     }
 35 
 36     vtkSmartPointer<vtkPolyData> polydata =
 37         vtkSmartPointer<vtkPolyData>::New();
 38     polydata->SetPoints(points);
 39 
 40     vtkSmartPointer<vtkPolygon> poly =
 41         vtkSmartPointer<vtkPolygon>::New();
 42     /*poly->GetPointIds()->InsertNextId(22);
 43     poly->GetPointIds()->InsertNextId(23);
 44     poly->GetPointIds()->InsertNextId(24);
 45     poly->GetPointIds()->InsertNextId(25);
 46     poly->GetPointIds()->InsertNextId(35);
 47     poly->GetPointIds()->InsertNextId(45);
 48     poly->GetPointIds()->InsertNextId(44);
 49     poly->GetPointIds()->InsertNextId(43);
 50     poly->GetPointIds()->InsertNextId(42);
 51     poly->GetPointIds()->InsertNextId(32);*/
 52 
 53     poly->GetPointIds()->InsertNextId(32);
 54     poly->GetPointIds()->InsertNextId(42);
 55     poly->GetPointIds()->InsertNextId(43);
 56     poly->GetPointIds()->InsertNextId(44);
 57     poly->GetPointIds()->InsertNextId(45);
 58     poly->GetPointIds()->InsertNextId(35);
 59     poly->GetPointIds()->InsertNextId(25);
 60     poly->GetPointIds()->InsertNextId(24);
 61     poly->GetPointIds()->InsertNextId(23);
 62     poly->GetPointIds()->InsertNextId(22);
 63 
 64     vtkSmartPointer<vtkCellArray> cell =
 65         vtkSmartPointer<vtkCellArray>::New();
 66     cell->InsertNextCell(poly);
 67 
 68     vtkSmartPointer<vtkPolyData> boundary =
 69         vtkSmartPointer<vtkPolyData>::New();
 70     boundary->SetPoints(points);
 71     boundary->SetPolys(cell);
 72 
 73     vtkSmartPointer<vtkDelaunay2D> delaunay =
 74         vtkSmartPointer<vtkDelaunay2D>::New();
 75     delaunay->SetInputData(polydata);
 76     delaunay->SetSourceData(boundary);
 77     delaunay->Update();
 78 
 79     vtkSmartPointer<vtkVertexGlyphFilter> glyphFilter =
 80         vtkSmartPointer<vtkVertexGlyphFilter>::New();
 81     glyphFilter->SetInputData(polydata);
 82     glyphFilter->Update();
 83 
 84     vtkSmartPointer<vtkPolyDataMapper> pointsMapper =
 85         vtkSmartPointer<vtkPolyDataMapper>::New();
 86     pointsMapper->SetInputData(glyphFilter->GetOutput());
 87 
 88     vtkSmartPointer<vtkActor> pointsActor =
 89         vtkSmartPointer<vtkActor>::New();
 90     pointsActor->SetMapper(pointsMapper);
 91     pointsActor->GetProperty()->SetPointSize(3);
 92     pointsActor->GetProperty()->SetColor(1,0,0);
 93 
 94     vtkSmartPointer<vtkPolyDataMapper> triangulatedMapper =
 95         vtkSmartPointer<vtkPolyDataMapper>::New();
 96     triangulatedMapper->SetInputData(delaunay->GetOutput());
 97 
 98     vtkSmartPointer<vtkActor> triangulatedActor =
 99         vtkSmartPointer<vtkActor>::New();
100     triangulatedActor->SetMapper(triangulatedMapper);
101 
102     vtkSmartPointer<vtkRenderer> renderer =
103         vtkSmartPointer<vtkRenderer>::New();
104     renderer->AddActor(pointsActor);
105     renderer->AddActor(triangulatedActor);
106     renderer->SetBackground(1.0, 1.0, 1.0);
107 
108     vtkSmartPointer<vtkRenderWindow> renderWindow =
109         vtkSmartPointer<vtkRenderWindow>::New();
110     renderWindow->AddRenderer(renderer);
111 
112     vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
113         vtkSmartPointer<vtkRenderWindowInteractor>::New();
114     renderWindowInteractor->SetRenderWindow(renderWindow);
115 
116     renderWindow->SetSize(640, 480);
117     renderWindow->Render();
118     renderWindow->SetWindowName("PolyDataConstrainedDelaunay2D");
119     renderWindow->Render();
120     renderWindowInteractor->Start();
121 
122     return EXIT_SUCCESS;
123 }

标签:59,剖分,GetPointIds,VTK,InsertNextId,poly,vtkSmartPointer,New,include
From: https://www.cnblogs.com/ybqjymy/p/17632972.html

相关文章

  • VTK 实例60:等值面提取(表面重建)
    1#include<vtkAutoInit.h>2VTK_MODULE_INIT(vtkRenderingOpenGL2);3VTK_MODULE_INIT(vtkRenderingFreeType);4VTK_MODULE_INIT(vtkInteractionStyle);56#include<vtkSmartPointer.h>7#include<vtkMarchingCubes.h>8#include<......
  • VTK 实例61:点云重建(表面重建)
    1#include<vtkAutoInit.h>2VTK_MODULE_INIT(vtkRenderingOpenGL2);3VTK_MODULE_INIT(vtkRenderingFreeType);4VTK_MODULE_INIT(vtkInteractionStyle);56#include<vtkSmartPointer.h>7#include<vtkPolyDataReader.h>8#inc......
  • VTK 实例62:点云配准
    1#include<vtkAutoInit.h>2VTK_MODULE_INIT(vtkRenderingOpenGL2);3VTK_MODULE_INIT(vtkRenderingFreeType);4VTK_MODULE_INIT(vtkInteractionStyle);56#include<vtkPoints.h>7#include<vtkSmartPointer.h>8#include<......
  • VTK 实例63:纹理映射
    1#include<vtkAutoInit.h>2VTK_MODULE_INIT(vtkRenderingOpenGL2);3VTK_MODULE_INIT(vtkRenderingFreeType);4VTK_MODULE_INIT(vtkInteractionStyle);56#include<vtkSmartPointer.h>7#include<vtkRenderWindowInteractor.h>8#inc......
  • cf 598 A
    A.TrickySumtimelimitpertestmemorylimitpertestinputoutput1 to n,butyoushouldtakeallpowersoftwowithminusinthesum.n = 4 thesumisequ......
  • VTK 实例45:理想低通滤波器(频域处理)
    1#include"vtkAutoInit.h"2VTK_MODULE_INIT(vtkRenderingOpenGL2);3VTK_MODULE_INIT(vtkInteractionStyle);45#include<vtkSmartPointer.h>6#include<vtkImageData.h>7#include<vtkImageIdealLowPass.h>8#include&l......
  • VTK 实例46:巴特沃斯低通滤波器(频域处理)
    1#include"vtkAutoInit.h"2VTK_MODULE_INIT(vtkRenderingOpenGL2);3VTK_MODULE_INIT(vtkInteractionStyle);45#include<vtkSmartPointer.h>6#include<vtkImageData.h>7#include<vtkImageButterworthLowPass.h>8#incl......
  • VTK 实例47:理想高通滤波器(频域处理)
    1#include"vtkAutoInit.h"2VTK_MODULE_INIT(vtkRenderingOpenGL2);3VTK_MODULE_INIT(vtkInteractionStyle);45#include<vtkSmartPointer.h>6#include<vtkImageData.h>7#include<vtkImageIdealHighPass.h>8#include&......
  • VTK 实例48:巴沃斯特高通滤波器(频域处理)
    1#include"vtkAutoInit.h"2VTK_MODULE_INIT(vtkRenderingOpenGL2);3VTK_MODULE_INIT(vtkInteractionStyle);45#include<vtkSmartPointer.h>6#include<vtkImageData.h>7#include<vtkImageButterworthHighPass.h>8#inc......
  • VTK 实例43:各向异性滤波(图像光滑)
    1#include"vtkAutoInit.h"2VTK_MODULE_INIT(vtkRenderingOpenGL2);3VTK_MODULE_INIT(vtkInteractionStyle);45#include<vtkSmartPointer.h>6#include<vtkCamera.h>7#include<vtkImageActor.h>8#include<vtkImage......