VTK
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
vtkReebGraph Class Reference

Reeb graph computation for PL scalar fields. More...

#include <vtkReebGraph.h>

Inheritance diagram for vtkReebGraph:
[legend]
Collaboration diagram for vtkReebGraph:
[legend]

Public Types

enum  { ERR_INCORRECT_FIELD = -1, ERR_NO_SUCH_FIELD = -2, ERR_NOT_A_SIMPLICIAL_MESH = -3 }
 
typedef vtkMutableDirectedGraph Superclass
 
- Public Types inherited from vtkMutableDirectedGraph
typedef vtkDirectedGraph Superclass
 
- Public Types inherited from vtkDirectedGraph
typedef vtkGraph Superclass
 
- Public Types inherited from vtkGraph
typedef vtkDataObject Superclass
 
- Public Types inherited from vtkDataObject
enum  FieldAssociations {
  FIELD_ASSOCIATION_POINTS, FIELD_ASSOCIATION_CELLS, FIELD_ASSOCIATION_NONE, FIELD_ASSOCIATION_POINTS_THEN_CELLS,
  FIELD_ASSOCIATION_VERTICES, FIELD_ASSOCIATION_EDGES, FIELD_ASSOCIATION_ROWS, NUMBER_OF_ASSOCIATIONS
}
 Possible values for the FIELD_ASSOCIATION information entry. More...
 
enum  AttributeTypes {
  POINT, CELL, FIELD, POINT_THEN_CELL,
  VERTEX, EDGE, ROW, NUMBER_OF_ATTRIBUTE_TYPES
}
 Possible attribute types. More...
 
enum  FieldOperations { FIELD_OPERATION_PRESERVED, FIELD_OPERATION_REINTERPOLATED, FIELD_OPERATION_MODIFIED, FIELD_OPERATION_REMOVED }
 Possible values for the FIELD_OPERATION information entry. More...
 
typedef vtkObject Superclass
 

Public Member Functions

virtual vtkTypeBool IsA (const char *type)
 Return 1 if this class is the same type of (or a subclass of) the named class. More...
 
vtkReebGraphNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent) override
 Methods invoked by print to print information about the object including superclasses. More...
 
void PrintNodeData (ostream &os, vtkIndent indent)
 
int GetDataObjectType () override
 Return class name of data type. More...
 
int Build (vtkPolyData *mesh, vtkDataArray *scalarField)
 Build the Reeb graph of the field 'scalarField' defined on the surface mesh 'mesh'. More...
 
int Build (vtkUnstructuredGrid *mesh, vtkDataArray *scalarField)
 Build the Reeb graph of the field 'scalarField' defined on the volume mesh 'mesh'. More...
 
int Build (vtkPolyData *mesh, vtkIdType scalarFieldId)
 Build the Reeb graph of the field given by the Id 'scalarFieldId', defined on the surface mesh 'mesh'. More...
 
int Build (vtkUnstructuredGrid *mesh, vtkIdType scalarFieldId)
 Build the Reeb graph of the field given by the Id 'scalarFieldId', defined on the volume mesh 'mesh'. More...
 
int Build (vtkPolyData *mesh, const char *scalarFieldName)
 Build the Reeb graph of the field given by the name 'scalarFieldName', defined on the surface mesh 'mesh'. More...
 
int Build (vtkUnstructuredGrid *mesh, const char *scalarFieldName)
 Build the Reeb graph of the field given by the name 'scalarFieldName', defined on the volume mesh 'mesh'. More...
 
int StreamTriangle (vtkIdType vertex0Id, double scalar0, vtkIdType vertex1Id, double scalar1, vtkIdType vertex2Id, double scalar2)
 Streaming Reeb graph computation. More...
 
int StreamTetrahedron (vtkIdType vertex0Id, double scalar0, vtkIdType vertex1Id, double scalar1, vtkIdType vertex2Id, double scalar2, vtkIdType vertex3Id, double scalar3)
 Streaming Reeb graph computation. More...
 
void CloseStream ()
 Finalize internal data structures, in the case of streaming computations (with StreamTriangle or StreamTetrahedron). More...
 
void DeepCopy (vtkDataObject *src) override
 Deep copies the data object into this graph. More...
 
int Simplify (double simplificationThreshold, vtkReebGraphSimplificationMetric *simplificationMetric)
 Simplify the Reeb graph given a threshold 'simplificationThreshold' (between 0 and 1). More...
 
void Set (vtkMutableDirectedGraph *g)
 Use a pre-defined Reeb graph (post-processing). More...
 
- Public Member Functions inherited from vtkMutableDirectedGraph
vtkMutableDirectedGraphNewInstance () const
 
virtual vtkIdType SetNumberOfVertices (vtkIdType numVerts)
 Allocates space for the specified number of vertices in the graph's internal data structures. More...
 
vtkIdType AddVertex ()
 Adds a vertex to the graph and returns the index of the new vertex. More...
 
vtkIdType AddVertex (vtkVariantArray *propertyArr)
 Adds a vertex to the graph with associated properties defined in propertyArr and returns the index of the new vertex. More...
 
vtkIdType AddVertex (const vtkVariant &pedigreeId)
 Adds a vertex with the given pedigreeID to the graph and returns the index of the new vertex. More...
 
vtkEdgeType AddEdge (vtkIdType u, vtkIdType v)
 Adds a directed edge from u to v, where u and v are vertex indices, and returns a vtkEdgeType structure describing that edge. More...
 
vtkEdgeType AddEdge (vtkIdType u, vtkIdType v, vtkVariantArray *propertyArr)
 Adds a directed edge from u to v, where u and v are vertex indices, with associated properties defined in propertyArr and returns a vtkEdgeType structure describing that edge. More...
 
vtkEdgeType AddEdge (const vtkVariant &u, vtkIdType v, vtkVariantArray *propertyArr=nullptr)
 Adds a directed edge from u to v, where u is a vertex pedigree ID and v is a vertex index, and returns a vtkEdgeType structure describing that edge. More...
 
vtkEdgeType AddEdge (vtkIdType u, const vtkVariant &v, vtkVariantArray *propertyArr=nullptr)
 Adds a directed edge from u to v, where u is a vertex index and v is a vertex pedigree ID, and returns a vtkEdgeType structure describing that edge. More...
 
vtkEdgeType AddEdge (const vtkVariant &u, const vtkVariant &v, vtkVariantArray *propertyArr=nullptr)
 Adds a directed edge from u to v, where u and v are vertex pedigree IDs, and returns a vtkEdgeType structure describing that edge. More...
 
void LazyAddVertex ()
 Adds a vertex to the graph. More...
 
void LazyAddVertex (vtkVariantArray *propertyArr)
 Adds a vertex to the graph with associated properties defined in propertyArr. More...
 
void LazyAddVertex (const vtkVariant &pedigreeId)
 Adds a vertex with the given pedigreeID to the graph. More...
 
void LazyAddEdge (vtkIdType u, vtkIdType v, vtkVariantArray *propertyArr=nullptr)
 Adds a directed edge from u to v, where u and v are vertex indices. More...
 
void LazyAddEdge (const vtkVariant &u, vtkIdType v, vtkVariantArray *propertyArr=nullptr)
 Adds a directed edge from u to v, where u is a vertex pedigree ID and v is a vertex index. More...
 
void LazyAddEdge (vtkIdType u, const vtkVariant &v, vtkVariantArray *propertyArr=nullptr)
 Adds a directed edge from u to v, where u is a vertex index and v is a vertex pedigree ID. More...
 
void LazyAddEdge (const vtkVariant &u, const vtkVariant &v, vtkVariantArray *propertyArr=nullptr)
 Adds a directed edge from u to v, where u and v are vertex pedigree IDs. More...
 
vtkGraphEdgeAddGraphEdge (vtkIdType u, vtkIdType v)
 Variant of AddEdge() that returns a heavyweight vtkGraphEdge object. More...
 
vtkIdType AddChild (vtkIdType parent, vtkVariantArray *propertyArr)
 Convenience method for creating trees. More...
 
vtkIdType AddChild (vtkIdType parent)
 
void RemoveVertex (vtkIdType v)
 Removes the vertex from the graph along with any connected edges. More...
 
void RemoveEdge (vtkIdType e)
 Removes the edge from the graph. More...
 
void RemoveVertices (vtkIdTypeArray *arr)
 Removes a collection of vertices from the graph along with any connected edges. More...
 
void RemoveEdges (vtkIdTypeArray *arr)
 Removes a collection of edges from the graph. More...
 
- Public Member Functions inherited from vtkDirectedGraph
vtkDirectedGraphNewInstance () const
 
bool IsStructureValid (vtkGraph *g) override
 Check the storage, and accept it if it is a valid undirected graph. More...
 
- Public Member Functions inherited from vtkGraph
vtkGraphNewInstance () const
 
virtual vtkDataSetAttributesGetVertexData ()
 Get the vertex or edge data. More...
 
virtual vtkDataSetAttributesGetEdgeData ()
 
void Initialize () override
 Initialize to an empty graph. More...
 
double * GetPoint (vtkIdType ptId)
 These methods return the point (0,0,0) until the points structure is created, when it returns the actual point position. More...
 
void GetPoint (vtkIdType ptId, double x[3])
 
vtkPointsGetPoints ()
 Returns the points array for this graph. More...
 
virtual void SetPoints (vtkPoints *points)
 
void ComputeBounds ()
 Compute the bounds of the graph. More...
 
double * GetBounds ()
 Return a pointer to the geometry bounding box in the form (xmin,xmax, ymin,ymax, zmin,zmax). More...
 
void GetBounds (double bounds[6])
 
vtkMTimeType GetMTime () override
 The modified time of the graph. More...
 
virtual void GetOutEdges (vtkIdType v, vtkOutEdgeIterator *it)
 Initializes the out edge iterator to iterate over all outgoing edges of vertex v. More...
 
virtual vtkIdType GetDegree (vtkIdType v)
 The total of all incoming and outgoing vertices for vertex v. More...
 
virtual vtkIdType GetOutDegree (vtkIdType v)
 The number of outgoing edges from vertex v. More...
 
virtual vtkOutEdgeType GetOutEdge (vtkIdType v, vtkIdType index)
 Random-access method for retrieving outgoing edges from vertex v. More...
 
virtual void GetOutEdge (vtkIdType v, vtkIdType index, vtkGraphEdge *e)
 Random-access method for retrieving outgoing edges from vertex v. More...
 
virtual void GetInEdges (vtkIdType v, vtkInEdgeIterator *it)
 Initializes the in edge iterator to iterate over all incoming edges to vertex v. More...
 
virtual vtkIdType GetInDegree (vtkIdType v)
 The number of incoming edges to vertex v. More...
 
virtual vtkInEdgeType GetInEdge (vtkIdType v, vtkIdType index)
 Random-access method for retrieving incoming edges to vertex v. More...
 
virtual void GetInEdge (vtkIdType v, vtkIdType index, vtkGraphEdge *e)
 Random-access method for retrieving incoming edges to vertex v. More...
 
virtual void GetAdjacentVertices (vtkIdType v, vtkAdjacentVertexIterator *it)
 Initializes the adjacent vertex iterator to iterate over all outgoing vertices from vertex v. More...
 
virtual void GetEdges (vtkEdgeListIterator *it)
 Initializes the edge list iterator to iterate over all edges in the graph. More...
 
virtual vtkIdType GetNumberOfEdges ()
 The number of edges in the graph. More...
 
virtual void GetVertices (vtkVertexListIterator *it)
 Initializes the vertex list iterator to iterate over all vertices in the graph. More...
 
virtual vtkIdType GetNumberOfVertices ()
 The number of vertices in the graph. More...
 
void SetDistributedGraphHelper (vtkDistributedGraphHelper *helper)
 Sets the distributed graph helper of this graph, turning it into a distributed graph. More...
 
vtkDistributedGraphHelperGetDistributedGraphHelper ()
 Retrieves the distributed graph helper for this graph. More...
 
vtkIdType FindVertex (const vtkVariant &pedigreeID)
 Retrieve the vertex with the given pedigree ID. More...
 
void ShallowCopy (vtkDataObject *obj) override
 Shallow copies the data object into this graph. More...
 
virtual void CopyStructure (vtkGraph *g)
 Does a shallow copy of the topological information, but not the associated attributes. More...
 
virtual bool CheckedShallowCopy (vtkGraph *g)
 Performs the same operation as ShallowCopy(), but instead of reporting an error for an incompatible graph, returns false. More...
 
virtual bool CheckedDeepCopy (vtkGraph *g)
 Performs the same operation as DeepCopy(), but instead of reporting an error for an incompatible graph, returns false. More...
 
virtual void Squeeze ()
 Reclaim unused memory. More...
 
unsigned long GetActualMemorySize () override
 Return the actual size of the data in kibibytes (1024 bytes). More...
 
void ReorderOutVertices (vtkIdType v, vtkIdTypeArray *vertices)
 Reorder the outgoing vertices of a vertex. More...
 
bool IsSameStructure (vtkGraph *other)
 Returns true if both graphs point to the same adjacency structure. More...
 
vtkIdType GetSourceVertex (vtkIdType e)
 Retrieve the source and target vertices for an edge id. More...
 
vtkIdType GetTargetVertex (vtkIdType e)
 
void SetEdgePoints (vtkIdType e, vtkIdType npts, const double pts[])
 Get/Set the internal edge control points associated with each edge. More...
 
void GetEdgePoints (vtkIdType e, vtkIdType &npts, double *&pts)
 
vtkIdType GetNumberOfEdgePoints (vtkIdType e)
 Get the number of edge points associated with an edge. More...
 
double * GetEdgePoint (vtkIdType e, vtkIdType i)
 Get the x,y,z location of a point along edge e. More...
 
void ClearEdgePoints (vtkIdType e)
 Clear all points associated with an edge. More...
 
void SetEdgePoint (vtkIdType e, vtkIdType i, const double x[3])
 Set an x,y,z location of a point along an edge. More...
 
void SetEdgePoint (vtkIdType e, vtkIdType i, double x, double y, double z)
 
void AddEdgePoint (vtkIdType e, const double x[3])
 Adds a point to the end of the list of edge points for a certain edge. More...
 
void AddEdgePoint (vtkIdType e, double x, double y, double z)
 
void ShallowCopyEdgePoints (vtkGraph *g)
 Copy the internal edge point data from another graph into this graph. More...
 
void DeepCopyEdgePoints (vtkGraph *g)
 
vtkGraphInternalsGetGraphInternals (bool modifying)
 Returns the internal representation of the graph. More...
 
void GetInducedEdges (vtkIdTypeArray *verts, vtkIdTypeArray *edges)
 Fills a list of edge indices with the edges contained in the induced subgraph formed by the vertices in the vertex list. More...
 
vtkFieldDataGetAttributesAsFieldData (int type) override
 Returns the attributes of the data object as a vtkFieldData. More...
 
vtkIdType GetNumberOfElements (int type) override
 Get the number of elements for a specific attribute type (VERTEX, EDGE, etc.). More...
 
void Dump ()
 Dump the contents of the graph to standard output. More...
 
vtkIdType GetEdgeId (vtkIdType a, vtkIdType b)
 Returns the Id of the edge between vertex a and vertex b. More...
 
bool ToDirectedGraph (vtkDirectedGraph *g)
 Convert the graph to a directed graph. More...
 
bool ToUndirectedGraph (vtkUndirectedGraph *g)
 Convert the graph to an undirected graph. More...
 
- Public Member Functions inherited from vtkDataObject
vtkDataObjectNewInstance () const
 
virtual vtkInformationGetInformation ()
 Set/Get the information object associated with this data object. More...
 
virtual void SetInformation (vtkInformation *)
 
void ReleaseData ()
 Release data back to system to conserve memory resource. More...
 
virtual int GetDataReleased ()
 Get the flag indicating the data has been released. More...
 
void GlobalReleaseDataFlagOn ()
 
void GlobalReleaseDataFlagOff ()
 
virtual void SetFieldData (vtkFieldData *)
 Assign or retrieve a general field data to this data object. More...
 
virtual vtkFieldDataGetFieldData ()
 
vtkMTimeType GetUpdateTime ()
 Used by Threaded ports to determine if they should initiate an asynchronous update (still in development). More...
 
virtual void CopyInformationFromPipeline (vtkInformation *vtkNotUsed(info))
 Copy from the pipeline information to the data object's own information. More...
 
virtual void CopyInformationToPipeline (vtkInformation *vtkNotUsed(info))
 Copy information from this data object to the pipeline information. More...
 
void DataHasBeenGenerated ()
 This method is called by the source when it executes to generate data. More...
 
virtual void PrepareForNewData ()
 make the output data ready for new data to be inserted. More...
 
virtual int GetExtentType ()
 The ExtentType will be left as VTK_PIECES_EXTENT for data objects such as vtkPolyData and vtkUnstructuredGrid. More...
 
virtual void Crop (const int *updateExtent)
 This method crops the data object (if necessary) so that the extent matches the update extent. More...
 
virtual vtkDataSetAttributesGetAttributes (int type)
 Returns the attributes of the data object of the specified attribute type. More...
 
virtual int GetAttributeTypeForArray (vtkAbstractArray *arr)
 Retrieves the attribute type that an array came from. More...
 
- Public Member Functions inherited from vtkObject
 vtkBaseTypeMacro (vtkObject, vtkObjectBase)
 
virtual void DebugOn ()
 Turn debugging output on. More...
 
virtual void DebugOff ()
 Turn debugging output off. More...
 
bool GetDebug ()
 Get the value of the debug flag. More...
 
void SetDebug (bool debugFlag)
 Set the value of the debug flag. More...
 
virtual void Modified ()
 Update the modification time for this object. More...
 
unsigned long AddObserver (unsigned long event, vtkCommand *, float priority=0.0f)
 Allow people to add/remove/invoke observers (callbacks) to any VTK object. More...
 
unsigned long AddObserver (const char *event, vtkCommand *, float priority=0.0f)
 
vtkCommandGetCommand (unsigned long tag)
 
void RemoveObserver (vtkCommand *)
 
void RemoveObservers (unsigned long event, vtkCommand *)
 
void RemoveObservers (const char *event, vtkCommand *)
 
vtkTypeBool HasObserver (unsigned long event, vtkCommand *)
 
vtkTypeBool HasObserver (const char *event, vtkCommand *)
 
void RemoveObserver (unsigned long tag)
 
void RemoveObservers (unsigned long event)
 
void RemoveObservers (const char *event)
 
void RemoveAllObservers ()
 
vtkTypeBool HasObserver (unsigned long event)
 
vtkTypeBool HasObserver (const char *event)
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f)
 Overloads to AddObserver that allow developers to add class member functions as callbacks for events. More...
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, bool(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
 Allow user to set the AbortFlagOn() with the return value of the callback method. More...
 
int InvokeEvent (unsigned long event, void *callData)
 This method invokes an event and return whether the event was aborted or not. More...
 
int InvokeEvent (const char *event, void *callData)
 
int InvokeEvent (unsigned long event)
 
int InvokeEvent (const char *event)
 
- Public Member Functions inherited from vtkObjectBase
const char * GetClassName () const
 Return the class name as a string. More...
 
virtual void Delete ()
 Delete a VTK object. More...
 
virtual void FastDelete ()
 Delete a reference to this object. More...
 
void InitializeObjectBase ()
 
void Print (ostream &os)
 Print an object to an ostream. More...
 
virtual void PrintHeader (ostream &os, vtkIndent indent)
 
virtual void PrintTrailer (ostream &os, vtkIndent indent)
 
virtual void Register (vtkObjectBase *o)
 Increase the reference count (mark as used by another object). More...
 
virtual void UnRegister (vtkObjectBase *o)
 Decrease the reference count (release by another object). More...
 
int GetReferenceCount ()
 Return the current reference count of this object. More...
 
void SetReferenceCount (int)
 Sets the reference count. More...
 
void PrintRevisions (ostream &)
 Legacy. More...
 

Static Public Member Functions

static vtkReebGraphNew ()
 
static vtkTypeBool IsTypeOf (const char *type)
 
static vtkReebGraphSafeDownCast (vtkObjectBase *o)
 
- Static Public Member Functions inherited from vtkMutableDirectedGraph
static vtkMutableDirectedGraphNew ()
 
static vtkTypeBool IsTypeOf (const char *type)
 
static vtkMutableDirectedGraphSafeDownCast (vtkObjectBase *o)
 
- Static Public Member Functions inherited from vtkDirectedGraph
static vtkDirectedGraphNew ()
 
static vtkTypeBool IsTypeOf (const char *type)
 
static vtkDirectedGraphSafeDownCast (vtkObjectBase *o)
 
static vtkDirectedGraphGetData (vtkInformation *info)
 Retrieve a graph from an information vector. More...
 
static vtkDirectedGraphGetData (vtkInformationVector *v, int i=0)
 
- Static Public Member Functions inherited from vtkGraph
static vtkTypeBool IsTypeOf (const char *type)
 
static vtkGraphSafeDownCast (vtkObjectBase *o)
 
static vtkGraphGetData (vtkInformation *info)
 Retrieve a graph from an information vector. More...
 
static vtkGraphGetData (vtkInformationVector *v, int i=0)
 
- Static Public Member Functions inherited from vtkDataObject
static vtkDataObjectNew ()
 
static vtkTypeBool IsTypeOf (const char *type)
 
static vtkDataObjectSafeDownCast (vtkObjectBase *o)
 
static void SetGlobalReleaseDataFlag (int val)
 Turn on/off flag to control whether every object releases its data after being used by a filter. More...
 
static int GetGlobalReleaseDataFlag ()
 
static vtkInformationGetActiveFieldInformation (vtkInformation *info, int fieldAssociation, int attributeType)
 Return the information object within the input information object's field data corresponding to the specified association (FIELD_ASSOCIATION_POINTS or FIELD_ASSOCIATION_CELLS) and attribute (SCALARS, VECTORS, NORMALS, TCOORDS, or TENSORS) More...
 
static vtkInformationGetNamedFieldInformation (vtkInformation *info, int fieldAssociation, const char *name)
 Return the information object within the input information object's field data corresponding to the specified association (FIELD_ASSOCIATION_POINTS or FIELD_ASSOCIATION_CELLS) and name. More...
 
static void RemoveNamedFieldInformation (vtkInformation *info, int fieldAssociation, const char *name)
 Remove the info associated with an array. More...
 
static vtkInformationSetActiveAttribute (vtkInformation *info, int fieldAssociation, const char *attributeName, int attributeType)
 Set the named array to be the active field for the specified type (SCALARS, VECTORS, NORMALS, TCOORDS, or TENSORS) and association (FIELD_ASSOCIATION_POINTS or FIELD_ASSOCIATION_CELLS). More...
 
static void SetActiveAttributeInfo (vtkInformation *info, int fieldAssociation, int attributeType, const char *name, int arrayType, int numComponents, int numTuples)
 Set the name, array type, number of components, and number of tuples within the passed information object for the active attribute of type attributeType (in specified association, FIELD_ASSOCIATION_POINTS or FIELD_ASSOCIATION_CELLS). More...
 
static void SetPointDataActiveScalarInfo (vtkInformation *info, int arrayType, int numComponents)
 Convenience version of previous method for use (primarily) by the Imaging filters. More...
 
static const char * GetAssociationTypeAsString (int associationType)
 Given an integer association type, this static method returns a string type for the attribute (i.e. More...
 
static int GetAssociationTypeFromString (const char *associationType)
 Given an integer association type, this static method returns a string type for the attribute (i.e. More...
 
static vtkInformationStringKeyDATA_TYPE_NAME ()
 
static vtkInformationDataObjectKeyDATA_OBJECT ()
 
static vtkInformationIntegerKeyDATA_EXTENT_TYPE ()
 
static vtkInformationIntegerPointerKeyDATA_EXTENT ()
 
static vtkInformationIntegerVectorKeyALL_PIECES_EXTENT ()
 
static vtkInformationIntegerKeyDATA_PIECE_NUMBER ()
 
static vtkInformationIntegerKeyDATA_NUMBER_OF_PIECES ()
 
static vtkInformationIntegerKeyDATA_NUMBER_OF_GHOST_LEVELS ()
 
static vtkInformationDoubleKeyDATA_TIME_STEP ()
 
static vtkInformationInformationVectorKeyPOINT_DATA_VECTOR ()
 
static vtkInformationInformationVectorKeyCELL_DATA_VECTOR ()
 
static vtkInformationInformationVectorKeyVERTEX_DATA_VECTOR ()
 
static vtkInformationInformationVectorKeyEDGE_DATA_VECTOR ()
 
static vtkInformationIntegerKeyFIELD_ARRAY_TYPE ()
 
static vtkInformationIntegerKeyFIELD_ASSOCIATION ()
 
static vtkInformationIntegerKeyFIELD_ATTRIBUTE_TYPE ()
 
static vtkInformationIntegerKeyFIELD_ACTIVE_ATTRIBUTE ()
 
static vtkInformationIntegerKeyFIELD_NUMBER_OF_COMPONENTS ()
 
static vtkInformationIntegerKeyFIELD_NUMBER_OF_TUPLES ()
 
static vtkInformationIntegerKeyFIELD_OPERATION ()
 
static vtkInformationDoubleVectorKeyFIELD_RANGE ()
 
static vtkInformationIntegerVectorKeyPIECE_EXTENT ()
 
static vtkInformationStringKeyFIELD_NAME ()
 
static vtkInformationDoubleVectorKeyORIGIN ()
 
static vtkInformationDoubleVectorKeySPACING ()
 
static vtkInformationDoubleVectorKeyDIRECTION ()
 
static vtkInformationDoubleVectorKeyBOUNDING_BOX ()
 
static vtkInformationDataObjectKeySIL ()
 
static vtkDataObjectGetData (vtkInformation *info)
 Retrieve an instance of this class from an information object. More...
 
static vtkDataObjectGetData (vtkInformationVector *v, int i=0)
 
- Static Public Member Functions inherited from vtkObject
static vtkObjectNew ()
 Create an object with Debug turned off, modified time initialized to zero, and reference counting on. More...
 
static void BreakOnError ()
 This method is called when vtkErrorMacro executes. More...
 
static void SetGlobalWarningDisplay (int val)
 This is a global flag that controls whether any debug, warning or error messages are displayed. More...
 
static void GlobalWarningDisplayOn ()
 
static void GlobalWarningDisplayOff ()
 
static int GetGlobalWarningDisplay ()
 
- Static Public Member Functions inherited from vtkObjectBase
static vtkTypeBool IsTypeOf (const char *name)
 Return 1 if this class type is the same type of (or a subclass of) the named class. More...
 
static vtkObjectBaseNew ()
 Create an object with Debug turned off, modified time initialized to zero, and reference counting on. More...
 

Protected Member Functions

virtual vtkObjectBaseNewInstanceInternal () const
 
 vtkReebGraph ()
 
 ~vtkReebGraph () override
 
- Protected Member Functions inherited from vtkMutableDirectedGraph
 vtkMutableDirectedGraph ()
 
 ~vtkMutableDirectedGraph () override
 
- Protected Member Functions inherited from vtkDirectedGraph
 vtkDirectedGraph ()
 
 ~vtkDirectedGraph () override
 
- Protected Member Functions inherited from vtkGraph
 vtkGraph ()
 
 ~vtkGraph () override
 
void AddVertexInternal (vtkVariantArray *propertyArr=nullptr, vtkIdType *vertex=nullptr)
 Protected method for adding vertices, optionally with properties, used by mutable subclasses. More...
 
void AddVertexInternal (const vtkVariant &pedigree, vtkIdType *vertex)
 Adds a vertex with the given pedigree ID to the graph. More...
 
void AddEdgeInternal (vtkIdType u, vtkIdType v, bool directed, vtkVariantArray *propertyArr, vtkEdgeType *edge)
 Protected method for adding edges of a certain directedness used by mutable subclasses. More...
 
void AddEdgeInternal (const vtkVariant &uPedigree, vtkIdType v, bool directed, vtkVariantArray *propertyArr, vtkEdgeType *edge)
 
void AddEdgeInternal (vtkIdType u, const vtkVariant &vPedigree, bool directed, vtkVariantArray *propertyArr, vtkEdgeType *edge)
 
void AddEdgeInternal (const vtkVariant &uPedigree, const vtkVariant &vPedigree, bool directed, vtkVariantArray *propertyArr, vtkEdgeType *edge)
 
void RemoveVertexInternal (vtkIdType v, bool directed)
 Removes a vertex from the graph, along with any adjacent edges. More...
 
void RemoveEdgeInternal (vtkIdType e, bool directed)
 Removes an edge from the graph. More...
 
void RemoveVerticesInternal (vtkIdTypeArray *arr, bool directed)
 Removes a collection of vertices from the graph, along with any adjacent edges. More...
 
void RemoveEdgesInternal (vtkIdTypeArray *arr, bool directed)
 Removes a collection of edges from the graph. More...
 
virtual void CopyInternal (vtkGraph *g, bool deep)
 Copy internal data structure. More...
 
void SetInternals (vtkGraphInternals *internals)
 Private method for setting internals. More...
 
void SetEdgePoints (vtkGraphEdgePoints *edgePoints)
 Private method for setting edge points. More...
 
void ForceOwnership ()
 If this instance does not own its internals, it makes a copy of the internals. More...
 
virtual void GetOutEdges (vtkIdType v, const vtkOutEdgeType *&edges, vtkIdType &nedges)
 Fast access functions for iterators. More...
 
virtual void GetInEdges (vtkIdType v, const vtkInEdgeType *&edges, vtkIdType &nedges)
 
void BuildEdgeList ()
 Builds a mapping from edge id to source/target vertex id. More...
 
virtual vtkIdTypeArrayGetEdgeList ()
 The optional mapping from edge id to source/target ids. More...
 
virtual void SetEdgeList (vtkIdTypeArray *list)
 
- Protected Member Functions inherited from vtkDataObject
 vtkDataObject ()
 
 ~vtkDataObject () override
 
- Protected Member Functions inherited from vtkObject
 vtkObject ()
 
 ~vtkObject () override
 
void RegisterInternal (vtkObjectBase *, vtkTypeBool check) override
 
void UnRegisterInternal (vtkObjectBase *, vtkTypeBool check) override
 
void InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=nullptr)
 These methods allow a command to exclusively grab all events. More...
 
void InternalReleaseFocus ()
 
- Protected Member Functions inherited from vtkObjectBase
 vtkObjectBase ()
 
virtual ~vtkObjectBase ()
 
virtual void CollectRevisions (ostream &)
 
virtual void ReportReferences (vtkGarbageCollector *)
 
 vtkObjectBase (const vtkObjectBase &)
 
void operator= (const vtkObjectBase &)
 

Protected Attributes

Implementation * Storage
 
- Protected Attributes inherited from vtkMutableDirectedGraph
vtkGraphEdgeGraphEdge
 Graph edge that is reused of AddGraphEdge calls. More...
 
- Protected Attributes inherited from vtkGraph
vtkGraphInternalsInternals
 The adjacency list internals of this graph. More...
 
vtkDistributedGraphHelperDistributedHelper
 The distributed graph helper. More...
 
vtkGraphEdgePoints * EdgePoints
 The structure for holding the edge points. More...
 
vtkDataSetAttributesVertexData
 The vertex and edge data. More...
 
vtkDataSetAttributesEdgeData
 
double Bounds [6]
 (xmin,xmax, ymin,ymax, zmin,zmax) geometric bounds. More...
 
vtkTimeStamp ComputeTime
 Time at which bounds were computed. More...
 
vtkPointsPoints
 The vertex locations. More...
 
vtkIdTypeArrayEdgeList
 
- Protected Attributes inherited from vtkDataObject
vtkFieldDataFieldData
 
int DataReleased
 
vtkTimeStamp UpdateTime
 
vtkInformationInformation
 
- Protected Attributes inherited from vtkObject
bool Debug
 
vtkTimeStamp MTime
 
vtkSubjectHelper * SubjectHelper
 
- Protected Attributes inherited from vtkObjectBase
std::atomic< int32_t > ReferenceCount
 
vtkWeakPointerBase ** WeakPointers
 

Additional Inherited Members

- Static Protected Attributes inherited from vtkGraph
static double DefaultPoint [3]
 

Detailed Description

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 131 of file vtkReebGraph.h.

Member Typedef Documentation

◆ Superclass

Definition at line 137 of file vtkReebGraph.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
ERR_INCORRECT_FIELD 
ERR_NO_SUCH_FIELD 
ERR_NOT_A_SIMPLICIAL_MESH 

Definition at line 149 of file vtkReebGraph.h.

Constructor & Destructor Documentation

◆ vtkReebGraph()

vtkReebGraph::vtkReebGraph ( )
protected

◆ ~vtkReebGraph()

vtkReebGraph::~vtkReebGraph ( )
overrideprotected

Member Function Documentation

◆ New()

static vtkReebGraph* vtkReebGraph::New ( )
static

◆ IsTypeOf()

static vtkTypeBool vtkReebGraph::IsTypeOf ( const char *  type)
static

◆ IsA()

virtual vtkTypeBool vtkReebGraph::IsA ( const char *  name)
virtual

Return 1 if this class is the same type of (or a subclass of) the named class.

Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.

Reimplemented from vtkMutableDirectedGraph.

◆ SafeDownCast()

static vtkReebGraph* vtkReebGraph::SafeDownCast ( vtkObjectBase o)
static

◆ NewInstanceInternal()

virtual vtkObjectBase* vtkReebGraph::NewInstanceInternal ( ) const
protectedvirtual

Reimplemented from vtkMutableDirectedGraph.

◆ NewInstance()

vtkReebGraph* vtkReebGraph::NewInstance ( ) const

◆ PrintSelf()

void vtkReebGraph::PrintSelf ( ostream &  os,
vtkIndent  indent 
)
overridevirtual

Methods invoked by print to print information about the object including superclasses.

Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from vtkMutableDirectedGraph.

◆ PrintNodeData()

void vtkReebGraph::PrintNodeData ( ostream &  os,
vtkIndent  indent 
)

◆ GetDataObjectType()

int vtkReebGraph::GetDataObjectType ( )
inlineoverridevirtual

Return class name of data type.

This is one of VTK_STRUCTURED_GRID, VTK_STRUCTURED_POINTS, VTK_UNSTRUCTURED_GRID, VTK_POLY_DATA, or VTK_RECTILINEAR_GRID (see vtkSetGet.h for definitions). THIS METHOD IS THREAD SAFE

Reimplemented from vtkDirectedGraph.

Definition at line 147 of file vtkReebGraph.h.

◆ Build() [1/6]

int vtkReebGraph::Build ( vtkPolyData mesh,
vtkDataArray scalarField 
)

Build the Reeb graph of the field 'scalarField' defined on the surface mesh 'mesh'.

Returned values:

vtkReebGraph::ERR_INCORRECT_FIELD: 'scalarField' does not have as many tuples as 'mesh' has vertices.

vtkReebGraph::ERR_NOT_A_SIMPLICIAL_MESH: the input mesh 'mesh' is not a simplicial mesh (for example, the surface mesh contains quads instead of triangles).

◆ Build() [2/6]

int vtkReebGraph::Build ( vtkUnstructuredGrid mesh,
vtkDataArray scalarField 
)

Build the Reeb graph of the field 'scalarField' defined on the volume mesh 'mesh'.

Returned values:

vtkReebGraph::ERR_INCORRECT_FIELD: 'scalarField' does not have as many tuples as 'mesh' has vertices.

vtkReebGraph::ERR_NOT_A_SIMPLICIAL_MESH: the input mesh 'mesh' is not a simplicial mesh.

◆ Build() [3/6]

int vtkReebGraph::Build ( vtkPolyData mesh,
vtkIdType  scalarFieldId 
)

Build the Reeb graph of the field given by the Id 'scalarFieldId', defined on the surface mesh 'mesh'.

Returned values:

vtkReebGraph::ERR_INCORRECT_FIELD: 'scalarField' does not have as many tuples as 'mesh' as vertices.

vtkReebGraph::ERR_NOT_A_SIMPLICIAL_MESH: the input mesh 'mesh' is not a simplicial mesh (for example, the surface mesh contains quads instead of triangles).

vtkReebGraph::ERR_NO_SUCH_FIELD: the scalar field given by the Id 'scalarFieldId' does not exist.

◆ Build() [4/6]

int vtkReebGraph::Build ( vtkUnstructuredGrid mesh,
vtkIdType  scalarFieldId 
)

Build the Reeb graph of the field given by the Id 'scalarFieldId', defined on the volume mesh 'mesh'.

Returned values:

vtkReebGraph::ERR_INCORRECT_FIELD: 'scalarField' does not have as many tuples as 'mesh' as vertices.

vtkReebGraph::ERR_NOT_A_SIMPLICIAL_MESH: the input mesh 'mesh' is not a simplicial mesh.

vtkReebGraph::ERR_NO_SUCH_FIELD: the scalar field given by the Id 'scalarFieldId' does not exist.

◆ Build() [5/6]

int vtkReebGraph::Build ( vtkPolyData mesh,
const char *  scalarFieldName 
)

Build the Reeb graph of the field given by the name 'scalarFieldName', defined on the surface mesh 'mesh'.

Returned values:

vtkReebGraph::ERR_INCORRECT_FIELD: 'scalarField' does not have as many tuples as 'mesh' as vertices.

vtkReebGraph::ERR_NOT_A_SIMPLICIAL_MESH: the input mesh 'mesh' is not a simplicial mesh (for example, the surface mesh contains quads instead of triangles).

vtkReebGraph::ERR_NO_SUCH_FIELD: the scalar field given by the name 'scalarFieldName' does not exist.

◆ Build() [6/6]

int vtkReebGraph::Build ( vtkUnstructuredGrid mesh,
const char *  scalarFieldName 
)

Build the Reeb graph of the field given by the name 'scalarFieldName', defined on the volume mesh 'mesh'.

Returned values:

vtkReebGraph::ERR_INCORRECT_FIELD: 'scalarField' does not have as many tuples as 'mesh' as vertices.

vtkReebGraph::ERR_NOT_A_SIMPLICIAL_MESH: the input mesh 'mesh' is not a simplicial mesh.

vtkReebGraph::ERR_NO_SUCH_FIELD: the scalar field given by the name 'scalarFieldName' does not exist.

◆ StreamTriangle()

int vtkReebGraph::StreamTriangle ( vtkIdType  vertex0Id,
double  scalar0,
vtkIdType  vertex1Id,
double  scalar1,
vtkIdType  vertex2Id,
double  scalar2 
)

Streaming Reeb graph computation.

Add to the streaming computation the triangle of the vtkPolyData surface mesh described by vertex0Id, scalar0 vertex1Id, scalar1 vertex2Id, scalar2

where vertexId is the Id of the vertex in the vtkPolyData structure and scalar is the corresponding scalar field value.

IMPORTANT: The stream must be finalized with the "CloseStream" call.

◆ StreamTetrahedron()

int vtkReebGraph::StreamTetrahedron ( vtkIdType  vertex0Id,
double  scalar0,
vtkIdType  vertex1Id,
double  scalar1,
vtkIdType  vertex2Id,
double  scalar2,
vtkIdType  vertex3Id,
double  scalar3 
)

Streaming Reeb graph computation.

Add to the streaming computation the tetrahedra of the vtkUnstructuredGrid volume mesh described by vertex0Id, scalar0 vertex1Id, scalar1 vertex2Id, scalar2 vertex3Id, scalar3

where vertexId is the Id of the vertex in the vtkUnstructuredGrid structure and scalar is the corresponding scalar field value.

IMPORTANT: The stream must be finalized with the "CloseStream" call.

◆ CloseStream()

void vtkReebGraph::CloseStream ( )

Finalize internal data structures, in the case of streaming computations (with StreamTriangle or StreamTetrahedron).

After this call, no more triangle or tetrahedron can be inserted via StreamTriangle or StreamTetrahedron. IMPORTANT: This method must be called when the input stream is finished. If you need to get a snapshot of the Reeb graph during the streaming process (to parse or simplify it), do a DeepCopy followed by a CloseStream on the copy.

◆ DeepCopy()

void vtkReebGraph::DeepCopy ( vtkDataObject obj)
overridevirtual

Deep copies the data object into this graph.

If it is an incompatible graph, reports an error.

Reimplemented from vtkGraph.

◆ Simplify()

int vtkReebGraph::Simplify ( double  simplificationThreshold,
vtkReebGraphSimplificationMetric simplificationMetric 
)

Simplify the Reeb graph given a threshold 'simplificationThreshold' (between 0 and 1).

This method is the core feature for Reeb graph multi-resolution hierarchy construction.

Return the number of arcs that have been removed through the simplification process.

'simplificationThreshold' represents a "scale", under which each Reeb graph feature is considered as noise. 'simplificationThreshold' is expressed as a fraction of the scalar field overall span. It can vary from 0 (no simplification) to 1 (maximal simplification).

'simplificationMetric' is an object in charge of evaluating the importance of a Reeb graph arc at each step of the simplification process. if 'simplificationMetric' is nullptr, the default strategy (persitence of the scalar field) is used. Customized simplification metric evaluation algorithm can be designed (see vtkReebGraphSimplificationMetric), enabling the user to control the definition of what should be considered as noise or signal.

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.

◆ Set()

void vtkReebGraph::Set ( vtkMutableDirectedGraph g)

Use a pre-defined Reeb graph (post-processing).

Use with caution!

Member Data Documentation

◆ Storage

Implementation* vtkReebGraph::Storage
protected

Definition at line 358 of file vtkReebGraph.h.


The documentation for this class was generated from the following file: