Hello Andras,

Thank you for your answer.

Is it possible to use vtkPlaneSource to generate non-rectangular polygons or non-convex polygons ?

Actually i tried vtkAdaptiveSubdivisionFilter but it was not worked. i did not find an example to find out how use it properly so i did it as follow :

```
vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
// Create the polygon
auto boundaries = vtkSmartPointer<vtkPolygon>::New();
boundaries->GetPointIds()->SetNumberOfIds(4);
points->InsertNextPoint(5000.0, 1500.0, 0.0);
elevationArray->InsertNextValue(0.0);
boundaries->GetPointIds()->SetId(0, 0);
points->InsertNextPoint(-5000.0, 1500.0, 0.0);
elevationArray->InsertNextValue(0.0);
boundaries->GetPointIds()->SetId(1, 1);
points->InsertNextPoint(-5000.0, -1500.0, 0.0);
elevationArray->InsertNextValue(0.0);
boundaries->GetPointIds()->SetId(2, 2);
points->InsertNextPoint(5000.0, -1500.0, 0.0);
elevationArray->InsertNextValue(0.0);
boundaries->GetPointIds()->SetId(3, 3);
// Add the polygon to a list of polygons
vtkSmartPointer<vtkCellArray> polygons = vtkSmartPointer<vtkCellArray>::New();
polygons->InsertNextCell(boundaries);
// Field exterior boundary
auto boundary = vtkSmartPointer<vtkPolyData>::New();
boundary->SetPoints(points);
boundary->SetPolys(polygons);
auto aPolygon = vtkSmartPointer<vtkPolyData>::New();
aPolygon->SetPoints(points);
auto triangles = vtkSmartPointer<vtkDelaunay2D>::New();
triangles->SetInputData(aPolygon);
triangles->SetSourceData(boundary);
triangles->Update();
polyData2D = vtkSmartPointer<vtkPolyData>::New();
polyData2D->DeepCopy(triangles->GetOutput());
auto subdivision = vtkSmartPointer<vtkAdaptiveSubdivisionFilter>::New();
subdivision->SetInputData(polyData2D);
subdivision->SetMaximumEdgeLength(300.0);
subdivision->Update();
```

It took so long with no return and no error. Is this code correct ?

Best regards,

Danial