VTK學習(十六)三角剖分

    三角剖分是一種應用廣泛的面重建技術。將散亂的點雲數據剖分爲一系列的三角網格。最常用的三角剖分技術具有許多優良的性質,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。未加邊界的三角剖分通常也爲一個凸包。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章