vtkReebGraph

Struct vtkReebGraph 

Source
pub struct vtkReebGraph(/* private fields */);
Expand 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.

@sa vtkReebGraphSimplificationMetric vtkPolyDataToReebGraphFilter vtkUnstructuredGridToReebGraphFilter vtkReebGraphSimplificationFilter vtkReebGraphSurfaceSkeletonFilter vtkReebGraphVolumeSkeletonFilter vtkAreaContourSpectrumFilter vtkVolumeContourSpectrumFilter

@par Tests: Graphics/Testing/Cxx/TestReebGraph.cxx

Implementations§

Source§

impl vtkReebGraph

Source

pub fn new() -> Self

Creates a new vtkReebGraph wrapped inside vtkNew

Trait Implementations§

Source§

impl Default for vtkReebGraph

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Drop for vtkReebGraph

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.