# encoding: utf-8
# module vtkmodules.vtkCommonDataModel
# from C:\Users\xukai\Downloads\发票2\venv\Lib\site-packages\vtkmodules\vtkCommonDataModel.cp311-win_amd64.pyd
# by generator 1.147
# no doc

# imports
import vtkmodules.vtkCommonCore as __vtkmodules_vtkCommonCore
import vtkmodules.vtkCommonMath as __vtkmodules_vtkCommonMath
import vtkmodules.vtkCommonTransforms as __vtkmodules_vtkCommonTransforms


from .vtkMutableDirectedGraph import vtkMutableDirectedGraph

class vtkReebGraph(vtkMutableDirectedGraph):
    """
    vtkReebGraph - Reeb graph computation for PL scalar fields.
    
    Superclass: vtkMutableDirectedGraph
    
    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
    """
    def Build(self, mesh, scalarField): # real signature unknown; restored from __doc__
        """
        Build(self, mesh:vtkPolyData, scalarField:vtkDataArray) -> int
        C++: int Build(vtkPolyData *mesh, vtkDataArray *scalarField)
        Build(self, mesh:vtkUnstructuredGrid, scalarField:vtkDataArray)
            -> int
        C++: int Build(vtkUnstructuredGrid *mesh,
            vtkDataArray *scalarField)
        Build(self, mesh:vtkPolyData, scalarFieldId:int) -> int
        C++: int Build(vtkPolyData *mesh, vtkIdType scalarFieldId)
        Build(self, mesh:vtkUnstructuredGrid, scalarFieldId:int) -> int
        C++: int Build(vtkUnstructuredGrid *mesh, vtkIdType scalarFieldId)
        Build(self, mesh:vtkPolyData, scalarFieldName:str) -> int
        C++: int Build(vtkPolyData *mesh, const char *scalarFieldName)
        Build(self, mesh:vtkUnstructuredGrid, scalarFieldName:str) -> int
        C++: int Build(vtkUnstructuredGrid *mesh,
            const char *scalarFieldName)
        
        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).
        """
        return 0

    def CloseStream(self): # real signature unknown; restored from __doc__
        """
        CloseStream(self) -> None
        C++: 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.
        """
        pass

    def DeepCopy(self, src): # real signature unknown; restored from __doc__
        """
        DeepCopy(self, src:vtkDataObject) -> None
        C++: void DeepCopy(vtkDataObject *src) override;
        
        Implements deep copy
        """
        pass

    def GetDataObjectType(self): # real signature unknown; restored from __doc__
        """
        GetDataObjectType(self) -> int
        C++: int GetDataObjectType() override;
        
        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
        """
        return 0

    def GetNumberOfGenerationsFromBase(self, type): # real signature unknown; restored from __doc__
        """
        GetNumberOfGenerationsFromBase(self, type:str) -> int
        C++: vtkIdType GetNumberOfGenerationsFromBase(const char *type)
            override;
        
        Given the name of a base class of this class type, return the
        distance of inheritance between this class type and the named
        class (how many generations of inheritance are there between this
        class and the named class). If the named class is not in this
        class's inheritance tree, return a negative value. Valid
        responses will always be nonnegative. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        return 0

    def GetNumberOfGenerationsFromBaseType(self, type): # real signature unknown; restored from __doc__
        """
        GetNumberOfGenerationsFromBaseType(type:str) -> int
        C++: static vtkIdType GetNumberOfGenerationsFromBaseType(
            const char *type)
        
        Given a the name of a base class of this class type, return the
        distance of inheritance between this class type and the named
        class (how many generations of inheritance are there between this
        class and the named class). If the named class is not in this
        class's inheritance tree, return a negative value. Valid
        responses will always be nonnegative. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        return 0

    def IsA(self, type): # real signature unknown; restored from __doc__
        """
        IsA(self, type:str) -> int
        C++: vtkTypeBool IsA(const char *type) override;
        
        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.
        """
        return 0

    def IsTypeOf(self, type): # real signature unknown; restored from __doc__
        """
        IsTypeOf(type:str) -> int
        C++: static vtkTypeBool IsTypeOf(const char *type)
        
        Return 1 if this class type 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.
        """
        return 0

    def NewInstance(self): # real signature unknown; restored from __doc__
        """
        NewInstance(self) -> vtkReebGraph
        C++: vtkReebGraph *NewInstance()
        """
        return vtkReebGraph

    def SafeDownCast(self, o): # real signature unknown; restored from __doc__
        """
        SafeDownCast(o:vtkObjectBase) -> vtkReebGraph
        C++: static vtkReebGraph *SafeDownCast(vtkObjectBase *o)
        """
        return vtkReebGraph

    def Set(self, g): # real signature unknown; restored from __doc__
        """
        Set(self, g:vtkMutableDirectedGraph) -> None
        C++: void Set(vtkMutableDirectedGraph *g)
        
        Use a pre-defined Reeb graph (post-processing). Use with caution!
        """
        pass

    def Simplify(self, simplificationThreshold, simplificationMetric): # real signature unknown; restored from __doc__
        """
        Simplify(self, simplificationThreshold:float,
            simplificationMetric:vtkReebGraphSimplificationMetric) -> int
        C++: int 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.
        """
        return 0

    def StreamTetrahedron(self, vertex0Id, scalar0, vertex1Id, scalar1, vertex2Id, scalar2, vertex3Id, scalar3): # real signature unknown; restored from __doc__
        """
        StreamTetrahedron(self, vertex0Id:int, scalar0:float,
            vertex1Id:int, scalar1:float, vertex2Id:int, scalar2:float,
            vertex3Id:int, scalar3:float) -> int
        C++: int 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 vertexNId is the Id of the vertex in the
        vtkUnstructuredGrid structure and scalarN is the corresponding
        scalar field value.
        
        IMPORTANT: The stream _must_ be finalized with the "CloseStream"
        call.
        """
        return 0

    def StreamTriangle(self, vertex0Id, scalar0, vertex1Id, scalar1, vertex2Id, scalar2): # real signature unknown; restored from __doc__
        """
        StreamTriangle(self, vertex0Id:int, scalar0:float, vertex1Id:int,
            scalar1:float, vertex2Id:int, scalar2:float) -> int
        C++: int 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 vertexNId is the Id of the vertex in the vtkPolyData
          structure
        * and scalarN is the corresponding scalar field value.
        
        * IMPORTANT: The stream _must_ be finalized with the
          "CloseStream" call.
        """
        return 0

    def __delattr__(self, *args, **kwargs): # real signature unknown
        """ Implement delattr(self, name). """
        pass

    def __getattribute__(self, *args, **kwargs): # real signature unknown
        """ Return getattr(self, name). """
        pass

    def __init__(self, *args, **kwargs): # real signature unknown
        pass

    @staticmethod # known case of __new__
    def __new__(*args, **kwargs): # real signature unknown
        """ Create and return a new object.  See help(type) for accurate signature. """
        pass

    def __repr__(self, *args, **kwargs): # real signature unknown
        """ Return repr(self). """
        pass

    def __setattr__(self, *args, **kwargs): # real signature unknown
        """ Implement setattr(self, name, value). """
        pass

    def __str__(self, *args, **kwargs): # real signature unknown
        """ Return str(self). """
        pass

    __this__ = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    """Pointer to the C++ object."""


    ERR_INCORRECT_FIELD = -1
    ERR_NOT_A_SIMPLICIAL_MESH = -3
    ERR_NO_SUCH_FIELD = -2
    __dict__ = None # (!) real value is 'mappingproxy({\'__vtkname__\': \'vtkReebGraph\', \'IsTypeOf\': <method \'IsTypeOf\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'IsA\': <method \'IsA\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'SafeDownCast\': <method \'SafeDownCast\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'NewInstance\': <method \'NewInstance\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'GetNumberOfGenerationsFromBaseType\': <method \'GetNumberOfGenerationsFromBaseType\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'GetNumberOfGenerationsFromBase\': <method \'GetNumberOfGenerationsFromBase\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'GetDataObjectType\': <method \'GetDataObjectType\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'Build\': <method \'Build\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'StreamTriangle\': <method \'StreamTriangle\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'StreamTetrahedron\': <method \'StreamTetrahedron\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'CloseStream\': <method \'CloseStream\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'DeepCopy\': <method \'DeepCopy\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'Simplify\': <method \'Simplify\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'Set\': <method \'Set\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'ERR_INCORRECT_FIELD\': -1, \'ERR_NO_SUCH_FIELD\': -2, \'ERR_NOT_A_SIMPLICIAL_MESH\': -3, \'__new__\': <built-in method __new__ of type object at 0x00007FF81D64A9C0>, \'__repr__\': <slot wrapper \'__repr__\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'__str__\': <slot wrapper \'__str__\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'__getattribute__\': <slot wrapper \'__getattribute__\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'__setattr__\': <slot wrapper \'__setattr__\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'__delattr__\': <slot wrapper \'__delattr__\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'__dict__\': <attribute \'__dict__\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'__this__\': <attribute \'__this__\' of \'vtkmodules.vtkCommonDataModel.vtkReebGraph\' objects>, \'__doc__\': \'vtkReebGraph - Reeb graph computation for PL scalar fields.\\n\\nSuperclass: vtkMutableDirectedGraph\\n\\nvtkReebGraph is a class that computes a Reeb graph given a PL scalar\\nfield (vtkDataArray) defined on a simplicial mesh. A Reeb graph is a\\nconcise representation of the connectivity evolution of the level\\nsets of a scalar function.\\n\\nIt is particularly useful in visualization (optimal seed set\\ncomputation, fast flexible isosurface extraction, automated transfer\\nfunction design, feature-driven visualization, etc.) and computer\\ngraphics (shape deformation, shape matching, shape compression,\\netc.).\\n\\nReference: "Sur les points singuliers d\\\'une forme de Pfaff\\ncompletement integrable ou d\\\'une fonction numerique", G. Reeb,\\nComptes-rendus de l\\\'Academie des Sciences, 222:847-849, 1946.\\n\\nvtkReebGraph implements one of the latest and most robust Reeb graph\\ncomputation algorithms.\\n\\nReference: "Robust on-line computation of Reeb graphs: simplicity and\\nspeed", V. Pascucci, G. Scorzelli, P.-T. Bremer, and A. Mascarenhas,\\nACM Transactions on Graphics, Proc. of SIGGRAPH 2007.\\n\\nvtkReebGraph provides methods for computing multi-resolution\\ntopological hierarchies through topological simplification.\\nTopoligical simplification can be either driven by persistence\\nhomology concepts (default behavior) or by application specific\\nmetrics (see vtkReebGraphSimplificationMetric). In the latter case,\\ndesigning customized simplification metric evaluation algorithms\\nenables the user to control the definition of what should be\\nconsidered as noise or signal in the topological filtering process.\\n\\nReferences: "Topological persistence and simplification", H.\\nEdelsbrunner, D. Letscher, and A. Zomorodian, Discrete Computational\\nGeometry, 28:511-533, 2002.\\n\\n"Extreme elevation on a 2-manifold", P.K. Agarwal, H. Edelsbrunner,\\nJ. Harer, and Y. Wang, ACM Symposium on Computational Geometry, pp.\\n357-365, 2004.\\n\\n"Simplifying flexible isosurfaces using local geometric measures", H.\\nCarr, J. Snoeyink, M van de Panne, IEEE Visualization, 497-504, 2004\\n\\n"Loop surgery for volumetric meshes: Reeb graphs reduced to contour\\ntrees", J. Tierny, A. Gyulassy, E. Simon, V. Pascucci, IEEE Trans. on\\nVis. and Comp. Graph. (Proc of IEEE VIS), 15:1177-1184, 2009.\\n\\nReeb graphs can be computed from 2D data (vtkPolyData, with triangles\\nonly) or 3D data (vtkUnstructuredGrid, with tetrahedra only),\\nsequentially (see the "Build" calls) or in streaming (see the\\n"StreamTriangle" and "StreamTetrahedron" calls).\\n\\nvtkReebGraph inherits from vtkMutableDirectedGraph.\\n\\nEach vertex of a vtkReebGraph object represents a critical point of\\nthe scalar field where the connectivity of the related level set\\nchanges (creation, deletion, split or merge of connected components).\\nA vtkIdTypeArray (called "Vertex Ids") is associated with the\\nVertexData of a vtkReebGraph object, in order to retrieve if\\nnecessary the exact Ids of the corresponding vertices in the input\\nmesh.\\n\\nThe edges of a vtkReebGraph object represent the regions of the input\\nmesh separated by the critical contours of the field, and where the\\nconnectivity of the input field does not change. A vtkVariantArray is\\nassociated with the EdgeDta of a vtkReebGraph object and each entry\\nof this array is a vtkAbstractArray containing the Ids of the\\nvertices of those regions, sorted by function value (useful for\\nflexible isosurface extraction or level set signature computation,\\nfor instance).\\n\\nSee Graphics/Testing/Cxx/TestReebGraph.cxx for examples of traversals\\nand typical usages (customized simplification, skeletonization,\\ncontour spectra,\\n etc.) of a vtkReebGraph object.\\n\\n@sa\\n     vtkReebGraphSimplificationMetric\\n     vtkPolyDataToReebGraphFilter\\n     vtkUnstructuredGridToReebGraphFilter\\n     vtkReebGraphSimplificationFilter\\n     vtkReebGraphSurfaceSkeletonFilter\\n     vtkReebGraphVolumeSkeletonFilter\\n     vtkAreaContourSpectrumFilter\\n     vtkVolumeContourSpectrumFilter\\n\\n@par Tests:\\n     Graphics/Testing/Cxx/TestReebGraph.cxx\\n\\n\'})'
    __vtkname__ = 'vtkReebGraph'


