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
typedef vtkObject Superclass
 
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
}
 
enum  AttributeTypes {
  POINT, CELL, FIELD, POINT_THEN_CELL,
  VERTEX, EDGE, ROW, NUMBER_OF_ATTRIBUTE_TYPES
}
 
enum  FieldOperations { FIELD_OPERATION_PRESERVED, FIELD_OPERATION_REINTERPOLATED, FIELD_OPERATION_MODIFIED, FIELD_OPERATION_REMOVED }
 
- Public Types inherited from vtkObject
typedef vtkObjectBase Superclass
 

Public Member Functions

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)
 
- Public Member Functions inherited from vtkMutableDirectedGraph
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)
 
vtkGraphEdgeAddGraphEdge (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)
 
- Public Member Functions inherited from vtkDirectedGraph
virtual int GetDataObjectType ()
 
virtual bool IsStructureValid (vtkGraph *g)
 
- Public Member Functions inherited from vtkGraph
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)
 
vtkGraphInternalsGetGraphInternals (bool modifying)
 
void GetInducedEdges (vtkIdTypeArray *verts, vtkIdTypeArray *edges)
 
virtual vtkFieldDataGetAttributesAsFieldData (int type)
 
virtual vtkIdType GetNumberOfElements (int type)
 
void Dump ()
 
vtkIdType GetEdgeId (vtkIdType a, vtkIdType b)
 
bool ToDirectedGraph (vtkDirectedGraph *g)
 
bool ToUndirectedGraph (vtkUndirectedGraph *g)
 
virtual vtkDataSetAttributesGetVertexData ()
 
virtual vtkDataSetAttributesGetEdgeData ()
 
double * GetPoint (vtkIdType ptId)
 
void GetPoint (vtkIdType ptId, double x[3])
 
vtkPointsGetPoints ()
 
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)
 
vtkDistributedGraphHelperGetDistributedGraphHelper ()
 
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)
 
- Public Member Functions inherited from vtkDataObject
virtual vtkAlgorithmOutputGetProducerPort ()
 
void ReleaseData ()
 
int ShouldIReleaseData ()
 
virtual void Register (vtkObjectBase *o)
 
virtual void UnRegister (vtkObjectBase *o)
 
virtual void Update ()
 
virtual void UpdateInformation ()
 
virtual void PropagateUpdateExtent ()
 
virtual void TriggerAsynchronousUpdate ()
 
virtual void UpdateData ()
 
virtual unsigned long GetEstimatedMemorySize ()
 
unsigned long GetUpdateTime ()
 
void SetUpdateExtentToWholeExtent ()
 
unsigned long GetPipelineMTime ()
 
virtual unsigned long GetActualMemorySize ()
 
void CopyInformation (vtkDataObject *data)
 
virtual void CopyInformationFromPipeline (vtkInformation *request)
 
void DataHasBeenGenerated ()
 
virtual void PrepareForNewData ()
 
virtual int GetExtentType ()
 
virtual void Crop ()
 
virtual vtkDataSetAttributesGetAttributes (int type)
 
virtual int GetAttributeTypeForArray (vtkAbstractArray *arr)
 
virtual vtkSourceGetSource ()
 
void SetSource (vtkSource *s)
 
virtual vtkInformationGetInformation ()
 
virtual void SetInformation (vtkInformation *)
 
virtual vtkInformationGetPipelineInformation ()
 
virtual void SetPipelineInformation (vtkInformation *)
 
virtual int GetDataReleased ()
 
void SetReleaseDataFlag (int)
 
int GetReleaseDataFlag ()
 
virtual void ReleaseDataFlagOn ()
 
virtual void ReleaseDataFlagOff ()
 
virtual void SetFieldData (vtkFieldData *)
 
virtual vtkFieldDataGetFieldData ()
 
virtual void SetUpdateExtent (int piece, int numPieces, int ghostLevel)
 
void SetUpdateExtent (int piece, int numPieces)
 
virtual void SetUpdateExtent (int x0, int x1, int y0, int y1, int z0, int z1)
 
virtual void SetUpdateExtent (int extent[6])
 
virtual int * GetUpdateExtent ()
 
virtual void GetUpdateExtent (int &x0, int &x1, int &y0, int &y1, int &z0, int &z1)
 
virtual void GetUpdateExtent (int extent[6])
 
virtual void CopyTypeSpecificInformation (vtkDataObject *data)
 
void SetUpdatePiece (int piece)
 
void SetUpdateNumberOfPieces (int num)
 
virtual int GetUpdatePiece ()
 
virtual int GetUpdateNumberOfPieces ()
 
void SetUpdateGhostLevel (int level)
 
virtual int GetUpdateGhostLevel ()
 
virtual void SetRequestExactExtent (int flag)
 
virtual int GetRequestExactExtent ()
 
virtual void RequestExactExtentOn ()
 
virtual void RequestExactExtentOff ()
 
virtual void SetWholeExtent (int x0, int x1, int y0, int y1, int z0, int z1)
 
virtual void SetWholeExtent (int extent[6])
 
virtual int * GetWholeExtent ()
 
virtual void GetWholeExtent (int &x0, int &x1, int &y0, int &y1, int &z0, int &z1)
 
virtual void GetWholeExtent (int extent[6])
 
virtual void SetWholeBoundingBox (double x0, double x1, double y0, double y1, double z0, double z1)
 
virtual void SetWholeBoundingBox (double bb[6])
 
virtual double * GetWholeBoundingBox ()
 
virtual void GetWholeBoundingBox (double &x0, double &x1, double &y0, double &y1, double &z0, double &z1)
 
virtual void GetWholeBoundingBox (double extent[6])
 
virtual void SetMaximumNumberOfPieces (int)
 
virtual int GetMaximumNumberOfPieces ()
 
virtual void CopyInformationToPipeline (vtkInformation *request, vtkInformation *input, vtkInformation *output, int forceCopy)
 
void CopyInformationToPipeline (vtkInformation *request, vtkInformation *input)
 
void SetExtentTranslator (vtkExtentTranslator *translator)
 
vtkExtentTranslatorGetExtentTranslator ()
 
void GlobalReleaseDataFlagOn ()
 
void GlobalReleaseDataFlagOff ()
 
- Public Member Functions inherited from vtkObject
virtual void DebugOn ()
 
virtual void DebugOff ()
 
unsigned char GetDebug ()
 
void SetDebug (unsigned char debugFlag)
 
virtual void Modified ()
 
unsigned long AddObserver (unsigned long event, vtkCommand *, float priority=0.0f)
 
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 *)
 
int HasObserver (unsigned long event, vtkCommand *)
 
int HasObserver (const char *event, vtkCommand *)
 
void RemoveObserver (unsigned long tag)
 
void RemoveObservers (unsigned long event)
 
void RemoveObservers (const char *event)
 
void RemoveAllObservers ()
 
int HasObserver (unsigned long event)
 
int HasObserver (const char *event)
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f)
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
 
int InvokeEvent (unsigned long event, void *callData)
 
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
 
virtual void Delete ()
 
virtual void FastDelete ()
 
void Print (ostream &os)
 
void SetReferenceCount (int)
 
void PrintRevisions (ostream &os)
 
virtual void PrintHeader (ostream &os, vtkIndent indent)
 
virtual void PrintTrailer (ostream &os, vtkIndent indent)
 
int GetReferenceCount ()
 

Static Public Member Functions

static vtkReebGraphNew ()
 
static int IsTypeOf (const char *type)
 
static vtkReebGraphSafeDownCast (vtkObject *o)
 
- Static Public Member Functions inherited from vtkMutableDirectedGraph
static vtkMutableDirectedGraphNew ()
 
static int IsTypeOf (const char *type)
 
static vtkMutableDirectedGraphSafeDownCast (vtkObject *o)
 
- Static Public Member Functions inherited from vtkDirectedGraph
static vtkDirectedGraphNew ()
 
static int IsTypeOf (const char *type)
 
static vtkDirectedGraphSafeDownCast (vtkObject *o)
 
static vtkDirectedGraphGetData (vtkInformation *info)
 
static vtkDirectedGraphGetData (vtkInformationVector *v, int i=0)
 
- Static Public Member Functions inherited from vtkGraph
static int IsTypeOf (const char *type)
 
static vtkGraphSafeDownCast (vtkObject *o)
 
static vtkGraphGetData (vtkInformation *info)
 
static vtkGraphGetData (vtkInformationVector *v, int i=0)
 
- Static Public Member Functions inherited from vtkDataObject
static vtkDataObjectNew ()
 
static int IsTypeOf (const char *type)
 
static vtkDataObjectSafeDownCast (vtkObject *o)
 
static const char * GetAssociationTypeAsString (int associationType)
 
static vtkInformationStringKeyDATA_TYPE_NAME ()
 
static
vtkInformationDataObjectKey
DATA_OBJECT ()
 
static vtkInformationIntegerKeyDATA_EXTENT_TYPE ()
 
static
vtkInformationIntegerPointerKey
DATA_EXTENT ()
 
static vtkInformationIntegerKeyDATA_PIECE_NUMBER ()
 
static vtkInformationIntegerKeyDATA_NUMBER_OF_PIECES ()
 
static vtkInformationIntegerKeyDATA_NUMBER_OF_GHOST_LEVELS ()
 
static vtkInformationDoubleKeyDATA_RESOLUTION ()
 
static
vtkInformationDoubleVectorKey
DATA_TIME_STEPS ()
 
static
vtkInformationInformationVectorKey
POINT_DATA_VECTOR ()
 
static
vtkInformationInformationVectorKey
CELL_DATA_VECTOR ()
 
static
vtkInformationInformationVectorKey
VERTEX_DATA_VECTOR ()
 
static
vtkInformationInformationVectorKey
EDGE_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
vtkInformationDoubleVectorKey
FIELD_RANGE ()
 
static
vtkInformationDoubleVectorKey
PIECE_FIELD_RANGE ()
 
static vtkInformationStringKeyFIELD_ARRAY_NAME ()
 
static
vtkInformationIntegerVectorKey
PIECE_EXTENT ()
 
static vtkInformationStringKeyFIELD_NAME ()
 
static
vtkInformationDoubleVectorKey
ORIGIN ()
 
static
vtkInformationDoubleVectorKey
SPACING ()
 
static vtkInformationIntegerKeyDATA_GEOMETRY_UNMODIFIED ()
 
static
vtkInformationDataObjectKey
SIL ()
 
static vtkInformationGetActiveFieldInformation (vtkInformation *info, int fieldAssociation, int attributeType)
 
static vtkInformationGetNamedFieldInformation (vtkInformation *info, int fieldAssociation, const char *name)
 
static void RemoveNamedFieldInformation (vtkInformation *info, int fieldAssociation, const char *name)
 
static vtkInformationSetActiveAttribute (vtkInformation *info, int fieldAssociation, const char *attributeName, int attributeType)
 
static void SetActiveAttributeInfo (vtkInformation *info, int fieldAssociation, int attributeType, const char *name, int arrayType, int numComponents, int numTuples)
 
static void SetPointDataActiveScalarInfo (vtkInformation *info, int arrayType, int numComponents)
 
static vtkDataObjectGetData (vtkInformation *info)
 
static vtkDataObjectGetData (vtkInformationVector *v, int i=0)
 
static void SetGlobalReleaseDataFlag (int val)
 
static int GetGlobalReleaseDataFlag ()
 
- Static Public Member Functions inherited from vtkObject
static int IsTypeOf (const char *type)
 
static vtkObjectSafeDownCast (vtkObject *o)
 
static vtkObjectNew ()
 
static void BreakOnError ()
 
static void SetGlobalWarningDisplay (int val)
 
static void GlobalWarningDisplayOn ()
 
static void GlobalWarningDisplayOff ()
 
static int GetGlobalWarningDisplay ()
 
- Static Public Member Functions inherited from vtkObjectBase
static int IsTypeOf (const char *name)
 
static vtkObjectBaseNew ()
 

Protected Member Functions

 vtkReebGraph ()
 
 ~vtkReebGraph ()
 
- Protected Member Functions inherited from vtkMutableDirectedGraph
 vtkMutableDirectedGraph ()
 
 ~vtkMutableDirectedGraph ()
 
- Protected Member Functions inherited from vtkDirectedGraph
 vtkDirectedGraph ()
 
 ~vtkDirectedGraph ()
 
- Protected Member Functions inherited from vtkGraph
 vtkGraph ()
 
 ~vtkGraph ()
 
void AddVertexInternal (const vtkVariant &pedigree, vtkIdType *vertex)
 
void RemoveVertexInternal (vtkIdType v, bool directed)
 
void RemoveEdgeInternal (vtkIdType e, bool directed)
 
void RemoveVerticesInternal (vtkIdTypeArray *arr, bool directed)
 
virtual void CopyInternal (vtkGraph *g, bool deep)
 
void SetInternals (vtkGraphInternals *internals)
 
void SetEdgePoints (vtkGraphEdgePoints *edgePoints)
 
void ForceOwnership ()
 
void BuildEdgeList ()
 
void AddVertexInternal (vtkVariantArray *propertyArr=0, vtkIdType *vertex=0)
 
void AddEdgeInternal (vtkIdType u, vtkIdType v, bool directed, vtkVariantArray *propertyArr, vtkEdgeType *edge)
 
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 RemoveEdgesInternal (vtkIdTypeArray *arr, bool directed)
 
virtual void GetOutEdges (vtkIdType v, const vtkOutEdgeType *&edges, vtkIdType &nedges)
 
virtual void GetInEdges (vtkIdType v, const vtkInEdgeType *&edges, vtkIdType &nedges)
 
virtual vtkIdTypeArrayGetEdgeList ()
 
virtual void SetEdgeList (vtkIdTypeArray *list)
 
- Protected Member Functions inherited from vtkDataObject
 vtkDataObject ()
 
 ~vtkDataObject ()
 
vtkExecutiveGetExecutive ()
 
int GetPortNumber ()
 
virtual void ReportReferences (vtkGarbageCollector *)
 
vtkStreamingDemandDrivenPipelineTrySDDP (const char *method)
 
- Protected Member Functions inherited from vtkObject
 vtkObject ()
 
virtual ~vtkObject ()
 
virtual void RegisterInternal (vtkObjectBase *, int check)
 
virtual void UnRegisterInternal (vtkObjectBase *, int check)
 
void InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL)
 
void InternalReleaseFocus ()
 
- Protected Member Functions inherited from vtkObjectBase
 vtkObjectBase ()
 
virtual ~vtkObjectBase ()
 
virtual void CollectRevisions (ostream &os)
 
 vtkObjectBase (const vtkObjectBase &)
 
void operator= (const vtkObjectBase &)
 

Protected Attributes

Implementation * Storage
 
- Protected Attributes inherited from vtkMutableDirectedGraph
vtkGraphEdgeGraphEdge
 
- Protected Attributes inherited from vtkGraph
vtkGraphInternalsInternals
 
vtkDistributedGraphHelperDistributedHelper
 
vtkGraphEdgePoints * EdgePoints
 
double Bounds [6]
 
vtkTimeStamp ComputeTime
 
vtkDataSetAttributesVertexData
 
vtkDataSetAttributesEdgeData
 
vtkPointsPoints
 
vtkIdTypeArrayEdgeList
 
- Protected Attributes inherited from vtkDataObject
vtkFieldDataFieldData
 
vtkSourceSource
 
int DataReleased
 
vtkTimeStamp UpdateTime
 
vtkInformationInformation
 
vtkInformationPipelineInformation
 
- Protected Attributes inherited from vtkObject
unsigned char Debug
 
vtkTimeStamp MTime
 
vtkSubjectHelper * SubjectHelper
 
- Protected Attributes inherited from vtkObjectBase
int ReferenceCount
 
vtkWeakPointerBase ** WeakPointers
 

Additional Inherited Members

- Protected Types inherited from vtkDataObject
typedef
vtkStreamingDemandDrivenPipeline 
SDDP
 
- Static Protected Attributes inherited from vtkGraph
static double DefaultPoint [3]
 
- Static Protected Attributes inherited from vtkDataObject
static const char AssociationNames [NUMBER_OF_ASSOCIATIONS][55]
 

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

Member Typedef Documentation

Definition at line 136 of file vtkReebGraph.h.

Member Enumeration Documentation

anonymous enum
Enumerator
ERR_INCORRECT_FIELD 
ERR_NO_SUCH_FIELD 
ERR_NOT_A_SIMPLICIAL_MESH 

Definition at line 140 of file vtkReebGraph.h.

Constructor & Destructor Documentation

vtkReebGraph::vtkReebGraph ( )
protected
vtkReebGraph::~vtkReebGraph ( )
protected

Member Function Documentation

static vtkReebGraph* vtkReebGraph::New ( )
static
virtual const char* vtkReebGraph::GetClassName ( )
virtual

Reimplemented from vtkMutableDirectedGraph.

static int vtkReebGraph::IsTypeOf ( const char *  type)
static
virtual int 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.

static vtkReebGraph* vtkReebGraph::SafeDownCast ( vtkObject o)
static
void vtkReebGraph::PrintSelf ( ostream &  os,
vtkIndent  indent 
)
virtual

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.

void vtkReebGraph::PrintNodeData ( ostream &  os,
vtkIndent  indent 
)
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).

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.

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.

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.

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.

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.

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.

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.

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.

void vtkReebGraph::DeepCopy ( vtkDataObject obj)
virtual

Deep copies the data object into this graph. If it is an incompatible graph, reports an error.

Reimplemented from vtkGraph.

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 NULL, 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.

void vtkReebGraph::Set ( vtkMutableDirectedGraph g)

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

Member Data Documentation

Implementation* vtkReebGraph::Storage
protected

Definition at line 280 of file vtkReebGraph.h.


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