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

import vtkmodules.vtkCommonCore as __vtkmodules_vtkCommonCore

class vtkCell(__vtkmodules_vtkCommonCore.vtkObject):
    """
    vtkCell - abstract class to specify cell behavior
    
    Superclass: vtkObject
    
    vtkCell is an abstract class that specifies the interfaces for data
    cells. Data cells are simple topological elements like points, lines,
    polygons, and tetrahedra of which visualization datasets are
    composed. In some cases visualization datasets may explicitly
    represent cells (e.g., vtkPolyData, vtkUnstructuredGrid), and in some
    cases, the datasets are implicitly composed of cells (e.g.,
    vtkStructuredPoints).
    
    @warning
    The #define VTK_CELL_SIZE is a parameter used to construct cells and
    provide a general guideline for controlling object execution. This
    parameter is not a hard boundary: you can create cells with more
    points.
    
    @sa
    vtkHexahedron vtkLine vtkPixel vtkPolyLine vtkPolyVertex vtkPolygon
    vtkQuad vtkTetra vtkTriangle vtkTriangleStrip vtkVertex vtkVoxel
    vtkWedge vtkPyramid
    """
    def CellBoundary(self, p_int, , vtkIdList):
        """
        V.CellBoundary(int, (float, float, float), vtkIdList) -> int
        C++: virtual int CellBoundary(int subId, const double pcoords[3],
            vtkIdList *pts)
        
        Given parametric coordinates of a point, return the closest cell
        boundary, and whether the point is inside or outside of the cell.
        The cell boundary is defined by a list of points (pts) that
        specify a face (3D cell), edge (2D cell), or vertex (1D cell). If
        the return value of the method is != 0, then the point is inside
        the cell.
        """
        ...
    
    def Clip(self, p_float, vtkDataArray, vtkIncrementalPointLocator, vtkCellArray, vtkPointData, vtkPointData_1, vtkCellData, p_int, vtkCellData_1, p_int_1):
        """
        V.Clip(float, vtkDataArray, vtkIncrementalPointLocator,
            vtkCellArray, vtkPointData, vtkPointData, vtkCellData, int,
            vtkCellData, int)
        C++: virtual void Clip(double value, vtkDataArray *cellScalars,
            vtkIncrementalPointLocator *locator,
            vtkCellArray *connectivity, vtkPointData *inPd,
            vtkPointData *outPd, vtkCellData *inCd, vtkIdType cellId,
            vtkCellData *outCd, int insideOut)
        
        Cut (or clip) the cell based on the input cellScalars and the
        specified value. The output of the clip operation will be one or
        more cells of the same topological dimension as the original
        cell. The flag insideOut controls what part of the cell is
        considered inside - normally cell points whose scalar value is
        greater than "value" are considered inside. If insideOut is on,
        this is reversed. Also, if the output cell data is non-nullptr,
        the cell data from the clipped cell is passed to the generated
        contouring primitives. (Note: the CopyAllocate() method must be
        invoked on both the output cell and point data. The cellId refers
        to the cell from which the cell data is copied.)
        """
        ...
    
    def Contour(self, p_float, vtkDataArray, vtkIncrementalPointLocator, vtkCellArray, vtkCellArray_1, vtkCellArray_2, vtkPointData, vtkPointData_1, vtkCellData, p_int, vtkCellData_1):
        """
        V.Contour(float, vtkDataArray, vtkIncrementalPointLocator,
            vtkCellArray, vtkCellArray, vtkCellArray, vtkPointData,
            vtkPointData, vtkCellData, int, vtkCellData)
        C++: virtual void Contour(double value, vtkDataArray *cellScalars,
             vtkIncrementalPointLocator *locator, vtkCellArray *verts,
            vtkCellArray *lines, vtkCellArray *polys, vtkPointData *inPd,
            vtkPointData *outPd, vtkCellData *inCd, vtkIdType cellId,
            vtkCellData *outCd)
        
        Generate contouring primitives. The scalar list cellScalars are
        scalar values at each cell point. The point locator is
        essentially a points list that merges points as they are inserted
        (i.e., prevents duplicates). Contouring primitives can be
        vertices, lines, or polygons. It is possible to interpolate point
        data along the edge by providing input and output point data - if
        outPd is nullptr, then no interpolation is performed. Also, if
        the output cell data is non-nullptr, the cell data from the
        contoured cell is passed to the generated contouring primitives.
        (Note: the CopyAllocate() method must be invoked on both the
        output cell and point data. The cellId refers to the cell from
        which the cell data is copied.)
        """
        ...
    
    def DeepCopy(self, vtkCell):
        """
        V.DeepCopy(vtkCell)
        C++: virtual void DeepCopy(vtkCell *c)
        
        Copy this cell by completely copying internal data structures.
        This is slower but safer than ShallowCopy().
        """
        ...
    
    def Derivatives(self, p_int, , float_tuple, p_int_1, *float):
        """
        V.Derivatives(int, (float, float, float), (float, ...), int,
            [float, ...])
        C++: virtual void Derivatives(int subId, const double pcoords[3],
            const double *values, int dim, double *derivs)
        
        Compute derivatives given cell subId and parametric coordinates.
        The values array is a series of data value(s) at the cell points.
        There is a one-to-one correspondence between cell point and data
        value(s). Dim is the number of data values per cell point. Derivs
        are derivatives in the x-y-z coordinate directions for each data
        value. Thus, if computing derivatives for a scalar function in a
        hexahedron, dim=1, 8 values are supplied, and 3 deriv values are
        returned (i.e., derivatives in x-y-z directions). On the other
        hand, if computing derivatives of velocity (vx,vy,vz) dim=3, 24
        values are supplied ((vx,vy,vz)1, (vx,vy,vz)2, ....()8), and 9
        deriv values are returned ((d(vx)/dx),(d(vx)/dy),(d(vx)/dz),
        (d(vy)/dx),(d(vy)/dy), (d(vy)/dz),
        (d(vz)/dx),(d(vz)/dy),(d(vz)/dz)).
        """
        ...
    
    def EvaluateLocation(self, p_int, , p_float=..., p_float=..., p_float=..., *args, **kwargs):
        """
        V.EvaluateLocation(int, (float, float, float), [float, float,
            float], [float, ...])
        C++: virtual void EvaluateLocation(int &subId,
            const double pcoords[3], double x[3], double *weights)
        
        Determine global coordinate (x[3]) from subId and parametric
        coordinates. Also returns interpolation weights. (The number of
        weights is equal to the number of points in the cell.)
        """
        ...
    
    def EvaluatePosition(self, , p_float=..., p_float=..., p_float=..., *args, **kwargs):
        """
        V.EvaluatePosition((float, float, float), [float, float, float],
            int, [float, float, float], float, [float, ...]) -> int
        C++: virtual int EvaluatePosition(const double x[3],
            double closestPoint[3], int &subId, double pcoords[3],
            double &dist2, double weights[])
        
        Given a point x[3] return inside(=1), outside(=0) cell, or (-1)
        computational problem encountered; evaluate parametric
        coordinates, sub-cell id (!=0 only if cell is composite),
        distance squared of point x[3] to cell (in particular, the
        sub-cell indicated), closest point on cell to x[3] (unless
        closestPoint is null, in which case, the closest point and dist2
        are not found), and interpolation weights in cell. (The number of
        weights is equal to the number of points defining the cell).
        Note: on rare occasions a -1 is returned from the method. This
        means that numerical error has occurred and all data returned
        from this method should be ignored. Also, inside/outside is
        determine parametrically. That is, a point is inside if it
        satisfies parametric limits. This can cause problems for cells of
        topological dimension 2 or less, since a point in 3D can project
        onto the cell within parametric limits but be "far" from the
        cell.  Thus the value dist2 may be checked to determine true
        in/out.
        """
        ...
    
    def GetBounds(self, p_float=..., p_float=..., p_float=..., p_float=..., p_float=..., p_float=...):
        """
        V.GetBounds([float, float, float, float, float, float])
        C++: void GetBounds(double bounds[6])
        V.GetBounds() -> (float, float, float, float, float, float)
        C++: double *GetBounds()
        
        Compute cell bounding box (xmin,xmax,ymin,ymax,zmin,zmax). Copy
        result into user provided array.
        """
        ...
    
    def GetCellDimension(self):
        """
        V.GetCellDimension() -> int
        C++: virtual int GetCellDimension()
        
        Return the topological dimensional of the cell (0,1,2, or 3).
        """
        ...
    
    def GetCellType(self):
        """
        V.GetCellType() -> int
        C++: virtual int GetCellType()
        
        Return the type of cell.
        """
        ...
    
    def GetEdge(self, p_int):
        """
        V.GetEdge(int) -> vtkCell
        C++: virtual vtkCell *GetEdge(int edgeId)
        
        Return the edge cell from the edgeId of the cell.
        """
        ...
    
    def GetFace(self, p_int):
        """
        V.GetFace(int) -> vtkCell
        C++: virtual vtkCell *GetFace(int faceId)
        
        Return the face cell from the faceId of the cell.
        """
        ...
    
    def GetFaces(self):
        """
        V.GetFaces() -> (int, ...)
        C++: virtual vtkIdType *GetFaces()
        """
        ...
    
    def GetLength2(self):
        """
        V.GetLength2() -> float
        C++: double GetLength2()
        
        Compute Length squared of cell (i.e., bounding box diagonal
        squared).
        """
        ...
    
    def GetNumberOfEdges(self):
        """
        V.GetNumberOfEdges() -> int
        C++: virtual int GetNumberOfEdges()
        
        Return the number of edges in the cell.
        """
        ...
    
    def GetNumberOfFaces(self):
        """
        V.GetNumberOfFaces() -> int
        C++: virtual int GetNumberOfFaces()
        
        Return the number of faces in the cell.
        """
        ...
    
    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 GetNumberOfPoints(self):
        """
        V.GetNumberOfPoints() -> int
        C++: vtkIdType GetNumberOfPoints()
        
        Return the number of points in the cell.
        """
        ...
    
    def GetParametricCenter(self, p_float=..., p_float=..., p_float=...):
        """
        V.GetParametricCenter([float, float, float]) -> int
        C++: virtual int GetParametricCenter(double pcoords[3])
        
        Return center of the cell in parametric coordinates.  Note that
        the parametric center is not always located at (0.5,0.5,0.5). The
        return value is the subId that the center is in (if a composite
        cell). If you want the center in x-y-z space, invoke the
        EvaluateLocation() method.
        """
        ...
    
    def GetParametricCoords(self):
        """
        V.GetParametricCoords() -> (float, ...)
        C++: virtual double *GetParametricCoords()
        
        Return a contiguous array of parametric coordinates of the points
        defining this cell. In other words, (px,py,pz, px,py,pz, etc..) 
        The coordinates are ordered consistent with the definition of the
        point ordering for the cell. This method returns a non-nullptr
        pointer when the cell is a primary type (i.e., IsPrimaryCell() is
        true). Note that 3D parametric coordinates are returned no matter
        what the topological dimension of the cell.
        """
        ...
    
    def GetParametricDistance(self, ):
        """
        V.GetParametricDistance((float, float, float)) -> float
        C++: virtual double GetParametricDistance(const double pcoords[3])
        
        Return the distance of the parametric coordinate provided to the
        cell. If inside the cell, a distance of zero is returned. This is
        used during picking to get the correct cell picked. (The
        tolerance will occasionally allow cells to be picked who are not
        really intersected "inside" the cell.)
        """
        ...
    
    def GetPointId(self, p_int):
        """
        V.GetPointId(int) -> int
        C++: vtkIdType GetPointId(int ptId)
        
        For cell point i, return the actual point id.
        """
        ...
    
    def GetPointIds(self):
        """
        V.GetPointIds() -> vtkIdList
        C++: vtkIdList *GetPointIds()
        
        Return the list of point ids defining the cell.
        """
        ...
    
    def GetPoints(self):
        """
        V.GetPoints() -> vtkPoints
        C++: vtkPoints *GetPoints()
        
        Get the point coordinates for the cell.
        """
        ...
    
    def Initialize(self, p_int, int_tuple, vtkPoints):
        """
        V.Initialize(int, (int, ...), vtkPoints)
        C++: void Initialize(int npts, const vtkIdType *pts, vtkPoints *p)
        V.Initialize(int, vtkPoints)
        C++: void Initialize(int npts, vtkPoints *p)
        V.Initialize()
        C++: virtual void Initialize()
        
        Initialize cell from outside with point ids and point coordinates
        specified.
        """
        ...
    
    def InterpolateDerivs(self, , *float):
        """
        V.InterpolateDerivs((float, float, float), [float, ...])
        C++: virtual void InterpolateDerivs(const double pcoords[3],
            double *derivs)
        """
        ...
    
    def InterpolateFunctions(self, , *float):
        """
        V.InterpolateFunctions((float, float, float), [float, ...])
        C++: virtual void InterpolateFunctions(const double pcoords[3],
            double *weight)
        
        Compute the interpolation functions/derivatives (aka shape
        functions/derivatives) No-ops at this level. Typically overridden
        in subclasses.
        """
        ...
    
    def IntersectWithLine(self, , , p_float_6, p_float_7, p_float=..., p_float=..., p_float=..., *args, **kwargs):
        """
        V.IntersectWithLine((float, float, float), (float, float, float),
            float, float, [float, float, float], [float, float, float],
            int) -> int
        C++: virtual int IntersectWithLine(const double p1[3],
            const double p2[3], double tol, double &t, double x[3],
            double pcoords[3], int &subId)
        
        Intersect with a ray. Return parametric coordinates (both line
        and cell) and global intersection coordinates, given ray
        definition p1[3], p2[3] and tolerance tol. The method returns
        non-zero value if intersection occurs. A parametric distance t
        between 0 and 1 along the ray representing the intersection
        point, the point coordinates x[3] in data coordinates and also
        pcoords[3] in parametric coordinates. subId is the index within
        the cell if a composed cell like a triangle strip.
        """
        ...
    
    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 IsExplicitCell(self):
        """
        V.IsExplicitCell() -> int
        C++: virtual int IsExplicitCell()
        
        Explicit cells require additional representational information
        beyond the usual cell type and connectivity list information.
        Most cells in VTK are implicit cells.
        """
        ...
    
    def IsLinear(self):
        """
        V.IsLinear() -> int
        C++: virtual int IsLinear()
        
        Non-linear cells require special treatment beyond the usual cell
        type and connectivity list information.  Most cells in VTK are
        implicit cells.
        """
        ...
    
    def IsPrimaryCell(self):
        """
        V.IsPrimaryCell() -> int
        C++: virtual int IsPrimaryCell()
        
        Return whether this cell type has a fixed topology or whether the
        topology varies depending on the data (e.g., vtkConvexPointSet).
        This compares to composite cells that are typically composed of
        primary cells (e.g., a triangle strip composite cell is made up
        of triangle primary cells).
        """
        ...
    
    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() -> vtkCell
        C++: vtkCell *NewInstance()
        """
        ...
    
    def RequiresExplicitFaceRepresentation(self):
        """
        V.RequiresExplicitFaceRepresentation() -> int
        C++: virtual int RequiresExplicitFaceRepresentation()
        
        Determine whether the cell requires explicit face representation,
        and methods for setting and getting the faces (see vtkPolyhedron
        for example usage of these methods).
        """
        ...
    
    def RequiresInitialization(self):
        """
        V.RequiresInitialization() -> int
        C++: virtual int RequiresInitialization()
        
        Some cells require initialization prior to access. For example,
        they may have to triangulate themselves or set up internal data
        structures.
        """
        ...
    
    def SafeDownCast(self, vtkObjectBase):
        """
        V.SafeDownCast(vtkObjectBase) -> vtkCell
        C++: static vtkCell *SafeDownCast(vtkObjectBase *o)
        """
        ...
    
    def SetFaces(self, *int):
        """
        V.SetFaces([int, ...])
        C++: virtual void SetFaces(vtkIdType *faces)
        """
        ...
    
    def ShallowCopy(self, vtkCell):
        """
        V.ShallowCopy(vtkCell)
        C++: virtual void ShallowCopy(vtkCell *c)
        
        Copy this cell by reference counting the internal data
        structures. This is safe if you want a "read-only" copy. If you
        modify the cell you might wish to use DeepCopy().
        """
        ...
    
    def Triangulate(self, p_int, vtkIdList, vtkPoints):
        """
        V.Triangulate(int, vtkIdList, vtkPoints) -> int
        C++: virtual int Triangulate(int index, vtkIdList *ptIds,
            vtkPoints *pts)
        
        Generate simplices of proper dimension. If cell is 3D,
        tetrahedron are generated; if 2D triangles; if 1D lines; if 0D
        points. The form of the output is a sequence of points, each n+1
        points (where n is topological cell dimension) defining a
        simplex. The index is a parameter that controls which
        triangulation to use (if more than one is possible). If numerical
        degeneracy encountered, 0 is returned, otherwise 1 is returned.
        This method does not insert new points: all the points that
        define the simplices are the points that define the cell.
        """
        ...
    
    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__ = ...
    __dict__ = ...
    __vtkname__ = ...


