[vtkusers] How to construct polygon?

kenichiro yoshimi rccm.kyoshimi at gmail.com
Sat Apr 15 01:26:15 EDT 2017


Hi,

Your polygon loop is non-planar.

​
Howerver, the triangulate method used by vtkPolygon assumes that polygon
points lie in a plane. I recommend to use vtkCylinderSource or
vtkStructuredGrid to represent the side of surface of a cylinder.

Thanks,
yoshimi

2017-04-14 0:38 GMT+09:00 Rakesh Patil <rakesh.p at tataelxsi.co.in>:

> Hi,
>
>
> This question seems to be simple, but I am not able to get any output for
> this. I am not able to understand what is happening in this case:
>
>
> vtkSmartPointer<vtkPoints> tpoints = vtkSmartPointer<vtkPoints>::New();
>
> vtkSmartPointer<vtkPolygon> poly = vtkSmartPointer<vtkPolygon>::New();
>
> vtkSmartPointer<vtkCellArray> carr = vtkSmartPointer<vtkCellArray>::New();
>
> vtkSmartPointer<vtkPolyData> polyData = vtkSmartPointer<vtkPolyData>::New();
>
>
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( 4.39116, -2.39117, 4.5));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( 4.39116, -2.39117, 3));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( 4.39116, -2.39117, 1.5));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( 4.39116, -2.39117, 0));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( 4.08748, -2.87967, 0));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( 3.05391, -3.95899, 0));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( 1.74755, -4.68466, 0));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( 0.28509, -4.99187, 0));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -1.20284, -4.85316, 0));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -2.58332, -4.28094, 0));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -3.73305, -3.32631, 0));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -4.54931, -2.07456, 0));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -4.95919, -0.637487, 0));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -4.92609, 0.856528, 0));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -4.45295, 2.27403, 0));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -3.58205, 3.4884, 0));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -2.39117, 4.39116, 0));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -2.39117, 4.39116, 1.5));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -2.39117, 4.39116, 3));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -2.39117, 4.39116, 4.5));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -2.39117, 4.39116, 6));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -3.58205, 3.4884, 6));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -4.45295, 2.27403, 6));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -4.92609, 0.856528, 6));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint(-4.95919, -0.637487, 6));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint(-4.54931, -2.07456, 6));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint(-3.73305, -3.32631, 6));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint(-2.58332, -4.28094, 6));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint(-1.20284, -4.85316, 6));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint(0.28509, -4.99187, 6));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint(1.74755, -4.68466, 6));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint(3.05391, -3.95899, 6));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint(4.08748, -2.87967, 6));
>
> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint(4.39116, -2.39117, 6));
>
> carr->InsertNextCell(poly);
>
>
>     polyData->SetPoints(tpoints);
>
>     polyData->SetPolys(carr);
>
>
>     vtkSmartPointer<vtkTriangleFilter> tfilter = vtkSmartPointer<vtkTriangleFilter>::New();
>
>     tfilter->SetInputData(polyData);
>
>     tfilter->Update();
>
>
>
>     vtkSmartPointer<vtkPolyDataMapper> pmapper = vtkSmartPointer<vtkPolyDataMapper>::New();
>
>     pmapper->SetInputConnection(tfilter->GetOutputPort());
>
>
>     vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
>
>     actor->SetMapper(pmapper);
>
>     actor->GetProperty()->SetRepresentationToSurface();
>
>     actor->GetProperty()->EdgeVisibilityOn();
>
>     actor->GetProperty()->SetEdgeColor(1.0, 0.0, 0.0);
>
>
>     renderer->AddActor(actor);
>
>     renderer->ResetCamera();
>
>
>
> I am not able to view the output if I use vtkTriangleFilter. I have
> attached two screenshots. One is to show how the expected output should
> come. Another is the vtk's output without applying vtkTriangleFilter. How
> do I get the curved surfaces based on the above geometry (points)?
>
>
> Am I missing anything there?
>
>
>
> Thanks & Regards
>
> Rakesh Patil
>
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/
> opensource/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
>
> Search the list archives at: http://markmail.org/search/?q=vtkusers
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/vtkusers
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20170415/2aef4880/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: non_planar_polygon.png
Type: image/png
Size: 92659 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20170415/2aef4880/attachment.png>


More information about the vtkusers mailing list