三角剖分是一種應用廣泛的面重建技術。將散亂的點雲數據剖分爲一系列的三角網格。最常用的三角剖分技術具有許多優良的性質,Delaunay三角剖分無論從哪個區域開始構建,最終生成的三角網格是唯一的。
VTK的vtkDelaunay2D類實現了二維的三角剖分。該類的輸入數據爲一個vtkPointSet或其子類表示的三維空間點集,輸入爲vtkPolyData數據。
unsigned int gridSize = 10;
vtkSmartPointer<vtkPoints> points =
vtkSmartPointer<vtkPoints>::New();
for (unsigned int x = 0; x < gridSize; x++)
{
for (unsigned int y = 0; y < gridSize; y++)
{
points->InsertNextPoint(x, y, vtkMath::Random(0.0, 3.0));
}
}
vtkSmartPointer<vtkPolyData> polydata =
vtkSmartPointer<vtkPolyData>::New();
polydata->SetPoints(points);
vtkSmartPointer<vtkDelaunay2D> delaunay =
vtkSmartPointer<vtkDelaunay2D>::New();
delaunay->SetInputData(polydata);
delaunay->Update();
VTK的vtkDelaunay3D類可實現三維剖分。該類使用方法與vtkDelaunay2D基本一致但是,三角剖分得到並非三角網格,而是四面體網格。輸出數據類型vtkUnstructedGrid。未加邊界的三角剖分通常也爲一個凸包。