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 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
2022-08-16 Qt 无法解析的外部符号“public: virtual struct QMetaObject const ...“
2022-08-16 Qt char*,wchar_t*与QString之间的转换(利用reinterpret_cast和_stprintf函数,fromWCharArray从字符数组里读取数据)
2021-08-16 C++ 实现 COM → IUnknown → 接口
2021-08-16 C++ COM编程之IUnknown接口
2021-08-16 C++ COM三大接口:IUnknown、IClassFactory、IDispatch。
2021-08-16 C++ COM组件QueryInterface函数
2021-08-16 C++ COM组件的AddRef和Release()方法使用