/********************************************************************** 文件名: 6.7_PolyDataConstrainedDelaunay2D.cpp Copyright (c) 张晓东, 罗火灵. All rights reserved. 更多信息请访问: http://www.vtkchina.org (VTK中国) http://blog.csdn.net/www_doling_net (东灵工作室) **********************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include int main(int, char *[]) { vtkSmartPointer points = vtkSmartPointer::New(); unsigned int gridSize = 10; 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 polydata = vtkSmartPointer::New(); polydata->SetPoints(points); vtkSmartPointer poly = vtkSmartPointer::New(); /*poly->GetPointIds()->InsertNextId(22); poly->GetPointIds()->InsertNextId(23); poly->GetPointIds()->InsertNextId(24); poly->GetPointIds()->InsertNextId(25); poly->GetPointIds()->InsertNextId(35); poly->GetPointIds()->InsertNextId(45); poly->GetPointIds()->InsertNextId(44); poly->GetPointIds()->InsertNextId(43); poly->GetPointIds()->InsertNextId(42); poly->GetPointIds()->InsertNextId(32);*/ poly->GetPointIds()->InsertNextId(32); poly->GetPointIds()->InsertNextId(42); poly->GetPointIds()->InsertNextId(43); poly->GetPointIds()->InsertNextId(44); poly->GetPointIds()->InsertNextId(45); poly->GetPointIds()->InsertNextId(35); poly->GetPointIds()->InsertNextId(25); poly->GetPointIds()->InsertNextId(24); poly->GetPointIds()->InsertNextId(23); poly->GetPointIds()->InsertNextId(22); vtkSmartPointer cell = vtkSmartPointer::New(); cell->InsertNextCell(poly); vtkSmartPointer boundary = vtkSmartPointer::New(); boundary->SetPoints(points); boundary->SetPolys(cell); vtkSmartPointer delaunay = vtkSmartPointer::New(); delaunay->SetInput(polydata); delaunay->SetSource(boundary); delaunay->Update(); vtkSmartPointer glyphFilter = vtkSmartPointer::New(); glyphFilter->SetInput(polydata); glyphFilter->Update(); vtkSmartPointer pointsMapper = vtkSmartPointer::New(); pointsMapper->SetInput(glyphFilter->GetOutput()); vtkSmartPointer pointsActor = vtkSmartPointer::New(); pointsActor->SetMapper(pointsMapper); pointsActor->GetProperty()->SetPointSize(3); pointsActor->GetProperty()->SetColor(1,0,0); vtkSmartPointer triangulatedMapper = vtkSmartPointer::New(); triangulatedMapper->SetInput(delaunay->GetOutput()); vtkSmartPointer triangulatedActor = vtkSmartPointer::New(); triangulatedActor->SetMapper(triangulatedMapper); vtkSmartPointer renderer = vtkSmartPointer::New(); renderer->AddActor(pointsActor); renderer->AddActor(triangulatedActor); renderer->SetBackground(1.0, 1.0, 1.0); vtkSmartPointer renderWindow = vtkSmartPointer::New(); renderWindow->AddRenderer(renderer); vtkSmartPointer renderWindowInteractor = vtkSmartPointer::New(); renderWindowInteractor->SetRenderWindow(renderWindow); renderWindow->SetSize(640, 480); renderWindow->Render(); renderWindow->SetWindowName("PolyDataConstrainedDelaunay2D"); renderWindow->Render(); renderWindowInteractor->Start(); return EXIT_SUCCESS; }