27 #ifndef vtkPolyhedronContour_h
28 #define vtkPolyhedronContour_h
30 #include "vtkCommonDataModelModule.h"
38 #include <unordered_map>
39 #include <unordered_set>
42 VTK_ABI_NAMESPACE_BEGIN
93 return static_cast<int>(this->Result.IsoPolygons[polyIdx].size());
101 return this->Result.IsoVertices[this->Result.IsoPolygons[polyIdx][vertIdx]].OutputPointId;
152 bool generateTriangles, std::vector<vtkIdType>& polygonsSize,
226 std::vector<int> VertexTags;
229 std::vector<IsoVertex> IsoVertices;
232 std::vector<std::vector<int>> FaceIsoVertices;
236 std::vector<std::vector<int>> IsoVertexPositionInFace;
240 std::vector<std::vector<int>> IsoPolygons;
243 std::unordered_map<int64_t, int> EdgeToIsoVert;
246 std::vector<bool> Assigned;
250 this->VertexTags.clear();
251 this->IsoVertices.clear();
252 this->FaceIsoVertices.resize(nFaces);
255 this->FaceIsoVertices[i].clear();
257 this->IsoVertexPositionInFace.resize(nFaces);
260 this->IsoVertexPositionInFace[i].clear();
262 this->IsoPolygons.clear();
263 this->EdgeToIsoVert.clear();
264 this->Assigned.clear();
286 static void ClassifyVertices(TraceResult& result,
const std::vector<double>& localScalars,
287 double isoValue,
int& numInside,
int& numOutside);
296 static void FindIsoVertices(TraceResult& result,
vtkIdType nFaces,
297 const vtkIdType* localFaceStream,
const std::vector<double>& localScalars,
double isoValue);
304 static void TraceIsoPolygons(TraceResult& result);
323 static void RunLopezTraceInto(TraceResult& result,
vtkIdType nFaces,
324 const vtkIdType* localFaceStream,
const std::vector<double>& localScalars,
double isoValue);
346 struct PolyhedronWorkspace
348 std::vector<double> LocalScalars;
349 std::vector<vtkIdType> LocalFaceStream;
350 std::unordered_map<vtkIdType, int> GlobalToLocal;
352 std::unordered_set<int64_t> LiveIsoEdgeKeys;
353 std::vector<vtkIdType> PieceSizes;
354 std::vector<vtkIdType> LocalToOutputId;
355 std::vector<vtkIdType> IsoToOutputId;
356 std::unordered_map<int64_t, vtkIdType> EdgeToOutputId;
357 std::vector<vtkIdType> CellPts;
358 std::vector<std::vector<vtkIdType>> Pieces;
359 std::vector<vtkIdType> CurrentPiece;
360 std::vector<vtkIdType> CapFace;
362 std::vector<std::array<double, 3>> EarCoords;
363 std::vector<int> EarPrev;
364 std::vector<int> EarNext;
365 std::vector<int> EarRing;
366 std::vector<double> EarHeapMeasure;
367 std::vector<int> EarHeapVertex;
368 std::vector<int> EarHeapSlot;
372 VTK_ABI_NAMESPACE_END
373 #endif // vtkPolyhedronContour_h
Templated on types of ids defining an edge, and any data associated with the edge.
represent and manipulate point attribute data
Isosurface extraction using López polygon tracing algorithm.
struct Position_t Position
int GetNumberOfIsoPolygons() const
Get the number of resulting iso-polygons.
represent and manipulate cell attribute data
vtkIdType GetIsoPolygonVertex(int polyIdx, int vertIdx) const
Get iso-polygon vertex (output point ID)
Abstract class in support of both point location and point insertion.
int GetIsoPolygonSize(int polyIdx) const
Get iso-polygon vertex count.
list of point or cell ids
abstract superclass for arrays of numeric data
const std::string pointIds
a cell that represents an n-sided polygon
Definition of an edge tuple.
object to represent cell connectivity
A 3D cell defined by a set of polygonal faces.