[vtkusers] Triangulating 'vertical' polygon with Delaunay2D?

David Gobbi david.gobbi at gmail.com
Wed May 13 08:45:11 EDT 2015


Hi Artem,

The vtkContourTriangulator requires a vtkPolyLine as input, rather than a
polygon.

 - David

On Wed, May 13, 2015 at 6:41 AM, Artem Babayan <
artem.paraview at googlemail.com> wrote:

> Dear David,
>
> Thank you for your reply. Unfortunately I am apparently doing something
> wrong setting up the contour triangulation.
>
> For very simple 1-polygon example I have 1 polygon p_1 defined over subset
> of points vtk_points. I first create vtkPolygon, then vtkCellArray, then
> vtkPolyData, feed it to vtkContourTriangulator and call Update. The result
> is apparently empty vtkCellArray?
>
>       vtkSmartPointer<vtkPolygon> poly =
> vtkSmartPointer<vtkPolygon>::New();
>       for(size_t v = 0; v < p_1.size(); ++v)
>       {
>         poly->GetPointIds()->InsertNextId(p_1[v]);
>       }
>
>       vtkSmartPointer<vtkCellArray> cell_array =
> vtkSmartPointer<vtkCellArray>::New();
>       cell_array->InsertNextCell(poly);
>
>       vtkSmartPointer<vtkPolyData> boundary =
> vtkSmartPointer<vtkPolyData>::New();
>       boundary->SetPoints(vtk_points);
>       boundary->SetPolys(cell_array);
>
>       vtkSmartPointer<vtkContourTriangulator> tri_filter =
>                      vtkSmartPointer<vtkContourTriangulator>::New();
>       tri_filter->SetInputData(boundary);
>       tri_filter->Update();
>       cout << "After triangulation I got "  <<
> tri_filter->GetOutput()->GetNumberOfCells()  << " cells\n";
>
> Could you tell me what can be possibly wrong here?
>
>
> On 11 May 2015 at 13:36, David Gobbi <david.gobbi at gmail.com> wrote:
>
>> Hi Artem,
>>
>> You can try using vtkContourTriangulator, it only uses the connected
>> points for the triangulation and it works in any orientation:
>>
>> http://www.vtk.org/doc/nightly/html/classvtkContourTriangulator.html#details
>>
>> Delaunay2D also has a method for working in planes other than the XY
>> plane: calling the method SetProjectionPlaneMode(VTK_BEST_FITTING_PLANE)
>> should work, if all of your input points are in the same plane.
>>
>>  - David
>>
>>
>> On Mon, May 11, 2015 at 4:47 AM, Artem Babayan <
>> artem.paraview at googlemail.com> wrote:
>>
>>> Hello,
>>>
>>> I have
>>>
>>> 1) vtk_poijnts -- set of 3D points (vtkPoints object) located within the
>>> computational 3D box.
>>> 2) poly_1 -- std::vector<int> -- connected subset of points from 1)
>>> representing non-convex polygon on the side of computational box. E.g. in
>>> XZ plane.
>>> 3) poly_hole_1, poly_hole_2 -- 2 subsets of points from 1) each
>>> representing possibly non-convex hole in poly_1 from 2).
>>>
>>> How am I visualise it with VTK?
>>>
>>> I assume that as I have holes in polygon the only choice of I have is to
>>> use vtkDelaunay2D?
>>>
>>> vtkDelaunay2D apparently uses all points from vtk_points for
>>> triangulization, while I need only points from poly_1, poly_hole_1 and
>>> poly_hole_2 ?
>>>
>>> I need to tell somehow vtkDelaunay2D than I want to tesselate in XZ
>>> plane rather than in XY plane?
>>>
>>> Thank you
>>> Artem
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20150513/d8e8abe0/attachment.html>


More information about the vtkusers mailing list