|
virtual const char * | GetClassName () |
|
virtual int | IsA (const char *type) |
|
void | PrintSelf (ostream &os, vtkIndent indent) |
|
void | PrintNodeData (ostream &os, vtkIndent indent) |
|
int | Build (vtkPolyData *mesh, vtkDataArray *scalarField) |
|
int | Build (vtkUnstructuredGrid *mesh, vtkDataArray *scalarField) |
|
int | Build (vtkPolyData *mesh, vtkIdType scalarFieldId) |
|
int | Build (vtkUnstructuredGrid *mesh, vtkIdType scalarFieldId) |
|
int | Build (vtkPolyData *mesh, const char *scalarFieldName) |
|
int | Build (vtkUnstructuredGrid *mesh, const char *scalarFieldName) |
|
void | CloseStream () |
|
void | DeepCopy (vtkDataObject *src) |
|
void | Set (vtkMutableDirectedGraph *g) |
|
|
int | StreamTriangle (vtkIdType vertex0Id, double scalar0, vtkIdType vertex1Id, double scalar1, vtkIdType vertex2Id, double scalar2) |
|
|
int | StreamTetrahedron (vtkIdType vertex0Id, double scalar0, vtkIdType vertex1Id, double scalar1, vtkIdType vertex2Id, double scalar2, vtkIdType vertex3Id, double scalar3) |
|
|
int | Simplify (double simplificationThreshold, vtkReebGraphSimplificationMetric *simplificationMetric) |
|
void | PrintSelf (ostream &os, vtkIndent indent) |
|
virtual vtkIdType | SetNumberOfVertices (vtkIdType numVerts) |
|
vtkIdType | AddVertex () |
|
vtkIdType | AddVertex (vtkVariantArray *propertyArr) |
|
vtkIdType | AddVertex (const vtkVariant &pedigreeId) |
|
void | LazyAddVertex () |
|
void | LazyAddVertex (vtkVariantArray *propertyArr) |
|
void | LazyAddVertex (const vtkVariant &pedigreeId) |
|
void | LazyAddEdge (vtkIdType u, vtkIdType v, vtkVariantArray *propertyArr=0) |
|
vtkGraphEdge * | AddGraphEdge (vtkIdType u, vtkIdType v) |
|
void | RemoveVertex (vtkIdType v) |
|
void | RemoveEdge (vtkIdType e) |
|
void | RemoveVertices (vtkIdTypeArray *arr) |
|
void | RemoveEdges (vtkIdTypeArray *arr) |
|
vtkEdgeType | AddEdge (vtkIdType u, vtkIdType v) |
|
vtkEdgeType | AddEdge (vtkIdType u, vtkIdType v, vtkVariantArray *propertyArr) |
|
vtkEdgeType | AddEdge (const vtkVariant &u, vtkIdType v, vtkVariantArray *propertyArr=0) |
|
vtkEdgeType | AddEdge (vtkIdType u, const vtkVariant &v, vtkVariantArray *propertyArr=0) |
|
vtkEdgeType | AddEdge (const vtkVariant &u, const vtkVariant &v, vtkVariantArray *propertyArr=0) |
|
void | LazyAddEdge (const vtkVariant &u, vtkIdType v, vtkVariantArray *propertyArr=0) |
|
void | LazyAddEdge (vtkIdType u, const vtkVariant &v, vtkVariantArray *propertyArr=0) |
|
void | LazyAddEdge (const vtkVariant &u, const vtkVariant &v, vtkVariantArray *propertyArr=0) |
|
vtkIdType | AddChild (vtkIdType parent, vtkVariantArray *propertyArr) |
|
vtkIdType | AddChild (vtkIdType parent) |
|
void | PrintSelf (ostream &os, vtkIndent indent) |
|
virtual int | GetDataObjectType () |
|
virtual bool | IsStructureValid (vtkGraph *g) |
|
void | PrintSelf (ostream &os, vtkIndent indent) |
|
virtual void | Initialize () |
|
void | ComputeBounds () |
|
unsigned long int | GetMTime () |
|
virtual void | GetOutEdges (vtkIdType v, vtkOutEdgeIterator *it) |
|
virtual vtkIdType | GetDegree (vtkIdType v) |
|
virtual vtkIdType | GetOutDegree (vtkIdType v) |
|
virtual void | GetOutEdge (vtkIdType v, vtkIdType index, vtkGraphEdge *e) |
|
virtual void | GetInEdges (vtkIdType v, vtkInEdgeIterator *it) |
|
virtual vtkIdType | GetInDegree (vtkIdType v) |
|
virtual void | GetInEdge (vtkIdType v, vtkIdType index, vtkGraphEdge *e) |
|
virtual void | GetAdjacentVertices (vtkIdType v, vtkAdjacentVertexIterator *it) |
|
virtual void | GetEdges (vtkEdgeListIterator *it) |
|
virtual vtkIdType | GetNumberOfEdges () |
|
virtual void | GetVertices (vtkVertexListIterator *it) |
|
virtual vtkIdType | GetNumberOfVertices () |
|
void | SetDistributedGraphHelper (vtkDistributedGraphHelper *helper) |
|
vtkIdType | FindVertex (const vtkVariant &pedigreeID) |
|
virtual void | ShallowCopy (vtkDataObject *obj) |
|
virtual void | CopyStructure (vtkGraph *g) |
|
virtual bool | CheckedShallowCopy (vtkGraph *g) |
|
virtual bool | CheckedDeepCopy (vtkGraph *g) |
|
virtual void | Squeeze () |
|
void | ReorderOutVertices (vtkIdType v, vtkIdTypeArray *vertices) |
|
bool | IsSameStructure (vtkGraph *other) |
|
vtkIdType | GetNumberOfEdgePoints (vtkIdType e) |
|
double * | GetEdgePoint (vtkIdType e, vtkIdType i) |
|
void | ClearEdgePoints (vtkIdType e) |
|
vtkGraphInternals * | GetGraphInternals (bool modifying) |
|
void | GetInducedEdges (vtkIdTypeArray *verts, vtkIdTypeArray *edges) |
|
virtual vtkFieldData * | GetAttributesAsFieldData (int type) |
|
virtual vtkIdType | GetNumberOfElements (int type) |
|
void | Dump () |
|
vtkIdType | GetEdgeId (vtkIdType a, vtkIdType b) |
|
bool | ToDirectedGraph (vtkDirectedGraph *g) |
|
bool | ToUndirectedGraph (vtkUndirectedGraph *g) |
|
virtual vtkDataSetAttributes * | GetVertexData () |
|
virtual vtkDataSetAttributes * | GetEdgeData () |
|
double * | GetPoint (vtkIdType ptId) |
|
void | GetPoint (vtkIdType ptId, double x[3]) |
|
vtkPoints * | GetPoints () |
|
virtual void | SetPoints (vtkPoints *points) |
|
double * | GetBounds () |
|
void | GetBounds (double bounds[6]) |
|
virtual vtkOutEdgeType | GetOutEdge (vtkIdType v, vtkIdType index) |
|
virtual vtkInEdgeType | GetInEdge (vtkIdType v, vtkIdType index) |
|
vtkDistributedGraphHelper * | GetDistributedGraphHelper () |
|
vtkIdType | GetSourceVertex (vtkIdType e) |
|
vtkIdType | GetTargetVertex (vtkIdType e) |
|
void | SetEdgePoints (vtkIdType e, vtkIdType npts, double *pts) |
|
void | GetEdgePoints (vtkIdType e, vtkIdType &npts, double *&pts) |
|
void | SetEdgePoint (vtkIdType e, vtkIdType i, double x[3]) |
|
void | SetEdgePoint (vtkIdType e, vtkIdType i, double x, double y, double z) |
|
void | AddEdgePoint (vtkIdType e, double x[3]) |
|
void | AddEdgePoint (vtkIdType e, double x, double y, double z) |
|
void | ShallowCopyEdgePoints (vtkGraph *g) |
|
void | DeepCopyEdgePoints (vtkGraph *g) |
|
Reeb graph computation for PL scalar fields.
vtkReebGraph is a class that computes a Reeb graph given a PL scalar field (vtkDataArray) defined on a simplicial mesh. A Reeb graph is a concise representation of the connectivity evolution of the level sets of a scalar function.
It is particularly useful in visualization (optimal seed set computation, fast flexible isosurface extraction, automated transfer function design, feature-driven visualization, etc.) and computer graphics (shape deformation, shape matching, shape compression, etc.).
Reference: "Sur les points singuliers d'une forme de Pfaff completement integrable ou
d'une fonction numerique", G. Reeb, Comptes-rendus de l'Academie des Sciences, 222:847-849, 1946.
vtkReebGraph implements one of the latest and most robust Reeb graph computation algorithms.
Reference: "Robust on-line computation of Reeb graphs: simplicity and speed", V. Pascucci, G. Scorzelli, P.-T. Bremer, and A. Mascarenhas, ACM Transactions on Graphics, Proc. of SIGGRAPH 2007.
vtkReebGraph provides methods for computing multi-resolution topological hierarchies through topological simplification. Topoligical simplification can be either driven by persistence homology concepts (default behavior) or by application specific metrics (see vtkReebGraphSimplificationMetric). In the latter case, designing customized simplification metric evaluation algorithms enables the user to control the definition of what should be considered as noise or signal in the topological filtering process.
References: "Topological persistence and simplification", H. Edelsbrunner, D. Letscher, and A. Zomorodian, Discrete Computational Geometry, 28:511-533, 2002.
"Extreme elevation on a 2-manifold", P.K. Agarwal, H. Edelsbrunner, J. Harer, and Y. Wang, ACM Symposium on Computational Geometry, pp. 357-365, 2004.
"Simplifying flexible isosurfaces using local geometric measures", H. Carr, J. Snoeyink, M van de Panne, IEEE Visualization, 497-504, 2004
"Loop surgery for volumetric meshes: Reeb graphs reduced to contour trees", J. Tierny, A. Gyulassy, E. Simon, V. Pascucci, IEEE Trans. on Vis. and Comp. Graph. (Proc of IEEE VIS), 15:1177-1184, 2009.
Reeb graphs can be computed from 2D data (vtkPolyData, with triangles only) or 3D data (vtkUnstructuredGrid, with tetrahedra only), sequentially (see the "Build" calls) or in streaming (see the "StreamTriangle" and "StreamTetrahedron" calls).
vtkReebGraph inherits from vtkMutableDirectedGraph.
Each vertex of a vtkReebGraph object represents a critical point of the scalar field where the connectivity of the related level set changes (creation, deletion, split or merge of connected components). A vtkIdTypeArray (called "Vertex Ids") is associated with the VertexData of a vtkReebGraph object, in order to retrieve if necessary the exact Ids of the corresponding vertices in the input mesh.
The edges of a vtkReebGraph object represent the regions of the input mesh separated by the critical contours of the field, and where the connectivity of the input field does not change. A vtkVariantArray is associated with the EdgeDta of a vtkReebGraph object and each entry of this array is a vtkAbstractArray containing the Ids of the vertices of those regions, sorted by function value (useful for flexible isosurface extraction or level set signature computation, for instance).
See Graphics/Testing/Cxx/TestReebGraph.cxx for examples of traversals and typical usages (customized simplification, skeletonization, contour spectra, etc.) of a vtkReebGraph object.
- See also
- vtkReebGraphSimplificationMetric vtkPolyDataToReebGraphFilter vtkUnstructuredGridToReebGraphFilter vtkReebGraphSimplificationFilter vtkReebGraphSurfaceSkeletonFilter vtkReebGraphVolumeSkeletonFilter vtkAreaContourSpectrumFilter vtkVolumeContourSpectrumFilter
- Tests:
- Graphics/Testing/Cxx/TestReebGraph.cxx
Definition at line 129 of file vtkReebGraph.h.