ActiViz .NET  5.8.0
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Private Member Functions | Static Private Member Functions
Kitware.VTK.vtkReebGraph Class Reference

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

Inheritance diagram for Kitware.VTK.vtkReebGraph:
[legend]
Collaboration diagram for Kitware.VTK.vtkReebGraph:
[legend]

List of all members.

Public Types

enum  ERR_INCORRECT_FIELD_WrapperEnum { ERR_INCORRECT_FIELD = -1, ERR_NOT_A_SIMPLICIAL_MESH = -3, ERR_NO_SUCH_FIELD = -2 }
 Undocumented Block. More...

Public Member Functions

 vtkReebGraph (IntPtr rawCppThis, bool callDisposalMethod, bool strong)
 Automatically generated constructor - called from generated code. DO NOT call directly.
 vtkReebGraph ()
 Undocumented Block.
int Build (vtkPolyData mesh, vtkDataArray scalarField)
 Build the Reeb graph of the field 'scalarField' defined on the surface mesh 'mesh'.
int Build (vtkUnstructuredGrid mesh, vtkDataArray scalarField)
 Build the Reeb graph of the field 'scalarField' defined on the volume mesh 'mesh'.
int Build (vtkPolyData mesh, int scalarFieldId)
 Build the Reeb graph of the field given by the Id 'scalarFieldId', defined on the surface mesh 'mesh'.
int Build (vtkUnstructuredGrid mesh, int scalarFieldId)
 Build the Reeb graph of the field given by the Id 'scalarFieldId', defined on the volume mesh 'mesh'.
int Build (vtkPolyData mesh, string scalarFieldName)
 Build the Reeb graph of the field given by the name 'scalarFieldName', defined on the surface mesh 'mesh'.
int Build (vtkUnstructuredGrid mesh, string scalarFieldName)
 Build the Reeb graph of the field given by the name 'scalarFieldName', defined on the volume mesh 'mesh'.
void 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.
override void DeepCopy (vtkDataObject src)
 Descrition: Implements deep copy.
override int IsA (string type)
 Undocumented Block.
new vtkReebGraph NewInstance ()
 Undocumented Block.
void Set (vtkMutableDirectedGraph g)
 Use a pre-defined Reeb graph (post-processing). Use with caution!
int Simplify (double simplificationThreshold, vtkReebGraphSimplificationMetric simplificationMetric)
 Simplify the Reeb graph given a threshold 'simplificationThreshold' (between 0 and 1).
int StreamTetrahedron (int vertex0Id, double scalar0, int vertex1Id, double scalar1, int vertex2Id, double scalar2, int 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.
int StreamTriangle (int vertex0Id, double scalar0, int vertex1Id, double scalar1, int 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.

Static Public Member Functions

static new vtkReebGraph New ()
 Undocumented Block.
static new int IsTypeOf (string type)
 Undocumented Block.
static new vtkReebGraph SafeDownCast (vtkObjectBase o)
 Undocumented Block.

Public Attributes

new const string MRFullTypeName = "Kitware.VTK.vtkReebGraph"
 Automatically generated type registration mechanics.

Static Public Attributes

static new readonly string MRClassNameKey = "12vtkReebGraph"
 Automatically generated type registration mechanics.

Protected Member Functions

override void Dispose (bool disposing)
 Automatically generated protected Dispose method - called from public Dispose or the C# destructor. DO NOT call directly.

Private Member Functions

static internal IntPtr vtkReebGraph_New (ref uint mteStatus, ref uint mteIndex, ref uint rawRefCount)
static internal int vtkReebGraph_Build_01 (HandleRef pThis, HandleRef mesh, HandleRef scalarField)
static internal int vtkReebGraph_Build_02 (HandleRef pThis, HandleRef mesh, HandleRef scalarField)
static internal int vtkReebGraph_Build_03 (HandleRef pThis, HandleRef mesh, int scalarFieldId)
static internal int vtkReebGraph_Build_04 (HandleRef pThis, HandleRef mesh, int scalarFieldId)
static internal int vtkReebGraph_Build_05 (HandleRef pThis, HandleRef mesh, string scalarFieldName)
static internal int vtkReebGraph_Build_06 (HandleRef pThis, HandleRef mesh, string scalarFieldName)
static internal void vtkReebGraph_CloseStream_07 (HandleRef pThis)
static internal void vtkReebGraph_DeepCopy_08 (HandleRef pThis, HandleRef src)
static internal int vtkReebGraph_IsA_09 (HandleRef pThis, string type)
static internal int vtkReebGraph_IsTypeOf_10 (string type)
static internal IntPtr vtkReebGraph_NewInstance_12 (HandleRef pThis, ref uint mteStatus, ref uint mteIndex, ref uint rawRefCount)
static internal IntPtr vtkReebGraph_SafeDownCast_13 (HandleRef o, ref uint mteStatus, ref uint mteIndex, ref uint rawRefCount)
static internal void vtkReebGraph_Set_14 (HandleRef pThis, HandleRef g)
static internal int vtkReebGraph_Simplify_15 (HandleRef pThis, double simplificationThreshold, HandleRef simplificationMetric)
static internal int vtkReebGraph_StreamTetrahedron_16 (HandleRef pThis, int vertex0Id, double scalar0, int vertex1Id, double scalar1, int vertex2Id, double scalar2, int vertex3Id, double scalar3)
static internal int vtkReebGraph_StreamTriangle_17 (HandleRef pThis, int vertex0Id, double scalar0, int vertex1Id, double scalar1, int vertex2Id, double scalar2)

Static Private Member Functions

static vtkReebGraph ()
 Automatically generated type registration mechanics.

Detailed Description

vtkReebGraph - Reeb graph computation for PL scalar fields.

Description 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.

Tests Graphics/Testing/Cxx/TestReebGraph.cxx

vtkReebGraphSimplificationMetric vtkPolyDataToReebGraphFilter vtkUnstructuredGridToReebGraphFilter vtkReebGraphSimplificationFilter vtkReebGraphSurfaceSkeletonFilter vtkReebGraphVolumeSkeletonFilter vtkAreaContourSpectrumFilter vtkVolumeContourSpectrumFilter


Member Enumeration Documentation

Undocumented Block.

Enumerator:
ERR_INCORRECT_FIELD 

enum member

ERR_NOT_A_SIMPLICIAL_MESH 

enum member

ERR_NO_SUCH_FIELD 

enum member


Constructor & Destructor Documentation

static Kitware.VTK.vtkReebGraph.vtkReebGraph ( ) [static, private]

Automatically generated type registration mechanics.

Kitware.VTK.vtkReebGraph.vtkReebGraph ( IntPtr  rawCppThis,
bool  callDisposalMethod,
bool  strong 
)

Automatically generated constructor - called from generated code. DO NOT call directly.

Undocumented Block.


Member Function Documentation

int Kitware.VTK.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 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 Kitware.VTK.vtkReebGraph.Build ( vtkPolyData  mesh,
int  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 Kitware.VTK.vtkReebGraph.Build ( vtkUnstructuredGrid  mesh,
int  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 Kitware.VTK.vtkReebGraph.Build ( vtkPolyData  mesh,
string  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 Kitware.VTK.vtkReebGraph.Build ( vtkUnstructuredGrid  mesh,
string  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.

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.

override void Kitware.VTK.vtkReebGraph.DeepCopy ( vtkDataObject  src) [virtual]

Descrition: Implements deep copy.

Reimplemented from Kitware.VTK.vtkGraph.

override void Kitware.VTK.vtkReebGraph.Dispose ( bool  disposing) [protected]

Automatically generated protected Dispose method - called from public Dispose or the C# destructor. DO NOT call directly.

Reimplemented from Kitware.VTK.vtkMutableDirectedGraph.

override int Kitware.VTK.vtkReebGraph.IsA ( string  type) [virtual]

Undocumented Block.

Reimplemented from Kitware.VTK.vtkMutableDirectedGraph.

static new int Kitware.VTK.vtkReebGraph.IsTypeOf ( string  type) [static]

Undocumented Block.

Reimplemented from Kitware.VTK.vtkMutableDirectedGraph.

static new vtkReebGraph Kitware.VTK.vtkReebGraph.New ( ) [static]

Undocumented Block.

Reimplemented from Kitware.VTK.vtkMutableDirectedGraph.

Undocumented Block.

Reimplemented from Kitware.VTK.vtkMutableDirectedGraph.

Undocumented Block.

Reimplemented from Kitware.VTK.vtkMutableDirectedGraph.

Here is the call graph for this function:

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

int Kitware.VTK.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.

int Kitware.VTK.vtkReebGraph.StreamTetrahedron ( int  vertex0Id,
double  scalar0,
int  vertex1Id,
double  scalar1,
int  vertex2Id,
double  scalar2,
int  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 vertex<i>Id is the Id of the vertex in the vtkUnstructuredGrid structure and scalar<i> is the corresponding scalar field value.

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

int Kitware.VTK.vtkReebGraph.StreamTriangle ( int  vertex0Id,
double  scalar0,
int  vertex1Id,
double  scalar1,
int  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 vertex<i>Id is the Id of the vertex in the vtkPolyData structure and scalar<i> is the corresponding scalar field value.

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

static internal int Kitware.VTK.vtkReebGraph.vtkReebGraph_Build_01 ( HandleRef  pThis,
HandleRef  mesh,
HandleRef  scalarField 
) [private]
static internal int Kitware.VTK.vtkReebGraph.vtkReebGraph_Build_02 ( HandleRef  pThis,
HandleRef  mesh,
HandleRef  scalarField 
) [private]
static internal int Kitware.VTK.vtkReebGraph.vtkReebGraph_Build_03 ( HandleRef  pThis,
HandleRef  mesh,
int  scalarFieldId 
) [private]
static internal int Kitware.VTK.vtkReebGraph.vtkReebGraph_Build_04 ( HandleRef  pThis,
HandleRef  mesh,
int  scalarFieldId 
) [private]
static internal int Kitware.VTK.vtkReebGraph.vtkReebGraph_Build_05 ( HandleRef  pThis,
HandleRef  mesh,
string  scalarFieldName 
) [private]
static internal int Kitware.VTK.vtkReebGraph.vtkReebGraph_Build_06 ( HandleRef  pThis,
HandleRef  mesh,
string  scalarFieldName 
) [private]
static internal void Kitware.VTK.vtkReebGraph.vtkReebGraph_CloseStream_07 ( HandleRef  pThis) [private]
static internal void Kitware.VTK.vtkReebGraph.vtkReebGraph_DeepCopy_08 ( HandleRef  pThis,
HandleRef  src 
) [private]
static internal int Kitware.VTK.vtkReebGraph.vtkReebGraph_IsA_09 ( HandleRef  pThis,
string  type 
) [private]
static internal int Kitware.VTK.vtkReebGraph.vtkReebGraph_IsTypeOf_10 ( string  type) [private]
static internal IntPtr Kitware.VTK.vtkReebGraph.vtkReebGraph_New ( ref uint  mteStatus,
ref uint  mteIndex,
ref uint  rawRefCount 
) [private]
static internal IntPtr Kitware.VTK.vtkReebGraph.vtkReebGraph_NewInstance_12 ( HandleRef  pThis,
ref uint  mteStatus,
ref uint  mteIndex,
ref uint  rawRefCount 
) [private]
static internal IntPtr Kitware.VTK.vtkReebGraph.vtkReebGraph_SafeDownCast_13 ( HandleRef  o,
ref uint  mteStatus,
ref uint  mteIndex,
ref uint  rawRefCount 
) [private]
static internal void Kitware.VTK.vtkReebGraph.vtkReebGraph_Set_14 ( HandleRef  pThis,
HandleRef  g 
) [private]
static internal int Kitware.VTK.vtkReebGraph.vtkReebGraph_Simplify_15 ( HandleRef  pThis,
double  simplificationThreshold,
HandleRef  simplificationMetric 
) [private]
static internal int Kitware.VTK.vtkReebGraph.vtkReebGraph_StreamTetrahedron_16 ( HandleRef  pThis,
int  vertex0Id,
double  scalar0,
int  vertex1Id,
double  scalar1,
int  vertex2Id,
double  scalar2,
int  vertex3Id,
double  scalar3 
) [private]
static internal int Kitware.VTK.vtkReebGraph.vtkReebGraph_StreamTriangle_17 ( HandleRef  pThis,
int  vertex0Id,
double  scalar0,
int  vertex1Id,
double  scalar1,
int  vertex2Id,
double  scalar2 
) [private]

Member Data Documentation

new readonly string Kitware.VTK.vtkReebGraph.MRClassNameKey = "12vtkReebGraph" [static]

Automatically generated type registration mechanics.

Reimplemented from Kitware.VTK.vtkMutableDirectedGraph.

new const string Kitware.VTK.vtkReebGraph.MRFullTypeName = "Kitware.VTK.vtkReebGraph"

Automatically generated type registration mechanics.

Reimplemented from Kitware.VTK.vtkMutableDirectedGraph.


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