# 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 .vtkImplicitFunction import vtkImplicitFunction

class vtkBox(vtkImplicitFunction):
    """
    vtkBox - implicit function for a bounding box
    
    Superclass: vtkImplicitFunction
    
    vtkBox computes the implicit function and/or gradient for a
    axis-aligned bounding box. (The superclasses transform can be used to
    modify this orientation.) Each side of the box is orthogonal to all
    other sides meeting along shared edges and all faces are orthogonal
    to the x-y-z coordinate axes.  (If you wish to orient this box
    differently, recall that the superclass vtkImplicitFunction supports
    a transformation matrix.) vtkBox is a concrete implementation of
    vtkImplicitFunction.
    
    @sa
    vtkCubeSource vtkImplicitFunction vtkBoundingBox
    """
    def AddBounds(self, bounds, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        AddBounds(self, bounds:(float, float, float, float, float, float))
             -> None
        C++: void AddBounds(const double bounds[6])
        
        A special method that allows union set operation on bounding
        boxes. Start with a SetBounds(). Subsequent AddBounds() methods
        are union set operations on the original bounds. Retrieve the
        final bounds with a GetBounds() method.
        """
        pass

    def EvaluateFunction(self, x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        EvaluateFunction(self, x:[float, float, float]) -> float
        C++: double EvaluateFunction(double x[3]) override;
        EvaluateFunction(self, input:vtkDataArray, output:vtkDataArray)
            -> None
        C++: virtual void EvaluateFunction(vtkDataArray *input,
            vtkDataArray *output)
        EvaluateFunction(self, x:float, y:float, z:float) -> float
        C++: virtual double EvaluateFunction(double x, double y, double z)
        
        Evaluate function at position x-y-z and return value.  You should
        generally not call this method directly, you should use
        FunctionValue() instead.  This method must be implemented by any
        derived class.
        """
        pass

    def EvaluateGradient(self, x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        EvaluateGradient(self, x:[float, float, float], n:[float, float,
            float]) -> None
        C++: void EvaluateGradient(double x[3], double n[3]) override;
        
        Evaluate the gradient of the box.
        """
        pass

    def GetBounds(self, xMin, xMax, yMin, yMax, zMin, zMax): # real signature unknown; restored from __doc__
        """
        GetBounds(self, xMin:float, xMax:float, yMin:float, yMax:float,
            zMin:float, zMax:float) -> None
        C++: void GetBounds(double &xMin, double &xMax, double &yMin,
            double &yMax, double &zMin, double &zMax)
        GetBounds(self, bounds:[float, float, float, float, float, float])
             -> None
        C++: void GetBounds(double bounds[6])
        GetBounds(self) -> (float, float, float, float, float, float)
        C++: double *GetBounds()
        """
        pass

    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 GetXMax(self, p, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        GetXMax(self, p:[float, float, float]) -> None
        C++: void GetXMax(double p[3])
        GetXMax(self, x:float, y:float, z:float) -> None
        C++: void GetXMax(double &x, double &y, double &z)
        """
        pass

    def GetXMin(self, p, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        GetXMin(self, p:[float, float, float]) -> None
        C++: void GetXMin(double p[3])
        GetXMin(self, x:float, y:float, z:float) -> None
        C++: void GetXMin(double &x, double &y, double &z)
        """
        pass

    def IntersectBox(self, bounds, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        IntersectBox(bounds:(float, float, float, float, float, float),
            origin:(float, float, float), dir:(float, float, float),
            coord:[float, float, float], t:float, tolerance:float=0.0)
            -> str
        C++: static char IntersectBox(const double bounds[6],
            const double origin[3], const double dir[3], double coord[3],
            double &t, const double tolerance=0.0)
        
        Bounding box intersection with line modified from Graphics Gems
        Vol I. The method returns a non-zero value if the bounding box is
        hit. Origin[3] starts the ray, dir[3] is the vector components of
        the ray in the x-y-z directions, coord[3] is the location of hit,
        and t is the parametric coordinate along line. (Notes: the
        intersection ray dir[3] is NOT normalized.  Valid intersections
        will only occur between 0<=t<=1.)
        """
        pass

    def IntersectWithInfiniteLine(self, bounds, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        IntersectWithInfiniteLine(bounds:(float, float, float, float,
            float, float), p1:(float, float, float), p2:(float, float,
            float), t1:float, t2:float, x1:[float, float, float],
            x2:[float, float, float], plane1:int, plane2:int) -> bool
        C++: static bool IntersectWithInfiniteLine(const double bounds[6],
             const double p1[3], const double p2[3], double &t1,
            double &t2, double x1[3], double x2[3], int &plane1,
            int &plane2)
        
        Same method as vtkBox::IntersectWithLine, except that t1 and t2
        can be outside of [0,1]. t1 is the distance of x1 to p1 in
        parametric coordinates, and t2 is the distance of x2 to p1 in
        parametric coordinates as well. In vtkBox::IntersectWithInLine,
        it is assumed that [p1,p2] is a segment, here, it is assumed that
        it is a line with no ends. t1 <= t2, which means that x1 is
        always "before" x2 on the line parameterized by [p1,p2]. x1 and
        x2 can be set to nullptr without crash.
        """
        pass

    def IntersectWithLine(self, bounds, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        IntersectWithLine(bounds:(float, float, float, float, float,
            float), p1:(float, float, float), p2:(float, float, float),
            t1:float, t2:float, x1:[float, float, float], x2:[float,
            float, float], plane1:int, plane2:int) -> int
        C++: static int IntersectWithLine(const double bounds[6],
            const double p1[3], const double p2[3], double &t1,
            double &t2, double x1[3], double x2[3], int &plane1,
            int &plane2)
        
        Intersect a line with the box.  Give the endpoints of the line in
        p1 and p2.  The parameteric distances from p1 to the entry and
        exit points are returned in t1 and t2, where t1 and t2 are
        clamped to the range [0,1].  The entry and exit planes are
        returned in plane1 and plane2 where integers (0, 1, 2, 3, 4, 5)
        stand for the (xmin, xmax, ymin, ymax, zmin, zmax) planes
        respectively, and a value of -1 means that no intersection
        occurred.  The actual intersection coordinates are stored in x1
        and x2, which can be set to nullptr of you do not need them to be
        returned.  The function return value will be zero if the line is
        wholly outside of the box.
        """
        pass

    def IntersectWithPlane(self, bounds, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        IntersectWithPlane(bounds:[float, float, float, float, float,
            float], origin:[float, float, float], normal:[float, float,
            float]) -> int
        C++: static vtkTypeBool IntersectWithPlane(double bounds[6],
            double origin[3], double normal[3])
        IntersectWithPlane(bounds:[float, float, float, float, float,
            float], origin:[float, float, float], normal:[float, float,
            float], xout:[float, float, float, float, float, float, float,
             float, float, float, float, float, float, float, float,
            float, float, float]) -> int
        C++: static vtkTypeBool IntersectWithPlane(double bounds[6],
            double origin[3], double normal[3], double xout[18])
        
        Plane intersection with the box. The plane is infinite in extent
        and defined by an origin and normal. The function indicates
        whether the plane intersects, not the particulars of intersection
        points and such. The function returns non-zero if the plane and
        box intersect; zero otherwise.
        """
        pass

    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 IsBoxInFrustum(self, planes, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        IsBoxInFrustum(planes:[float, float, float, float, float, float,
            float, float, float, float, float, float, float, float, float,
             float, float, float, float, float, float, float, float,
            float], bounds:[float, float, float, float, float, float])
            -> int
        C++: static vtkTypeBool IsBoxInFrustum(double planes[24],
            double bounds[6])
        
        Is a box in a frustum. Returns true if the box is in the frustum
        even partially. The frustum is defined as 6 planes. This method
        is not exact may and return true for cases where there is no
        intersection. It should never return false when there is an
        intersection though.
        """
        pass

    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) -> vtkBox
        C++: vtkBox *NewInstance()
        """
        return vtkBox

    def SafeDownCast(self, o): # real signature unknown; restored from __doc__
        """
        SafeDownCast(o:vtkObjectBase) -> vtkBox
        C++: static vtkBox *SafeDownCast(vtkObjectBase *o)
        """
        return vtkBox

    def SetBounds(self, xMin, xMax, yMin, yMax, zMin, zMax): # real signature unknown; restored from __doc__
        """
        SetBounds(self, xMin:float, xMax:float, yMin:float, yMax:float,
            zMin:float, zMax:float) -> None
        C++: void SetBounds(double xMin, double xMax, double yMin,
            double yMax, double zMin, double zMax)
        SetBounds(self, bounds:(float, float, float, float, float, float))
             -> None
        C++: void SetBounds(const double bounds[6])
        """
        pass

    def SetXMax(self, p, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        SetXMax(self, p:[float, float, float]) -> None
        C++: void SetXMax(double p[3])
        SetXMax(self, x:float, y:float, z:float) -> None
        C++: void SetXMax(double x, double y, double z)
        """
        pass

    def SetXMin(self, p, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        SetXMin(self, p:[float, float, float]) -> None
        C++: void SetXMin(double p[3])
        SetXMin(self, x:float, y:float, z:float) -> None
        C++: void SetXMin(double x, double y, double z)
        
        Set / get the bounding box using various methods.
        """
        pass

    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."""


    __dict__ = None # (!) real value is "mappingproxy({'__vtkname__': 'vtkBox', 'IsTypeOf': <method 'IsTypeOf' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, 'IsA': <method 'IsA' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, 'SafeDownCast': <method 'SafeDownCast' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, 'NewInstance': <method 'NewInstance' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, 'GetNumberOfGenerationsFromBaseType': <method 'GetNumberOfGenerationsFromBaseType' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, 'GetNumberOfGenerationsFromBase': <method 'GetNumberOfGenerationsFromBase' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, 'EvaluateFunction': <method 'EvaluateFunction' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, 'EvaluateGradient': <method 'EvaluateGradient' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, 'SetXMin': <method 'SetXMin' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, 'GetXMin': <method 'GetXMin' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, 'SetXMax': <method 'SetXMax' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, 'GetXMax': <method 'GetXMax' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, 'SetBounds': <method 'SetBounds' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, 'GetBounds': <method 'GetBounds' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, 'AddBounds': <method 'AddBounds' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, 'IntersectBox': <method 'IntersectBox' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, 'IntersectWithLine': <method 'IntersectWithLine' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, 'IntersectWithInfiniteLine': <method 'IntersectWithInfiniteLine' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, 'IntersectWithPlane': <method 'IntersectWithPlane' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, 'IsBoxInFrustum': <method 'IsBoxInFrustum' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, '__new__': <built-in method __new__ of type object at 0x00007FF81D612D40>, '__repr__': <slot wrapper '__repr__' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, '__str__': <slot wrapper '__str__' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, '__getattribute__': <slot wrapper '__getattribute__' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, '__setattr__': <slot wrapper '__setattr__' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, '__delattr__': <slot wrapper '__delattr__' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, '__dict__': <attribute '__dict__' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, '__this__': <attribute '__this__' of 'vtkmodules.vtkCommonDataModel.vtkBox' objects>, '__doc__': 'vtkBox - implicit function for a bounding box\\n\\nSuperclass: vtkImplicitFunction\\n\\nvtkBox computes the implicit function and/or gradient for a\\naxis-aligned bounding box. (The superclasses transform can be used to\\nmodify this orientation.) Each side of the box is orthogonal to all\\nother sides meeting along shared edges and all faces are orthogonal\\nto the x-y-z coordinate axes.  (If you wish to orient this box\\ndifferently, recall that the superclass vtkImplicitFunction supports\\na transformation matrix.) vtkBox is a concrete implementation of\\nvtkImplicitFunction.\\n\\n@sa\\nvtkCubeSource vtkImplicitFunction vtkBoundingBox\\n\\n'})"
    __vtkname__ = 'vtkBox'


