/*========================================================================= Program: Visualization Toolkit Module: vtkPolygonBuilder.h Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ /** * @class vtkPolygonBuilder * * * The polygon output is the boundary of the union of the triangles. * It is assumed that the input triangles form a simple polygon. It is * currently used to compute polygons for slicing. * */ #ifndef vtkPolygonBuilder_h #define vtkPolygonBuilder_h #include "vtkCommonMiscModule.h" // For export macro #include "vtkIdList.h" #include "vtkObject.h" #include "vtkType.h" //for basic types #include //for size_t #include //for private data members #include //for private data members #include // for private data members class vtkIdListCollection; class VTKCOMMONMISC_EXPORT vtkPolygonBuilder { public: vtkPolygonBuilder(); /** * Insert a triangle as a triplet of point IDs. */ void InsertTriangle(const vtkIdType* abc); /** * Populate polys with lists of polygons, defined as sequential external * vertices. It is the responsibility of the user to delete these generated * lists in order to avoid memory leaks. */ void GetPolygons(vtkIdListCollection* polys); /** * Prepare the builder for a new set of inputs. */ void Reset(); private: typedef std::pair Edge; typedef std::map EdgeHistogram; typedef std::multimap EdgeMap; typedef std::vector Triangle; typedef std::vector Triangles; typedef std::map TriangleMap; TriangleMap Tris; EdgeHistogram EdgeCounter; EdgeMap Edges; }; #endif // VTK-HeaderTest-Exclude: vtkPolygonBuilder.h