"""
This type stub file was generated by pyright.
"""

import vtkmodules.vtkCommonExecutionModel as __vtkmodules_vtkCommonExecutionModel

class vtkUnstructuredGridQuadricDecimation(__vtkmodules_vtkCommonExecutionModel.vtkUnstructuredGridAlgorithm):
    """
    vtkUnstructuredGridQuadricDecimation - reduce the number of
    tetrahedra in a mesh
    
    Superclass: vtkUnstructuredGridAlgorithm
    
    vtkUnstructuredGridQuadricDecimation is a class that simplifies
    tetrahedral meshes using randomized multiple choice edge collapses.
    The input to this filter is a vtkUnstructuredGrid object with a
    single scalar field (specifying in the ScalarsName attribute). Users
    can determine the size of the output mesh by either setting the value
    of TargetReduction or NumberOfTetsOutput. The BoundaryWeight can be
    set to control how well the mesh boundary should be preserved. The
    implementation uses Michael Garland's generalized Quadric Error
    Metrics, the Corner Table representation and the Standard Conjugate
    Gradient Method to order the edge collapse sequence.
    
    Instead of using the traditional priority queue, the algorithm uses a
    randomized approach to yield faster performance with comparable
    quality. At each step, a set of 8 random candidate edges are examined
    to select the best edge to collapse. This number can also be changed
    by users through NumberOfCandidates.
    
    For more information as well as the streaming version of this
    algorithm see:
    
    "Streaming Simplification of Tetrahedral Meshes" by H. T. Vo, S. P.
    Callahan, P. Lindstrom, V. Pascucci and C. T. Silva, IEEE
    Transactions on Visualization and Computer Graphics, 13(1):145-155,
    2007.
    
    @par Acknowledgments: This code was developed by Huy T. Vo under the
    supervision of Prof. Claudio T. Silva. The code also contains
    contributions from Peter Lindstrom and Steven P. Callahan.
    
    @par Acknowledgments: The work was supported by grants, contracts,
    and gifts from the National Science Foundation, the Department of
    Energy and IBM.
    """
    def GetAutoAddCandidates(self):
        """
        V.GetAutoAddCandidates() -> int
        C++: virtual int GetAutoAddCandidates()
        
        Enable(1)/Disable(0) the feature of temporarily doubling the
        number of candidates for each randomized set if the quadric error
        was significantly increased over the last edge collapse, i.e. if
        the ratio between the error difference and the last error is over
        some threshold. Basically, we are trying to make up for cases
        when random selection returns so many 'bad' edges. By doing this
        we can achieve a higher quality output with much less time than
        just double the NumberOfCandidates. Default is Enabled(1)
        """
        ...
    
    def GetAutoAddCandidatesThreshold(self):
        """
        V.GetAutoAddCandidatesThreshold() -> float
        C++: virtual double GetAutoAddCandidatesThreshold()
        
        Set/Get the threshold that decides when to double the set size.
        Default is 0.4.
        """
        ...
    
    def GetBoundaryWeight(self):
        """
        V.GetBoundaryWeight() -> float
        C++: virtual double GetBoundaryWeight()
        
        Set/Get the weight of the boundary on the quadric metrics. The
        larger the number, the better the boundary is preserved.
        """
        ...
    
    def GetNumberOfCandidates(self):
        """
        V.GetNumberOfCandidates() -> int
        C++: virtual int GetNumberOfCandidates()
        
        Set/Get the number of candidates selected for each randomized set
        before performing an edge collapse. Increasing this number can
        help producing higher quality output but it will be slower.
        Default is 8.
        """
        ...
    
    def GetNumberOfEdgesToDecimate(self):
        """
        V.GetNumberOfEdgesToDecimate() -> int
        C++: virtual int GetNumberOfEdgesToDecimate()
        
        Set/Get the desired number of edge to collapse
        """
        ...
    
    def GetNumberOfGenerationsFromBase(self, string):
        """
        V.GetNumberOfGenerationsFromBase(string) -> int
        C++: vtkIdType GetNumberOfGenerationsFromBase(const char *type)
            override;
        
        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.
        """
        ...
    
    def GetNumberOfGenerationsFromBaseType(self, string):
        """
        V.GetNumberOfGenerationsFromBaseType(string) -> 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.
        """
        ...
    
    def GetNumberOfTetsOutput(self):
        """
        V.GetNumberOfTetsOutput() -> int
        C++: virtual int GetNumberOfTetsOutput()
        
        Set/Get the desired number of tetrahedra to be outputted
        """
        ...
    
    def GetScalarsName(self):
        """
        V.GetScalarsName() -> string
        C++: virtual char *GetScalarsName()
        
        Set/Get the scalar field name used for simplification
        """
        ...
    
    def GetTargetReduction(self):
        """
        V.GetTargetReduction() -> float
        C++: virtual double GetTargetReduction()
        
        Set/Get the desired reduction (expressed as a fraction of the
        original number of tetrehedra)
        """
        ...
    
    def IsA(self, string):
        """
        V.IsA(string) -> 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.
        """
        ...
    
    def IsTypeOf(self, string):
        """
        V.IsTypeOf(string) -> 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.
        """
        ...
    
    def NewInstance(self):
        """
        V.NewInstance() -> vtkUnstructuredGridQuadricDecimation
        C++: vtkUnstructuredGridQuadricDecimation *NewInstance()
        """
        ...
    
    def SafeDownCast(self, vtkObjectBase):
        """
        V.SafeDownCast(vtkObjectBase)
            -> vtkUnstructuredGridQuadricDecimation
        C++: static vtkUnstructuredGridQuadricDecimation *SafeDownCast(
            vtkObjectBase *o)
        """
        ...
    
    def SetAutoAddCandidates(self, p_int):
        """
        V.SetAutoAddCandidates(int)
        C++: virtual void SetAutoAddCandidates(int _arg)
        
        Enable(1)/Disable(0) the feature of temporarily doubling the
        number of candidates for each randomized set if the quadric error
        was significantly increased over the last edge collapse, i.e. if
        the ratio between the error difference and the last error is over
        some threshold. Basically, we are trying to make up for cases
        when random selection returns so many 'bad' edges. By doing this
        we can achieve a higher quality output with much less time than
        just double the NumberOfCandidates. Default is Enabled(1)
        """
        ...
    
    def SetAutoAddCandidatesThreshold(self, p_float):
        """
        V.SetAutoAddCandidatesThreshold(float)
        C++: virtual void SetAutoAddCandidatesThreshold(double _arg)
        
        Set/Get the threshold that decides when to double the set size.
        Default is 0.4.
        """
        ...
    
    def SetBoundaryWeight(self, p_float):
        """
        V.SetBoundaryWeight(float)
        C++: virtual void SetBoundaryWeight(double _arg)
        
        Set/Get the weight of the boundary on the quadric metrics. The
        larger the number, the better the boundary is preserved.
        """
        ...
    
    def SetNumberOfCandidates(self, p_int):
        """
        V.SetNumberOfCandidates(int)
        C++: virtual void SetNumberOfCandidates(int _arg)
        
        Set/Get the number of candidates selected for each randomized set
        before performing an edge collapse. Increasing this number can
        help producing higher quality output but it will be slower.
        Default is 8.
        """
        ...
    
    def SetNumberOfEdgesToDecimate(self, p_int):
        """
        V.SetNumberOfEdgesToDecimate(int)
        C++: virtual void SetNumberOfEdgesToDecimate(int _arg)
        
        Set/Get the desired number of edge to collapse
        """
        ...
    
    def SetNumberOfTetsOutput(self, p_int):
        """
        V.SetNumberOfTetsOutput(int)
        C++: virtual void SetNumberOfTetsOutput(int _arg)
        
        Set/Get the desired number of tetrahedra to be outputted
        """
        ...
    
    def SetScalarsName(self, string):
        """
        V.SetScalarsName(string)
        C++: virtual void SetScalarsName(const char *_arg)
        
        Set/Get the scalar field name used for simplification
        """
        ...
    
    def SetTargetReduction(self, p_float):
        """
        V.SetTargetReduction(float)
        C++: virtual void SetTargetReduction(double _arg)
        
        Set/Get the desired reduction (expressed as a fraction of the
        original number of tetrehedra)
        """
        ...
    
    def __delattr__(self, *args, **kwargs):
        """ Implement delattr(self, name). """
        ...
    
    def __getattribute__(self, *args, **kwargs):
        """ Return getattr(self, name). """
        ...
    
    def __init__(self, *args, **kwargs) -> None:
        ...
    
    @staticmethod
    def __new__(*args, **kwargs):
        """ Create and return a new object.  See help(type) for accurate signature. """
        ...
    
    def __repr__(self, *args, **kwargs):
        """ Return repr(self). """
        ...
    
    def __setattr__(self, *args, **kwargs):
        """ Implement setattr(self, name, value). """
        ...
    
    def __str__(self, *args, **kwargs) -> str:
        """ Return str(self). """
        ...
    
    __this__ = ...
    NON_TETRAHEDRA = ...
    NO_CELLS = ...
    NO_ERROR = ...
    NO_SCALARS = ...
    __dict__ = ...
    __vtkname__ = ...


