# This file was automatically generated by SWIG (http://www.swig.org).
# Version 4.0.2
#
# Do not make changes to this file unless you know what you are doing--modify
# the SWIG interface file instead.

"""
Extrema module, see official documentation at
https://www.opencascade.com/doc/occt-7.4.0/refman/html/package_extrema.html
"""

from sys import version_info as _swig_python_version_info
if _swig_python_version_info < (2, 7, 0):
    raise RuntimeError("Python 2.7 or later required")

# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _Extrema
else:
    import _Extrema

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "thisown":
            self.this.own(value)
        elif name == "this":
            set(self, name, value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


class SwigPyIterator(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _Extrema.delete_SwigPyIterator

    def value(self) -> "PyObject *":
        return _Extrema.SwigPyIterator_value(self)

    def incr(self, n: "size_t"=1) -> "swig::SwigPyIterator *":
        return _Extrema.SwigPyIterator_incr(self, n)

    def decr(self, n: "size_t"=1) -> "swig::SwigPyIterator *":
        return _Extrema.SwigPyIterator_decr(self, n)

    def distance(self, x: "SwigPyIterator") -> "ptrdiff_t":
        return _Extrema.SwigPyIterator_distance(self, x)

    def equal(self, x: "SwigPyIterator") -> "bool":
        return _Extrema.SwigPyIterator_equal(self, x)

    def copy(self) -> "swig::SwigPyIterator *":
        return _Extrema.SwigPyIterator_copy(self)

    def next(self) -> "PyObject *":
        return _Extrema.SwigPyIterator_next(self)

    def __next__(self) -> "PyObject *":
        return _Extrema.SwigPyIterator___next__(self)

    def previous(self) -> "PyObject *":
        return _Extrema.SwigPyIterator_previous(self)

    def advance(self, n: "ptrdiff_t") -> "swig::SwigPyIterator *":
        return _Extrema.SwigPyIterator_advance(self, n)

    def __eq__(self, x: "SwigPyIterator") -> "bool":
        return _Extrema.SwigPyIterator___eq__(self, x)

    def __ne__(self, x: "SwigPyIterator") -> "bool":
        return _Extrema.SwigPyIterator___ne__(self, x)

    def __iadd__(self, n: "ptrdiff_t") -> "swig::SwigPyIterator &":
        return _Extrema.SwigPyIterator___iadd__(self, n)

    def __isub__(self, n: "ptrdiff_t") -> "swig::SwigPyIterator &":
        return _Extrema.SwigPyIterator___isub__(self, n)

    def __add__(self, n: "ptrdiff_t") -> "swig::SwigPyIterator *":
        return _Extrema.SwigPyIterator___add__(self, n)

    def __sub__(self, *args) -> "ptrdiff_t":
        return _Extrema.SwigPyIterator___sub__(self, *args)
    def __iter__(self):
        return self

# Register SwigPyIterator in _Extrema:
_Extrema.SwigPyIterator_swigregister(SwigPyIterator)


def _dumps_object(klass):
    """ Overwrite default string output for any wrapped object.
    By default, __repr__ method returns something like:
    <OCC.Core.TopoDS.TopoDS_Shape; proxy of <Swig Object of type 'TopoDS_Shape *' at 0x02BB0758> >
    This is too much verbose.
    We prefer :
    <class 'gp_Pnt'>
    or
    <class 'TopoDS_Shape'>
    """
    klass_name = str(klass.__class__).split(".")[3].split("'")[0]
    repr_string = "<class '" + klass_name + "'"
# for TopoDS_Shape, we also look for the base type
    if klass_name == "TopoDS_Shape":
        if klass.IsNull():
            repr_string += ": Null>"
            return repr_string
        st = klass.ShapeType()
        types = {OCC.Core.TopAbs.TopAbs_VERTEX: "Vertex",
                 OCC.Core.TopAbs.TopAbs_SOLID: "Solid",
                 OCC.Core.TopAbs.TopAbs_EDGE: "Edge",
                 OCC.Core.TopAbs.TopAbs_FACE: "Face",
                 OCC.Core.TopAbs.TopAbs_SHELL: "Shell",
                 OCC.Core.TopAbs.TopAbs_WIRE: "Wire",
                 OCC.Core.TopAbs.TopAbs_COMPOUND: "Compound",
                 OCC.Core.TopAbs.TopAbs_COMPSOLID: "Compsolid"}
        repr_string += "; Type:%s" % types[st]        
    elif hasattr(klass, "IsNull"):
        if klass.IsNull():
            repr_string += "; Null"
    repr_string += ">"
    return repr_string


def process_exception(error: "Standard_Failure", method_name: "std::string", class_name: "std::string") -> "void":
    return _Extrema.process_exception(error, method_name, class_name)

from six import with_metaclass
import warnings
from OCC.Wrapper.wrapper_utils import Proxy, deprecated

import OCC.Core.Standard
import OCC.Core.NCollection
import OCC.Core.math
import OCC.Core.TColStd
import OCC.Core.TCollection
import OCC.Core.Message
import OCC.Core.OSD
import OCC.Core.gp
import OCC.Core.Adaptor3d
import OCC.Core.Geom
import OCC.Core.GeomAbs
import OCC.Core.TColgp
import OCC.Core.TopAbs
import OCC.Core.Adaptor2d
import OCC.Core.Geom2d
import OCC.Core.GeomAdaptor

from enum import IntEnum
from OCC.Core.Exception import *

Extrema_ExtAlgo_Grad = _Extrema.Extrema_ExtAlgo_Grad
Extrema_ExtAlgo_Tree = _Extrema.Extrema_ExtAlgo_Tree
Extrema_ExtFlag_MIN = _Extrema.Extrema_ExtFlag_MIN
Extrema_ExtFlag_MAX = _Extrema.Extrema_ExtFlag_MAX
Extrema_ExtFlag_MINMAX = _Extrema.Extrema_ExtFlag_MINMAX
Extrema_Node = _Extrema.Extrema_Node
Extrema_UIsoEdge = _Extrema.Extrema_UIsoEdge
Extrema_VIsoEdge = _Extrema.Extrema_VIsoEdge
Extrema_Face = _Extrema.Extrema_Face


class Extrema_ExtAlgo(IntEnum):
	Extrema_ExtAlgo_Grad = 0
	Extrema_ExtAlgo_Tree = 1
Extrema_ExtAlgo_Grad = Extrema_ExtAlgo.Extrema_ExtAlgo_Grad
Extrema_ExtAlgo_Tree = Extrema_ExtAlgo.Extrema_ExtAlgo_Tree

class Extrema_ExtFlag(IntEnum):
	Extrema_ExtFlag_MIN = 0
	Extrema_ExtFlag_MAX = 1
	Extrema_ExtFlag_MINMAX = 2
Extrema_ExtFlag_MIN = Extrema_ExtFlag.Extrema_ExtFlag_MIN
Extrema_ExtFlag_MAX = Extrema_ExtFlag.Extrema_ExtFlag_MAX
Extrema_ExtFlag_MINMAX = Extrema_ExtFlag.Extrema_ExtFlag_MINMAX

class Extrema_ElementType(IntEnum):
	Extrema_Node = 0
	Extrema_UIsoEdge = 1
	Extrema_VIsoEdge = 2
	Extrema_Face = 3
Extrema_Node = Extrema_ElementType.Extrema_Node
Extrema_UIsoEdge = Extrema_ElementType.Extrema_UIsoEdge
Extrema_VIsoEdge = Extrema_ElementType.Extrema_VIsoEdge
Extrema_Face = Extrema_ElementType.Extrema_Face


def Handle_Extrema_ExtPExtS_Create() -> "opencascade::handle< Extrema_ExtPExtS >":
    return _Extrema.Handle_Extrema_ExtPExtS_Create()

def Handle_Extrema_ExtPExtS_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< Extrema_ExtPExtS >":
    return _Extrema.Handle_Extrema_ExtPExtS_DownCast(t)

def Handle_Extrema_ExtPExtS_IsNull(t: "opencascade::handle< Extrema_ExtPExtS > const &") -> "bool":
    return _Extrema.Handle_Extrema_ExtPExtS_IsNull(t)

def Handle_Extrema_ExtPRevS_Create() -> "opencascade::handle< Extrema_ExtPRevS >":
    return _Extrema.Handle_Extrema_ExtPRevS_Create()

def Handle_Extrema_ExtPRevS_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< Extrema_ExtPRevS >":
    return _Extrema.Handle_Extrema_ExtPRevS_DownCast(t)

def Handle_Extrema_ExtPRevS_IsNull(t: "opencascade::handle< Extrema_ExtPRevS > const &") -> "bool":
    return _Extrema.Handle_Extrema_ExtPRevS_IsNull(t)

def Handle_Extrema_HArray1OfPOnSurf_Create() -> "opencascade::handle< Extrema_HArray1OfPOnSurf >":
    return _Extrema.Handle_Extrema_HArray1OfPOnSurf_Create()

def Handle_Extrema_HArray1OfPOnSurf_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< Extrema_HArray1OfPOnSurf >":
    return _Extrema.Handle_Extrema_HArray1OfPOnSurf_DownCast(t)

def Handle_Extrema_HArray1OfPOnSurf_IsNull(t: "opencascade::handle< Extrema_HArray1OfPOnSurf > const &") -> "bool":
    return _Extrema.Handle_Extrema_HArray1OfPOnSurf_IsNull(t)

def Handle_Extrema_HArray1OfPOnCurv_Create() -> "opencascade::handle< Extrema_HArray1OfPOnCurv >":
    return _Extrema.Handle_Extrema_HArray1OfPOnCurv_Create()

def Handle_Extrema_HArray1OfPOnCurv_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< Extrema_HArray1OfPOnCurv >":
    return _Extrema.Handle_Extrema_HArray1OfPOnCurv_DownCast(t)

def Handle_Extrema_HArray1OfPOnCurv_IsNull(t: "opencascade::handle< Extrema_HArray1OfPOnCurv > const &") -> "bool":
    return _Extrema.Handle_Extrema_HArray1OfPOnCurv_IsNull(t)

def Handle_Extrema_HArray1OfPOnCurv2d_Create() -> "opencascade::handle< Extrema_HArray1OfPOnCurv2d >":
    return _Extrema.Handle_Extrema_HArray1OfPOnCurv2d_Create()

def Handle_Extrema_HArray1OfPOnCurv2d_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< Extrema_HArray1OfPOnCurv2d >":
    return _Extrema.Handle_Extrema_HArray1OfPOnCurv2d_DownCast(t)

def Handle_Extrema_HArray1OfPOnCurv2d_IsNull(t: "opencascade::handle< Extrema_HArray1OfPOnCurv2d > const &") -> "bool":
    return _Extrema.Handle_Extrema_HArray1OfPOnCurv2d_IsNull(t)

def Handle_Extrema_HArray2OfPOnCurv2d_Create() -> "opencascade::handle< Extrema_HArray2OfPOnCurv2d >":
    return _Extrema.Handle_Extrema_HArray2OfPOnCurv2d_Create()

def Handle_Extrema_HArray2OfPOnCurv2d_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< Extrema_HArray2OfPOnCurv2d >":
    return _Extrema.Handle_Extrema_HArray2OfPOnCurv2d_DownCast(t)

def Handle_Extrema_HArray2OfPOnCurv2d_IsNull(t: "opencascade::handle< Extrema_HArray2OfPOnCurv2d > const &") -> "bool":
    return _Extrema.Handle_Extrema_HArray2OfPOnCurv2d_IsNull(t)

def Handle_Extrema_HArray2OfPOnCurv_Create() -> "opencascade::handle< Extrema_HArray2OfPOnCurv >":
    return _Extrema.Handle_Extrema_HArray2OfPOnCurv_Create()

def Handle_Extrema_HArray2OfPOnCurv_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< Extrema_HArray2OfPOnCurv >":
    return _Extrema.Handle_Extrema_HArray2OfPOnCurv_DownCast(t)

def Handle_Extrema_HArray2OfPOnCurv_IsNull(t: "opencascade::handle< Extrema_HArray2OfPOnCurv > const &") -> "bool":
    return _Extrema.Handle_Extrema_HArray2OfPOnCurv_IsNull(t)

def Handle_Extrema_HArray2OfPOnSurf_Create() -> "opencascade::handle< Extrema_HArray2OfPOnSurf >":
    return _Extrema.Handle_Extrema_HArray2OfPOnSurf_Create()

def Handle_Extrema_HArray2OfPOnSurf_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< Extrema_HArray2OfPOnSurf >":
    return _Extrema.Handle_Extrema_HArray2OfPOnSurf_DownCast(t)

def Handle_Extrema_HArray2OfPOnSurf_IsNull(t: "opencascade::handle< Extrema_HArray2OfPOnSurf > const &") -> "bool":
    return _Extrema.Handle_Extrema_HArray2OfPOnSurf_IsNull(t)

def Handle_Extrema_HArray2OfPOnSurfParams_Create() -> "opencascade::handle< Extrema_HArray2OfPOnSurfParams >":
    return _Extrema.Handle_Extrema_HArray2OfPOnSurfParams_Create()

def Handle_Extrema_HArray2OfPOnSurfParams_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< Extrema_HArray2OfPOnSurfParams >":
    return _Extrema.Handle_Extrema_HArray2OfPOnSurfParams_DownCast(t)

def Handle_Extrema_HArray2OfPOnSurfParams_IsNull(t: "opencascade::handle< Extrema_HArray2OfPOnSurfParams > const &") -> "bool":
    return _Extrema.Handle_Extrema_HArray2OfPOnSurfParams_IsNull(t)
class Extrema_Array1OfPOnCurv(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def begin(self) -> "NCollection_Array1< Extrema_POnCurv >::iterator":
        return _Extrema.Extrema_Array1OfPOnCurv_begin(self)

    def end(self) -> "NCollection_Array1< Extrema_POnCurv >::iterator":
        return _Extrema.Extrema_Array1OfPOnCurv_end(self)

    def cbegin(self) -> "NCollection_Array1< Extrema_POnCurv >::const_iterator":
        return _Extrema.Extrema_Array1OfPOnCurv_cbegin(self)

    def cend(self) -> "NCollection_Array1< Extrema_POnCurv >::const_iterator":
        return _Extrema.Extrema_Array1OfPOnCurv_cend(self)

    def __init__(self, *args):
        _Extrema.Extrema_Array1OfPOnCurv_swiginit(self, _Extrema.new_Extrema_Array1OfPOnCurv(*args))

    def Init(self, theValue: "Extrema_POnCurv") -> "void":
        return _Extrema.Extrema_Array1OfPOnCurv_Init(self, theValue)

    def Size(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array1OfPOnCurv_Size(self)

    def Length(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array1OfPOnCurv_Length(self)

    def IsEmpty(self) -> "Standard_Boolean":
        return _Extrema.Extrema_Array1OfPOnCurv_IsEmpty(self)

    def Lower(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array1OfPOnCurv_Lower(self)

    def Upper(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array1OfPOnCurv_Upper(self)

    def IsDeletable(self) -> "Standard_Boolean":
        return _Extrema.Extrema_Array1OfPOnCurv_IsDeletable(self)

    def IsAllocated(self) -> "Standard_Boolean":
        return _Extrema.Extrema_Array1OfPOnCurv_IsAllocated(self)

    def Assign(self, theOther: "Extrema_Array1OfPOnCurv") -> "NCollection_Array1< Extrema_POnCurv > &":
        return _Extrema.Extrema_Array1OfPOnCurv_Assign(self, theOther)

    def Move(self, theOther: "Extrema_Array1OfPOnCurv") -> "NCollection_Array1< Extrema_POnCurv > &":
        return _Extrema.Extrema_Array1OfPOnCurv_Move(self, theOther)

    def Set(self, *args) -> "NCollection_Array1< Extrema_POnCurv > &":
        return _Extrema.Extrema_Array1OfPOnCurv_Set(self, *args)

    def First(self) -> "Extrema_POnCurv const &":
        return _Extrema.Extrema_Array1OfPOnCurv_First(self)

    def ChangeFirst(self) -> "Extrema_POnCurv &":
        return _Extrema.Extrema_Array1OfPOnCurv_ChangeFirst(self)

    def Last(self) -> "Extrema_POnCurv const &":
        return _Extrema.Extrema_Array1OfPOnCurv_Last(self)

    def ChangeLast(self) -> "Extrema_POnCurv &":
        return _Extrema.Extrema_Array1OfPOnCurv_ChangeLast(self)

    def Value(self, theIndex: "Standard_Integer const") -> "Extrema_POnCurv const &":
        return _Extrema.Extrema_Array1OfPOnCurv_Value(self, theIndex)

    def ChangeValue(self, theIndex: "Standard_Integer const") -> "Extrema_POnCurv &":
        return _Extrema.Extrema_Array1OfPOnCurv_ChangeValue(self, theIndex)

    def __call__(self, *args) -> "Extrema_POnCurv &":
        return _Extrema.Extrema_Array1OfPOnCurv___call__(self, *args)

    def SetValue(self, theIndex: "Standard_Integer const", theItem: "Extrema_POnCurv") -> "void":
        return _Extrema.Extrema_Array1OfPOnCurv_SetValue(self, theIndex, theItem)

    def Resize(self, theLower: "Standard_Integer const", theUpper: "Standard_Integer const", theToCopyData: "Standard_Boolean const") -> "void":
        return _Extrema.Extrema_Array1OfPOnCurv_Resize(self, theLower, theUpper, theToCopyData)
    __swig_destroy__ = _Extrema.delete_Extrema_Array1OfPOnCurv

    def __getitem__(self, index):
        if index + self.Lower() > self.Upper():
            raise IndexError("index out of range")
        else:
            return self.Value(index + self.Lower())

    def __setitem__(self, index, value):
        if index + self.Lower() > self.Upper():
            raise IndexError("index out of range")
        else:
            self.SetValue(index + self.Lower(), value)

    def __len__(self):
        return self.Length()

    def __iter__(self):
        self.low = self.Lower()
        self.up = self.Upper()
        self.current = self.Lower() - 1
        return self

    def next(self):
        if self.current >= self.Upper():
            raise StopIteration
        else:
            self.current += 1
        return self.Value(self.current)

    __next__ = next


# Register Extrema_Array1OfPOnCurv in _Extrema:
_Extrema.Extrema_Array1OfPOnCurv_swigregister(Extrema_Array1OfPOnCurv)

class Extrema_Array1OfPOnCurv2d(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def begin(self) -> "NCollection_Array1< Extrema_POnCurv2d >::iterator":
        return _Extrema.Extrema_Array1OfPOnCurv2d_begin(self)

    def end(self) -> "NCollection_Array1< Extrema_POnCurv2d >::iterator":
        return _Extrema.Extrema_Array1OfPOnCurv2d_end(self)

    def cbegin(self) -> "NCollection_Array1< Extrema_POnCurv2d >::const_iterator":
        return _Extrema.Extrema_Array1OfPOnCurv2d_cbegin(self)

    def cend(self) -> "NCollection_Array1< Extrema_POnCurv2d >::const_iterator":
        return _Extrema.Extrema_Array1OfPOnCurv2d_cend(self)

    def __init__(self, *args):
        _Extrema.Extrema_Array1OfPOnCurv2d_swiginit(self, _Extrema.new_Extrema_Array1OfPOnCurv2d(*args))

    def Init(self, theValue: "Extrema_POnCurv2d") -> "void":
        return _Extrema.Extrema_Array1OfPOnCurv2d_Init(self, theValue)

    def Size(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array1OfPOnCurv2d_Size(self)

    def Length(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array1OfPOnCurv2d_Length(self)

    def IsEmpty(self) -> "Standard_Boolean":
        return _Extrema.Extrema_Array1OfPOnCurv2d_IsEmpty(self)

    def Lower(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array1OfPOnCurv2d_Lower(self)

    def Upper(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array1OfPOnCurv2d_Upper(self)

    def IsDeletable(self) -> "Standard_Boolean":
        return _Extrema.Extrema_Array1OfPOnCurv2d_IsDeletable(self)

    def IsAllocated(self) -> "Standard_Boolean":
        return _Extrema.Extrema_Array1OfPOnCurv2d_IsAllocated(self)

    def Assign(self, theOther: "Extrema_Array1OfPOnCurv2d") -> "NCollection_Array1< Extrema_POnCurv2d > &":
        return _Extrema.Extrema_Array1OfPOnCurv2d_Assign(self, theOther)

    def Move(self, theOther: "Extrema_Array1OfPOnCurv2d") -> "NCollection_Array1< Extrema_POnCurv2d > &":
        return _Extrema.Extrema_Array1OfPOnCurv2d_Move(self, theOther)

    def Set(self, *args) -> "NCollection_Array1< Extrema_POnCurv2d > &":
        return _Extrema.Extrema_Array1OfPOnCurv2d_Set(self, *args)

    def First(self) -> "Extrema_POnCurv2d const &":
        return _Extrema.Extrema_Array1OfPOnCurv2d_First(self)

    def ChangeFirst(self) -> "Extrema_POnCurv2d &":
        return _Extrema.Extrema_Array1OfPOnCurv2d_ChangeFirst(self)

    def Last(self) -> "Extrema_POnCurv2d const &":
        return _Extrema.Extrema_Array1OfPOnCurv2d_Last(self)

    def ChangeLast(self) -> "Extrema_POnCurv2d &":
        return _Extrema.Extrema_Array1OfPOnCurv2d_ChangeLast(self)

    def Value(self, theIndex: "Standard_Integer const") -> "Extrema_POnCurv2d const &":
        return _Extrema.Extrema_Array1OfPOnCurv2d_Value(self, theIndex)

    def ChangeValue(self, theIndex: "Standard_Integer const") -> "Extrema_POnCurv2d &":
        return _Extrema.Extrema_Array1OfPOnCurv2d_ChangeValue(self, theIndex)

    def __call__(self, *args) -> "Extrema_POnCurv2d &":
        return _Extrema.Extrema_Array1OfPOnCurv2d___call__(self, *args)

    def SetValue(self, theIndex: "Standard_Integer const", theItem: "Extrema_POnCurv2d") -> "void":
        return _Extrema.Extrema_Array1OfPOnCurv2d_SetValue(self, theIndex, theItem)

    def Resize(self, theLower: "Standard_Integer const", theUpper: "Standard_Integer const", theToCopyData: "Standard_Boolean const") -> "void":
        return _Extrema.Extrema_Array1OfPOnCurv2d_Resize(self, theLower, theUpper, theToCopyData)
    __swig_destroy__ = _Extrema.delete_Extrema_Array1OfPOnCurv2d

    def __getitem__(self, index):
        if index + self.Lower() > self.Upper():
            raise IndexError("index out of range")
        else:
            return self.Value(index + self.Lower())

    def __setitem__(self, index, value):
        if index + self.Lower() > self.Upper():
            raise IndexError("index out of range")
        else:
            self.SetValue(index + self.Lower(), value)

    def __len__(self):
        return self.Length()

    def __iter__(self):
        self.low = self.Lower()
        self.up = self.Upper()
        self.current = self.Lower() - 1
        return self

    def next(self):
        if self.current >= self.Upper():
            raise StopIteration
        else:
            self.current += 1
        return self.Value(self.current)

    __next__ = next


# Register Extrema_Array1OfPOnCurv2d in _Extrema:
_Extrema.Extrema_Array1OfPOnCurv2d_swigregister(Extrema_Array1OfPOnCurv2d)

class Extrema_Array1OfPOnSurf(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def begin(self) -> "NCollection_Array1< Extrema_POnSurf >::iterator":
        return _Extrema.Extrema_Array1OfPOnSurf_begin(self)

    def end(self) -> "NCollection_Array1< Extrema_POnSurf >::iterator":
        return _Extrema.Extrema_Array1OfPOnSurf_end(self)

    def cbegin(self) -> "NCollection_Array1< Extrema_POnSurf >::const_iterator":
        return _Extrema.Extrema_Array1OfPOnSurf_cbegin(self)

    def cend(self) -> "NCollection_Array1< Extrema_POnSurf >::const_iterator":
        return _Extrema.Extrema_Array1OfPOnSurf_cend(self)

    def __init__(self, *args):
        _Extrema.Extrema_Array1OfPOnSurf_swiginit(self, _Extrema.new_Extrema_Array1OfPOnSurf(*args))

    def Init(self, theValue: "Extrema_POnSurf") -> "void":
        return _Extrema.Extrema_Array1OfPOnSurf_Init(self, theValue)

    def Size(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array1OfPOnSurf_Size(self)

    def Length(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array1OfPOnSurf_Length(self)

    def IsEmpty(self) -> "Standard_Boolean":
        return _Extrema.Extrema_Array1OfPOnSurf_IsEmpty(self)

    def Lower(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array1OfPOnSurf_Lower(self)

    def Upper(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array1OfPOnSurf_Upper(self)

    def IsDeletable(self) -> "Standard_Boolean":
        return _Extrema.Extrema_Array1OfPOnSurf_IsDeletable(self)

    def IsAllocated(self) -> "Standard_Boolean":
        return _Extrema.Extrema_Array1OfPOnSurf_IsAllocated(self)

    def Assign(self, theOther: "Extrema_Array1OfPOnSurf") -> "NCollection_Array1< Extrema_POnSurf > &":
        return _Extrema.Extrema_Array1OfPOnSurf_Assign(self, theOther)

    def Move(self, theOther: "Extrema_Array1OfPOnSurf") -> "NCollection_Array1< Extrema_POnSurf > &":
        return _Extrema.Extrema_Array1OfPOnSurf_Move(self, theOther)

    def Set(self, *args) -> "NCollection_Array1< Extrema_POnSurf > &":
        return _Extrema.Extrema_Array1OfPOnSurf_Set(self, *args)

    def First(self) -> "Extrema_POnSurf const &":
        return _Extrema.Extrema_Array1OfPOnSurf_First(self)

    def ChangeFirst(self) -> "Extrema_POnSurf &":
        return _Extrema.Extrema_Array1OfPOnSurf_ChangeFirst(self)

    def Last(self) -> "Extrema_POnSurf const &":
        return _Extrema.Extrema_Array1OfPOnSurf_Last(self)

    def ChangeLast(self) -> "Extrema_POnSurf &":
        return _Extrema.Extrema_Array1OfPOnSurf_ChangeLast(self)

    def Value(self, theIndex: "Standard_Integer const") -> "Extrema_POnSurf const &":
        return _Extrema.Extrema_Array1OfPOnSurf_Value(self, theIndex)

    def ChangeValue(self, theIndex: "Standard_Integer const") -> "Extrema_POnSurf &":
        return _Extrema.Extrema_Array1OfPOnSurf_ChangeValue(self, theIndex)

    def __call__(self, *args) -> "Extrema_POnSurf &":
        return _Extrema.Extrema_Array1OfPOnSurf___call__(self, *args)

    def SetValue(self, theIndex: "Standard_Integer const", theItem: "Extrema_POnSurf") -> "void":
        return _Extrema.Extrema_Array1OfPOnSurf_SetValue(self, theIndex, theItem)

    def Resize(self, theLower: "Standard_Integer const", theUpper: "Standard_Integer const", theToCopyData: "Standard_Boolean const") -> "void":
        return _Extrema.Extrema_Array1OfPOnSurf_Resize(self, theLower, theUpper, theToCopyData)
    __swig_destroy__ = _Extrema.delete_Extrema_Array1OfPOnSurf

    def __getitem__(self, index):
        if index + self.Lower() > self.Upper():
            raise IndexError("index out of range")
        else:
            return self.Value(index + self.Lower())

    def __setitem__(self, index, value):
        if index + self.Lower() > self.Upper():
            raise IndexError("index out of range")
        else:
            self.SetValue(index + self.Lower(), value)

    def __len__(self):
        return self.Length()

    def __iter__(self):
        self.low = self.Lower()
        self.up = self.Upper()
        self.current = self.Lower() - 1
        return self

    def next(self):
        if self.current >= self.Upper():
            raise StopIteration
        else:
            self.current += 1
        return self.Value(self.current)

    __next__ = next


# Register Extrema_Array1OfPOnSurf in _Extrema:
_Extrema.Extrema_Array1OfPOnSurf_swigregister(Extrema_Array1OfPOnSurf)

class Extrema_Array2OfPOnCurv(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _Extrema.Extrema_Array2OfPOnCurv_swiginit(self, _Extrema.new_Extrema_Array2OfPOnCurv(*args))

    def Init(self, theValue: "Extrema_POnCurv") -> "void":
        return _Extrema.Extrema_Array2OfPOnCurv_Init(self, theValue)

    def Size(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnCurv_Size(self)

    def Length(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnCurv_Length(self)

    def NbRows(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnCurv_NbRows(self)

    def NbColumns(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnCurv_NbColumns(self)

    def RowLength(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnCurv_RowLength(self)

    def ColLength(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnCurv_ColLength(self)

    def LowerRow(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnCurv_LowerRow(self)

    def UpperRow(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnCurv_UpperRow(self)

    def LowerCol(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnCurv_LowerCol(self)

    def UpperCol(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnCurv_UpperCol(self)

    def IsDeletable(self) -> "Standard_Boolean":
        return _Extrema.Extrema_Array2OfPOnCurv_IsDeletable(self)

    def Assign(self, theOther: "Extrema_Array2OfPOnCurv") -> "NCollection_Array2< Extrema_POnCurv > &":
        return _Extrema.Extrema_Array2OfPOnCurv_Assign(self, theOther)

    def Move(self, theOther: "Extrema_Array2OfPOnCurv") -> "NCollection_Array2< Extrema_POnCurv > &":
        return _Extrema.Extrema_Array2OfPOnCurv_Move(self, theOther)

    def Set(self, *args) -> "NCollection_Array2< Extrema_POnCurv > &":
        return _Extrema.Extrema_Array2OfPOnCurv_Set(self, *args)

    def Value(self, theRow: "Standard_Integer const", theCol: "Standard_Integer const") -> "Extrema_POnCurv const &":
        return _Extrema.Extrema_Array2OfPOnCurv_Value(self, theRow, theCol)

    def ChangeValue(self, theRow: "Standard_Integer const", theCol: "Standard_Integer const") -> "Extrema_POnCurv &":
        return _Extrema.Extrema_Array2OfPOnCurv_ChangeValue(self, theRow, theCol)

    def __call__(self, *args) -> "Extrema_POnCurv &":
        return _Extrema.Extrema_Array2OfPOnCurv___call__(self, *args)

    def SetValue(self, theRow: "Standard_Integer const", theCol: "Standard_Integer const", theItem: "Extrema_POnCurv") -> "void":
        return _Extrema.Extrema_Array2OfPOnCurv_SetValue(self, theRow, theCol, theItem)

    def Resize(self, theRowLower: "Standard_Integer", theRowUpper: "Standard_Integer", theColLower: "Standard_Integer", theColUpper: "Standard_Integer", theToCopyData: "Standard_Boolean") -> "void":
        return _Extrema.Extrema_Array2OfPOnCurv_Resize(self, theRowLower, theRowUpper, theColLower, theColUpper, theToCopyData)
    __swig_destroy__ = _Extrema.delete_Extrema_Array2OfPOnCurv

# Register Extrema_Array2OfPOnCurv in _Extrema:
_Extrema.Extrema_Array2OfPOnCurv_swigregister(Extrema_Array2OfPOnCurv)

class Extrema_Array2OfPOnCurv2d(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _Extrema.Extrema_Array2OfPOnCurv2d_swiginit(self, _Extrema.new_Extrema_Array2OfPOnCurv2d(*args))

    def Init(self, theValue: "Extrema_POnCurv2d") -> "void":
        return _Extrema.Extrema_Array2OfPOnCurv2d_Init(self, theValue)

    def Size(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnCurv2d_Size(self)

    def Length(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnCurv2d_Length(self)

    def NbRows(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnCurv2d_NbRows(self)

    def NbColumns(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnCurv2d_NbColumns(self)

    def RowLength(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnCurv2d_RowLength(self)

    def ColLength(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnCurv2d_ColLength(self)

    def LowerRow(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnCurv2d_LowerRow(self)

    def UpperRow(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnCurv2d_UpperRow(self)

    def LowerCol(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnCurv2d_LowerCol(self)

    def UpperCol(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnCurv2d_UpperCol(self)

    def IsDeletable(self) -> "Standard_Boolean":
        return _Extrema.Extrema_Array2OfPOnCurv2d_IsDeletable(self)

    def Assign(self, theOther: "Extrema_Array2OfPOnCurv2d") -> "NCollection_Array2< Extrema_POnCurv2d > &":
        return _Extrema.Extrema_Array2OfPOnCurv2d_Assign(self, theOther)

    def Move(self, theOther: "Extrema_Array2OfPOnCurv2d") -> "NCollection_Array2< Extrema_POnCurv2d > &":
        return _Extrema.Extrema_Array2OfPOnCurv2d_Move(self, theOther)

    def Set(self, *args) -> "NCollection_Array2< Extrema_POnCurv2d > &":
        return _Extrema.Extrema_Array2OfPOnCurv2d_Set(self, *args)

    def Value(self, theRow: "Standard_Integer const", theCol: "Standard_Integer const") -> "Extrema_POnCurv2d const &":
        return _Extrema.Extrema_Array2OfPOnCurv2d_Value(self, theRow, theCol)

    def ChangeValue(self, theRow: "Standard_Integer const", theCol: "Standard_Integer const") -> "Extrema_POnCurv2d &":
        return _Extrema.Extrema_Array2OfPOnCurv2d_ChangeValue(self, theRow, theCol)

    def __call__(self, *args) -> "Extrema_POnCurv2d &":
        return _Extrema.Extrema_Array2OfPOnCurv2d___call__(self, *args)

    def SetValue(self, theRow: "Standard_Integer const", theCol: "Standard_Integer const", theItem: "Extrema_POnCurv2d") -> "void":
        return _Extrema.Extrema_Array2OfPOnCurv2d_SetValue(self, theRow, theCol, theItem)

    def Resize(self, theRowLower: "Standard_Integer", theRowUpper: "Standard_Integer", theColLower: "Standard_Integer", theColUpper: "Standard_Integer", theToCopyData: "Standard_Boolean") -> "void":
        return _Extrema.Extrema_Array2OfPOnCurv2d_Resize(self, theRowLower, theRowUpper, theColLower, theColUpper, theToCopyData)
    __swig_destroy__ = _Extrema.delete_Extrema_Array2OfPOnCurv2d

# Register Extrema_Array2OfPOnCurv2d in _Extrema:
_Extrema.Extrema_Array2OfPOnCurv2d_swigregister(Extrema_Array2OfPOnCurv2d)

class Extrema_Array2OfPOnSurf(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _Extrema.Extrema_Array2OfPOnSurf_swiginit(self, _Extrema.new_Extrema_Array2OfPOnSurf(*args))

    def Init(self, theValue: "Extrema_POnSurf") -> "void":
        return _Extrema.Extrema_Array2OfPOnSurf_Init(self, theValue)

    def Size(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnSurf_Size(self)

    def Length(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnSurf_Length(self)

    def NbRows(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnSurf_NbRows(self)

    def NbColumns(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnSurf_NbColumns(self)

    def RowLength(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnSurf_RowLength(self)

    def ColLength(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnSurf_ColLength(self)

    def LowerRow(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnSurf_LowerRow(self)

    def UpperRow(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnSurf_UpperRow(self)

    def LowerCol(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnSurf_LowerCol(self)

    def UpperCol(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnSurf_UpperCol(self)

    def IsDeletable(self) -> "Standard_Boolean":
        return _Extrema.Extrema_Array2OfPOnSurf_IsDeletable(self)

    def Assign(self, theOther: "Extrema_Array2OfPOnSurf") -> "NCollection_Array2< Extrema_POnSurf > &":
        return _Extrema.Extrema_Array2OfPOnSurf_Assign(self, theOther)

    def Move(self, theOther: "Extrema_Array2OfPOnSurf") -> "NCollection_Array2< Extrema_POnSurf > &":
        return _Extrema.Extrema_Array2OfPOnSurf_Move(self, theOther)

    def Set(self, *args) -> "NCollection_Array2< Extrema_POnSurf > &":
        return _Extrema.Extrema_Array2OfPOnSurf_Set(self, *args)

    def Value(self, theRow: "Standard_Integer const", theCol: "Standard_Integer const") -> "Extrema_POnSurf const &":
        return _Extrema.Extrema_Array2OfPOnSurf_Value(self, theRow, theCol)

    def ChangeValue(self, theRow: "Standard_Integer const", theCol: "Standard_Integer const") -> "Extrema_POnSurf &":
        return _Extrema.Extrema_Array2OfPOnSurf_ChangeValue(self, theRow, theCol)

    def __call__(self, *args) -> "Extrema_POnSurf &":
        return _Extrema.Extrema_Array2OfPOnSurf___call__(self, *args)

    def SetValue(self, theRow: "Standard_Integer const", theCol: "Standard_Integer const", theItem: "Extrema_POnSurf") -> "void":
        return _Extrema.Extrema_Array2OfPOnSurf_SetValue(self, theRow, theCol, theItem)

    def Resize(self, theRowLower: "Standard_Integer", theRowUpper: "Standard_Integer", theColLower: "Standard_Integer", theColUpper: "Standard_Integer", theToCopyData: "Standard_Boolean") -> "void":
        return _Extrema.Extrema_Array2OfPOnSurf_Resize(self, theRowLower, theRowUpper, theColLower, theColUpper, theToCopyData)
    __swig_destroy__ = _Extrema.delete_Extrema_Array2OfPOnSurf

# Register Extrema_Array2OfPOnSurf in _Extrema:
_Extrema.Extrema_Array2OfPOnSurf_swigregister(Extrema_Array2OfPOnSurf)

class Extrema_Array2OfPOnSurfParams(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _Extrema.Extrema_Array2OfPOnSurfParams_swiginit(self, _Extrema.new_Extrema_Array2OfPOnSurfParams(*args))

    def Init(self, theValue: "Extrema_POnSurfParams") -> "void":
        return _Extrema.Extrema_Array2OfPOnSurfParams_Init(self, theValue)

    def Size(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnSurfParams_Size(self)

    def Length(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnSurfParams_Length(self)

    def NbRows(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnSurfParams_NbRows(self)

    def NbColumns(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnSurfParams_NbColumns(self)

    def RowLength(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnSurfParams_RowLength(self)

    def ColLength(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnSurfParams_ColLength(self)

    def LowerRow(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnSurfParams_LowerRow(self)

    def UpperRow(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnSurfParams_UpperRow(self)

    def LowerCol(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnSurfParams_LowerCol(self)

    def UpperCol(self) -> "Standard_Integer":
        return _Extrema.Extrema_Array2OfPOnSurfParams_UpperCol(self)

    def IsDeletable(self) -> "Standard_Boolean":
        return _Extrema.Extrema_Array2OfPOnSurfParams_IsDeletable(self)

    def Assign(self, theOther: "Extrema_Array2OfPOnSurfParams") -> "NCollection_Array2< Extrema_POnSurfParams > &":
        return _Extrema.Extrema_Array2OfPOnSurfParams_Assign(self, theOther)

    def Move(self, theOther: "Extrema_Array2OfPOnSurfParams") -> "NCollection_Array2< Extrema_POnSurfParams > &":
        return _Extrema.Extrema_Array2OfPOnSurfParams_Move(self, theOther)

    def Set(self, *args) -> "NCollection_Array2< Extrema_POnSurfParams > &":
        return _Extrema.Extrema_Array2OfPOnSurfParams_Set(self, *args)

    def Value(self, theRow: "Standard_Integer const", theCol: "Standard_Integer const") -> "Extrema_POnSurfParams const &":
        return _Extrema.Extrema_Array2OfPOnSurfParams_Value(self, theRow, theCol)

    def ChangeValue(self, theRow: "Standard_Integer const", theCol: "Standard_Integer const") -> "Extrema_POnSurfParams &":
        return _Extrema.Extrema_Array2OfPOnSurfParams_ChangeValue(self, theRow, theCol)

    def __call__(self, *args) -> "Extrema_POnSurfParams &":
        return _Extrema.Extrema_Array2OfPOnSurfParams___call__(self, *args)

    def SetValue(self, theRow: "Standard_Integer const", theCol: "Standard_Integer const", theItem: "Extrema_POnSurfParams") -> "void":
        return _Extrema.Extrema_Array2OfPOnSurfParams_SetValue(self, theRow, theCol, theItem)

    def Resize(self, theRowLower: "Standard_Integer", theRowUpper: "Standard_Integer", theColLower: "Standard_Integer", theColUpper: "Standard_Integer", theToCopyData: "Standard_Boolean") -> "void":
        return _Extrema.Extrema_Array2OfPOnSurfParams_Resize(self, theRowLower, theRowUpper, theColLower, theColUpper, theToCopyData)
    __swig_destroy__ = _Extrema.delete_Extrema_Array2OfPOnSurfParams

# Register Extrema_Array2OfPOnSurfParams in _Extrema:
_Extrema.Extrema_Array2OfPOnSurfParams_swigregister(Extrema_Array2OfPOnSurfParams)

class Extrema_SequenceOfPOnCurv(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def begin(self) -> "NCollection_Sequence< Extrema_POnCurv >::iterator":
        return _Extrema.Extrema_SequenceOfPOnCurv_begin(self)

    def end(self) -> "NCollection_Sequence< Extrema_POnCurv >::iterator":
        return _Extrema.Extrema_SequenceOfPOnCurv_end(self)

    def cbegin(self) -> "NCollection_Sequence< Extrema_POnCurv >::const_iterator":
        return _Extrema.Extrema_SequenceOfPOnCurv_cbegin(self)

    def cend(self) -> "NCollection_Sequence< Extrema_POnCurv >::const_iterator":
        return _Extrema.Extrema_SequenceOfPOnCurv_cend(self)

    def __init__(self, *args):
        _Extrema.Extrema_SequenceOfPOnCurv_swiginit(self, _Extrema.new_Extrema_SequenceOfPOnCurv(*args))

    def Size(self) -> "Standard_Integer":
        return _Extrema.Extrema_SequenceOfPOnCurv_Size(self)

    def Length(self) -> "Standard_Integer":
        return _Extrema.Extrema_SequenceOfPOnCurv_Length(self)

    def Lower(self) -> "Standard_Integer":
        return _Extrema.Extrema_SequenceOfPOnCurv_Lower(self)

    def Upper(self) -> "Standard_Integer":
        return _Extrema.Extrema_SequenceOfPOnCurv_Upper(self)

    def IsEmpty(self) -> "Standard_Boolean":
        return _Extrema.Extrema_SequenceOfPOnCurv_IsEmpty(self)

    def Reverse(self) -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv_Reverse(self)

    def Exchange(self, I: "Standard_Integer const", J: "Standard_Integer const") -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv_Exchange(self, I, J)

    @staticmethod
    def delNode(theNode: "NCollection_SeqNode *", theAl: "opencascade::handle< NCollection_BaseAllocator > &") -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv_delNode(theNode, theAl)

    def Clear(self, theAllocator: "opencascade::handle< NCollection_BaseAllocator > const &"=0) -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv_Clear(self, theAllocator)

    def Assign(self, theOther: "Extrema_SequenceOfPOnCurv") -> "NCollection_Sequence< Extrema_POnCurv > &":
        return _Extrema.Extrema_SequenceOfPOnCurv_Assign(self, theOther)

    def Set(self, theOther: "Extrema_SequenceOfPOnCurv") -> "NCollection_Sequence< Extrema_POnCurv > &":
        return _Extrema.Extrema_SequenceOfPOnCurv_Set(self, theOther)

    def Remove(self, *args) -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv_Remove(self, *args)

    def Append(self, *args) -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv_Append(self, *args)

    def Prepend(self, *args) -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv_Prepend(self, *args)

    def InsertBefore(self, *args) -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv_InsertBefore(self, *args)

    def InsertAfter(self, *args) -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv_InsertAfter(self, *args)

    def Split(self, theIndex: "Standard_Integer const", theSeq: "Extrema_SequenceOfPOnCurv") -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv_Split(self, theIndex, theSeq)

    def First(self) -> "Extrema_POnCurv const &":
        return _Extrema.Extrema_SequenceOfPOnCurv_First(self)

    def ChangeFirst(self) -> "Extrema_POnCurv &":
        return _Extrema.Extrema_SequenceOfPOnCurv_ChangeFirst(self)

    def Last(self) -> "Extrema_POnCurv const &":
        return _Extrema.Extrema_SequenceOfPOnCurv_Last(self)

    def ChangeLast(self) -> "Extrema_POnCurv &":
        return _Extrema.Extrema_SequenceOfPOnCurv_ChangeLast(self)

    def Value(self, theIndex: "Standard_Integer const") -> "Extrema_POnCurv const &":
        return _Extrema.Extrema_SequenceOfPOnCurv_Value(self, theIndex)

    def ChangeValue(self, theIndex: "Standard_Integer const") -> "Extrema_POnCurv &":
        return _Extrema.Extrema_SequenceOfPOnCurv_ChangeValue(self, theIndex)

    def __call__(self, *args) -> "Extrema_POnCurv &":
        return _Extrema.Extrema_SequenceOfPOnCurv___call__(self, *args)

    def SetValue(self, theIndex: "Standard_Integer const", theItem: "Extrema_POnCurv") -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv_SetValue(self, theIndex, theItem)
    __swig_destroy__ = _Extrema.delete_Extrema_SequenceOfPOnCurv

    def __len__(self):
        return self.Size()


# Register Extrema_SequenceOfPOnCurv in _Extrema:
_Extrema.Extrema_SequenceOfPOnCurv_swigregister(Extrema_SequenceOfPOnCurv)

def Extrema_SequenceOfPOnCurv_delNode(theNode: "NCollection_SeqNode *", theAl: "opencascade::handle< NCollection_BaseAllocator > &") -> "void":
    return _Extrema.Extrema_SequenceOfPOnCurv_delNode(theNode, theAl)

class Extrema_SequenceOfPOnCurv2d(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def begin(self) -> "NCollection_Sequence< Extrema_POnCurv2d >::iterator":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_begin(self)

    def end(self) -> "NCollection_Sequence< Extrema_POnCurv2d >::iterator":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_end(self)

    def cbegin(self) -> "NCollection_Sequence< Extrema_POnCurv2d >::const_iterator":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_cbegin(self)

    def cend(self) -> "NCollection_Sequence< Extrema_POnCurv2d >::const_iterator":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_cend(self)

    def __init__(self, *args):
        _Extrema.Extrema_SequenceOfPOnCurv2d_swiginit(self, _Extrema.new_Extrema_SequenceOfPOnCurv2d(*args))

    def Size(self) -> "Standard_Integer":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_Size(self)

    def Length(self) -> "Standard_Integer":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_Length(self)

    def Lower(self) -> "Standard_Integer":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_Lower(self)

    def Upper(self) -> "Standard_Integer":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_Upper(self)

    def IsEmpty(self) -> "Standard_Boolean":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_IsEmpty(self)

    def Reverse(self) -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_Reverse(self)

    def Exchange(self, I: "Standard_Integer const", J: "Standard_Integer const") -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_Exchange(self, I, J)

    @staticmethod
    def delNode(theNode: "NCollection_SeqNode *", theAl: "opencascade::handle< NCollection_BaseAllocator > &") -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_delNode(theNode, theAl)

    def Clear(self, theAllocator: "opencascade::handle< NCollection_BaseAllocator > const &"=0) -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_Clear(self, theAllocator)

    def Assign(self, theOther: "Extrema_SequenceOfPOnCurv2d") -> "NCollection_Sequence< Extrema_POnCurv2d > &":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_Assign(self, theOther)

    def Set(self, theOther: "Extrema_SequenceOfPOnCurv2d") -> "NCollection_Sequence< Extrema_POnCurv2d > &":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_Set(self, theOther)

    def Remove(self, *args) -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_Remove(self, *args)

    def Append(self, *args) -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_Append(self, *args)

    def Prepend(self, *args) -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_Prepend(self, *args)

    def InsertBefore(self, *args) -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_InsertBefore(self, *args)

    def InsertAfter(self, *args) -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_InsertAfter(self, *args)

    def Split(self, theIndex: "Standard_Integer const", theSeq: "Extrema_SequenceOfPOnCurv2d") -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_Split(self, theIndex, theSeq)

    def First(self) -> "Extrema_POnCurv2d const &":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_First(self)

    def ChangeFirst(self) -> "Extrema_POnCurv2d &":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_ChangeFirst(self)

    def Last(self) -> "Extrema_POnCurv2d const &":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_Last(self)

    def ChangeLast(self) -> "Extrema_POnCurv2d &":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_ChangeLast(self)

    def Value(self, theIndex: "Standard_Integer const") -> "Extrema_POnCurv2d const &":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_Value(self, theIndex)

    def ChangeValue(self, theIndex: "Standard_Integer const") -> "Extrema_POnCurv2d &":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_ChangeValue(self, theIndex)

    def __call__(self, *args) -> "Extrema_POnCurv2d &":
        return _Extrema.Extrema_SequenceOfPOnCurv2d___call__(self, *args)

    def SetValue(self, theIndex: "Standard_Integer const", theItem: "Extrema_POnCurv2d") -> "void":
        return _Extrema.Extrema_SequenceOfPOnCurv2d_SetValue(self, theIndex, theItem)
    __swig_destroy__ = _Extrema.delete_Extrema_SequenceOfPOnCurv2d

    def __len__(self):
        return self.Size()


# Register Extrema_SequenceOfPOnCurv2d in _Extrema:
_Extrema.Extrema_SequenceOfPOnCurv2d_swigregister(Extrema_SequenceOfPOnCurv2d)

def Extrema_SequenceOfPOnCurv2d_delNode(theNode: "NCollection_SeqNode *", theAl: "opencascade::handle< NCollection_BaseAllocator > &") -> "void":
    return _Extrema.Extrema_SequenceOfPOnCurv2d_delNode(theNode, theAl)

class Extrema_SequenceOfPOnSurf(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def begin(self) -> "NCollection_Sequence< Extrema_POnSurf >::iterator":
        return _Extrema.Extrema_SequenceOfPOnSurf_begin(self)

    def end(self) -> "NCollection_Sequence< Extrema_POnSurf >::iterator":
        return _Extrema.Extrema_SequenceOfPOnSurf_end(self)

    def cbegin(self) -> "NCollection_Sequence< Extrema_POnSurf >::const_iterator":
        return _Extrema.Extrema_SequenceOfPOnSurf_cbegin(self)

    def cend(self) -> "NCollection_Sequence< Extrema_POnSurf >::const_iterator":
        return _Extrema.Extrema_SequenceOfPOnSurf_cend(self)

    def __init__(self, *args):
        _Extrema.Extrema_SequenceOfPOnSurf_swiginit(self, _Extrema.new_Extrema_SequenceOfPOnSurf(*args))

    def Size(self) -> "Standard_Integer":
        return _Extrema.Extrema_SequenceOfPOnSurf_Size(self)

    def Length(self) -> "Standard_Integer":
        return _Extrema.Extrema_SequenceOfPOnSurf_Length(self)

    def Lower(self) -> "Standard_Integer":
        return _Extrema.Extrema_SequenceOfPOnSurf_Lower(self)

    def Upper(self) -> "Standard_Integer":
        return _Extrema.Extrema_SequenceOfPOnSurf_Upper(self)

    def IsEmpty(self) -> "Standard_Boolean":
        return _Extrema.Extrema_SequenceOfPOnSurf_IsEmpty(self)

    def Reverse(self) -> "void":
        return _Extrema.Extrema_SequenceOfPOnSurf_Reverse(self)

    def Exchange(self, I: "Standard_Integer const", J: "Standard_Integer const") -> "void":
        return _Extrema.Extrema_SequenceOfPOnSurf_Exchange(self, I, J)

    @staticmethod
    def delNode(theNode: "NCollection_SeqNode *", theAl: "opencascade::handle< NCollection_BaseAllocator > &") -> "void":
        return _Extrema.Extrema_SequenceOfPOnSurf_delNode(theNode, theAl)

    def Clear(self, theAllocator: "opencascade::handle< NCollection_BaseAllocator > const &"=0) -> "void":
        return _Extrema.Extrema_SequenceOfPOnSurf_Clear(self, theAllocator)

    def Assign(self, theOther: "Extrema_SequenceOfPOnSurf") -> "NCollection_Sequence< Extrema_POnSurf > &":
        return _Extrema.Extrema_SequenceOfPOnSurf_Assign(self, theOther)

    def Set(self, theOther: "Extrema_SequenceOfPOnSurf") -> "NCollection_Sequence< Extrema_POnSurf > &":
        return _Extrema.Extrema_SequenceOfPOnSurf_Set(self, theOther)

    def Remove(self, *args) -> "void":
        return _Extrema.Extrema_SequenceOfPOnSurf_Remove(self, *args)

    def Append(self, *args) -> "void":
        return _Extrema.Extrema_SequenceOfPOnSurf_Append(self, *args)

    def Prepend(self, *args) -> "void":
        return _Extrema.Extrema_SequenceOfPOnSurf_Prepend(self, *args)

    def InsertBefore(self, *args) -> "void":
        return _Extrema.Extrema_SequenceOfPOnSurf_InsertBefore(self, *args)

    def InsertAfter(self, *args) -> "void":
        return _Extrema.Extrema_SequenceOfPOnSurf_InsertAfter(self, *args)

    def Split(self, theIndex: "Standard_Integer const", theSeq: "Extrema_SequenceOfPOnSurf") -> "void":
        return _Extrema.Extrema_SequenceOfPOnSurf_Split(self, theIndex, theSeq)

    def First(self) -> "Extrema_POnSurf const &":
        return _Extrema.Extrema_SequenceOfPOnSurf_First(self)

    def ChangeFirst(self) -> "Extrema_POnSurf &":
        return _Extrema.Extrema_SequenceOfPOnSurf_ChangeFirst(self)

    def Last(self) -> "Extrema_POnSurf const &":
        return _Extrema.Extrema_SequenceOfPOnSurf_Last(self)

    def ChangeLast(self) -> "Extrema_POnSurf &":
        return _Extrema.Extrema_SequenceOfPOnSurf_ChangeLast(self)

    def Value(self, theIndex: "Standard_Integer const") -> "Extrema_POnSurf const &":
        return _Extrema.Extrema_SequenceOfPOnSurf_Value(self, theIndex)

    def ChangeValue(self, theIndex: "Standard_Integer const") -> "Extrema_POnSurf &":
        return _Extrema.Extrema_SequenceOfPOnSurf_ChangeValue(self, theIndex)

    def __call__(self, *args) -> "Extrema_POnSurf &":
        return _Extrema.Extrema_SequenceOfPOnSurf___call__(self, *args)

    def SetValue(self, theIndex: "Standard_Integer const", theItem: "Extrema_POnSurf") -> "void":
        return _Extrema.Extrema_SequenceOfPOnSurf_SetValue(self, theIndex, theItem)
    __swig_destroy__ = _Extrema.delete_Extrema_SequenceOfPOnSurf

    def __len__(self):
        return self.Size()


# Register Extrema_SequenceOfPOnSurf in _Extrema:
_Extrema.Extrema_SequenceOfPOnSurf_swigregister(Extrema_SequenceOfPOnSurf)

def Extrema_SequenceOfPOnSurf_delNode(theNode: "NCollection_SeqNode *", theAl: "opencascade::handle< NCollection_BaseAllocator > &") -> "void":
    return _Extrema.Extrema_SequenceOfPOnSurf_delNode(theNode, theAl)

class Extrema_UBTreeFillerOfSphere(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _Extrema.Extrema_UBTreeFillerOfSphere_swiginit(self, _Extrema.new_Extrema_UBTreeFillerOfSphere(*args))

    def Add(self, theObj: "int const &", theBnd: "Bnd_Sphere const &") -> "void":
        return _Extrema.Extrema_UBTreeFillerOfSphere_Add(self, theObj, theBnd)

    def Fill(self) -> "Standard_Integer":
        return _Extrema.Extrema_UBTreeFillerOfSphere_Fill(self)

    def Reset(self) -> "void":
        return _Extrema.Extrema_UBTreeFillerOfSphere_Reset(self)

    def CheckTree(self, theStream: "Standard_OStream &") -> "Standard_Integer":
        return _Extrema.Extrema_UBTreeFillerOfSphere_CheckTree(self, theStream)
    __swig_destroy__ = _Extrema.delete_Extrema_UBTreeFillerOfSphere

# Register Extrema_UBTreeFillerOfSphere in _Extrema:
_Extrema.Extrema_UBTreeFillerOfSphere_swigregister(Extrema_UBTreeFillerOfSphere)

class Extrema_UBTreeOfSphere(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _Extrema.Extrema_UBTreeOfSphere_swiginit(self, _Extrema.new_Extrema_UBTreeOfSphere(*args))

    def Add(self, theObj: "int const &", theBnd: "Bnd_Sphere const &") -> "Standard_Boolean":
        return _Extrema.Extrema_UBTreeOfSphere_Add(self, theObj, theBnd)

    def Select(self, theSelector: "NCollection_UBTree< int,Bnd_Sphere >::Selector &") -> "Standard_Integer":
        return _Extrema.Extrema_UBTreeOfSphere_Select(self, theSelector)

    def Clear(self, aNewAlloc: "opencascade::handle< NCollection_BaseAllocator > const &"=0) -> "void":
        return _Extrema.Extrema_UBTreeOfSphere_Clear(self, aNewAlloc)

    def IsEmpty(self) -> "Standard_Boolean":
        return _Extrema.Extrema_UBTreeOfSphere_IsEmpty(self)

    def Root(self) -> "NCollection_UBTree< int,Bnd_Sphere >::TreeNode const &":
        return _Extrema.Extrema_UBTreeOfSphere_Root(self)
    __swig_destroy__ = _Extrema.delete_Extrema_UBTreeOfSphere

    def Allocator(self) -> "opencascade::handle< NCollection_BaseAllocator > const &":
        return _Extrema.Extrema_UBTreeOfSphere_Allocator(self)

# Register Extrema_UBTreeOfSphere in _Extrema:
_Extrema.Extrema_UBTreeOfSphere_swigregister(Extrema_UBTreeOfSphere)

class Extrema_CCLocFOfLocECC(OCC.Core.math.math_FunctionSetWithDerivatives):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Parameters
        ----------
        thetol: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C1: Adaptor3d_Curve
        C2: Adaptor3d_Curve
        thetol: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None

        """
        _Extrema.Extrema_CCLocFOfLocECC_swiginit(self, _Extrema.new_Extrema_CCLocFOfLocECC(*args))

    def CurvePtr(self, *args) -> "Standard_Address":
        r"""
        Returns a pointer to the curve specified in the constructor or in setcurve() method.

        Parameters
        ----------
        theRank: int

        Returns
        -------
        Standard_Address

        """
        return _Extrema.Extrema_CCLocFOfLocECC_CurvePtr(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Return the number of found extrema.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_CCLocFOfLocECC_NbExt(self, *args)

    def Points(self, *args) -> "void":
        r"""
        Return the points of the nth extreme distance.

        Parameters
        ----------
        N: int
        P1: Extrema_POnCurv
        P2: Extrema_POnCurv

        Returns
        -------
        None

        """
        return _Extrema.Extrema_CCLocFOfLocECC_Points(self, *args)

    def SearchOfTolerance(self, *args) -> "Standard_Real":
        r"""
        Computes a tol value. if 1st derivative of curve |d1|<tol, it is considered d1=0.

        Parameters
        ----------
        C: Standard_Address

        Returns
        -------
        float

        """
        return _Extrema.Extrema_CCLocFOfLocECC_SearchOfTolerance(self, *args)

    def SetCurve(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        theRank: int
        C1: Adaptor3d_Curve

        Returns
        -------
        None

        """
        return _Extrema.Extrema_CCLocFOfLocECC_SetCurve(self, *args)

    def SetTolerance(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        theTol: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_CCLocFOfLocECC_SetTolerance(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Return the value of the nth distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_CCLocFOfLocECC_SquareDistance(self, *args)

    def SubIntervalInitialize(self, *args) -> "void":
        r"""
        Determines of boundaries of subinterval for find of root.

        Parameters
        ----------
        theUfirst: math_Vector
        theUlast: math_Vector

        Returns
        -------
        None

        """
        return _Extrema.Extrema_CCLocFOfLocECC_SubIntervalInitialize(self, *args)

    def Tolerance(self, *args) -> "Standard_Real":
        r"""
        Returns a tolerance specified in the constructor or in settolerance() method.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_CCLocFOfLocECC_Tolerance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_CCLocFOfLocECC

# Register Extrema_CCLocFOfLocECC in _Extrema:
_Extrema.Extrema_CCLocFOfLocECC_swigregister(Extrema_CCLocFOfLocECC)

class Extrema_CCLocFOfLocECC2d(OCC.Core.math.math_FunctionSetWithDerivatives):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Parameters
        ----------
        thetol: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C1: Adaptor2d_Curve2d
        C2: Adaptor2d_Curve2d
        thetol: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None

        """
        _Extrema.Extrema_CCLocFOfLocECC2d_swiginit(self, _Extrema.new_Extrema_CCLocFOfLocECC2d(*args))

    def CurvePtr(self, *args) -> "Standard_Address":
        r"""
        Returns a pointer to the curve specified in the constructor or in setcurve() method.

        Parameters
        ----------
        theRank: int

        Returns
        -------
        Standard_Address

        """
        return _Extrema.Extrema_CCLocFOfLocECC2d_CurvePtr(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Return the number of found extrema.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_CCLocFOfLocECC2d_NbExt(self, *args)

    def Points(self, *args) -> "void":
        r"""
        Return the points of the nth extreme distance.

        Parameters
        ----------
        N: int
        P1: Extrema_POnCurv2d
        P2: Extrema_POnCurv2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_CCLocFOfLocECC2d_Points(self, *args)

    def SearchOfTolerance(self, *args) -> "Standard_Real":
        r"""
        Computes a tol value. if 1st derivative of curve |d1|<tol, it is considered d1=0.

        Parameters
        ----------
        C: Standard_Address

        Returns
        -------
        float

        """
        return _Extrema.Extrema_CCLocFOfLocECC2d_SearchOfTolerance(self, *args)

    def SetCurve(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        theRank: int
        C1: Adaptor2d_Curve2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_CCLocFOfLocECC2d_SetCurve(self, *args)

    def SetTolerance(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        theTol: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_CCLocFOfLocECC2d_SetTolerance(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Return the value of the nth distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_CCLocFOfLocECC2d_SquareDistance(self, *args)

    def SubIntervalInitialize(self, *args) -> "void":
        r"""
        Determines of boundaries of subinterval for find of root.

        Parameters
        ----------
        theUfirst: math_Vector
        theUlast: math_Vector

        Returns
        -------
        None

        """
        return _Extrema.Extrema_CCLocFOfLocECC2d_SubIntervalInitialize(self, *args)

    def Tolerance(self, *args) -> "Standard_Real":
        r"""
        Returns a tolerance specified in the constructor or in settolerance() method.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_CCLocFOfLocECC2d_Tolerance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_CCLocFOfLocECC2d

# Register Extrema_CCLocFOfLocECC2d in _Extrema:
_Extrema.Extrema_CCLocFOfLocECC2d_swigregister(Extrema_CCLocFOfLocECC2d)

class Extrema_Curve2dTool(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    @staticmethod
    def BSpline(*args) -> "opencascade::handle< Geom2d_BSplineCurve >":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        opencascade::handle<Geom2d_BSplineCurve>

        """
        return _Extrema.Extrema_Curve2dTool_BSpline(*args)

    @staticmethod
    def Bezier(*args) -> "opencascade::handle< Geom2d_BezierCurve >":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        opencascade::handle<Geom2d_BezierCurve>

        """
        return _Extrema.Extrema_Curve2dTool_Bezier(*args)

    @staticmethod
    def Circle(*args) -> "gp_Circ2d":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        gp_Circ2d

        """
        return _Extrema.Extrema_Curve2dTool_Circle(*args)

    @staticmethod
    def Continuity(*args) -> "GeomAbs_Shape":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        GeomAbs_Shape

        """
        return _Extrema.Extrema_Curve2dTool_Continuity(*args)

    @staticmethod
    def D0(*args) -> "void":
        r"""
        Computes the point of parameter u on the curve.

        Parameters
        ----------
        C: Adaptor2d_Curve2d
        U: float
        P: gp_Pnt2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_Curve2dTool_D0(*args)

    @staticmethod
    def D1(*args) -> "void":
        r"""
        Computes the point of parameter u on the curve with its first derivative.

        Parameters
        ----------
        C: Adaptor2d_Curve2d
        U: float
        P: gp_Pnt2d
        V: gp_Vec2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_Curve2dTool_D1(*args)

    @staticmethod
    def D2(*args) -> "void":
        r"""
        Returns the point p of parameter u, the first and second derivatives v1 and v2.

        Parameters
        ----------
        C: Adaptor2d_Curve2d
        U: float
        P: gp_Pnt2d
        V1: gp_Vec2d
        V2: gp_Vec2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_Curve2dTool_D2(*args)

    @staticmethod
    def D3(*args) -> "void":
        r"""
        Returns the point p of parameter u, the first, the second and the third derivative.

        Parameters
        ----------
        C: Adaptor2d_Curve2d
        U: float
        P: gp_Pnt2d
        V1: gp_Vec2d
        V2: gp_Vec2d
        V3: gp_Vec2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_Curve2dTool_D3(*args)

    @staticmethod
    def DN(*args) -> "gp_Vec2d":
        r"""
        The returned vector gives the value of the derivative for the order of derivation n.

        Parameters
        ----------
        C: Adaptor2d_Curve2d
        U: float
        N: int

        Returns
        -------
        gp_Vec2d

        """
        return _Extrema.Extrema_Curve2dTool_DN(*args)

    @staticmethod
    def DeflCurvIntervals(*args) -> "opencascade::handle< TColStd_HArray1OfReal >":
        r"""
        Returns the parameters bounding the intervals of subdivision of curve according to curvature deflection. value of deflection is defined in method. //!.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        opencascade::handle<TColStd_HArray1OfReal>

        """
        return _Extrema.Extrema_Curve2dTool_DeflCurvIntervals(*args)

    @staticmethod
    def Degree(*args) -> "Standard_Integer":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        int

        """
        return _Extrema.Extrema_Curve2dTool_Degree(*args)

    @staticmethod
    def Ellipse(*args) -> "gp_Elips2d":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        gp_Elips2d

        """
        return _Extrema.Extrema_Curve2dTool_Ellipse(*args)

    @staticmethod
    def FirstParameter(*args) -> "Standard_Real":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        float

        """
        return _Extrema.Extrema_Curve2dTool_FirstParameter(*args)

    @staticmethod
    def GetType(*args) -> "GeomAbs_CurveType":
        r"""
        Returns the type of the curve in the current interval : line, circle, ellipse, hyperbola, parabola, beziercurve, bsplinecurve, othercurve.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        GeomAbs_CurveType

        """
        return _Extrema.Extrema_Curve2dTool_GetType(*args)

    @staticmethod
    def Hyperbola(*args) -> "gp_Hypr2d":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        gp_Hypr2d

        """
        return _Extrema.Extrema_Curve2dTool_Hyperbola(*args)

    @staticmethod
    def Intervals(*args) -> "void":
        r"""
        Stores in <t> the parameters bounding the intervals of continuity <s>.

        Parameters
        ----------
        C: Adaptor2d_Curve2d
        T: TColStd_Array1OfReal
        S: GeomAbs_Shape

        Returns
        -------
        None

        """
        return _Extrema.Extrema_Curve2dTool_Intervals(*args)

    @staticmethod
    def IsClosed(*args) -> "Standard_Boolean":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_Curve2dTool_IsClosed(*args)

    @staticmethod
    def IsPeriodic(*args) -> "Standard_Boolean":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_Curve2dTool_IsPeriodic(*args)

    @staticmethod
    def IsRational(*args) -> "Standard_Boolean":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_Curve2dTool_IsRational(*args)

    @staticmethod
    def LastParameter(*args) -> "Standard_Real":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        float

        """
        return _Extrema.Extrema_Curve2dTool_LastParameter(*args)

    @staticmethod
    def Line(*args) -> "gp_Lin2d":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        gp_Lin2d

        """
        return _Extrema.Extrema_Curve2dTool_Line(*args)

    @staticmethod
    def NbIntervals(*args) -> "Standard_Integer":
        r"""
        If necessary, breaks the curve in intervals of continuity <s>. and returns the number of intervals.

        Parameters
        ----------
        C: Adaptor2d_Curve2d
        S: GeomAbs_Shape

        Returns
        -------
        int

        """
        return _Extrema.Extrema_Curve2dTool_NbIntervals(*args)

    @staticmethod
    def NbKnots(*args) -> "Standard_Integer":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        int

        """
        return _Extrema.Extrema_Curve2dTool_NbKnots(*args)

    @staticmethod
    def NbPoles(*args) -> "Standard_Integer":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        int

        """
        return _Extrema.Extrema_Curve2dTool_NbPoles(*args)

    @staticmethod
    def Parabola(*args) -> "gp_Parab2d":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        gp_Parab2d

        """
        return _Extrema.Extrema_Curve2dTool_Parabola(*args)

    @staticmethod
    def Period(*args) -> "Standard_Real":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        float

        """
        return _Extrema.Extrema_Curve2dTool_Period(*args)

    @staticmethod
    def Resolution(*args) -> "Standard_Real":
        r"""
        Returns the parametric resolution corresponding to the real space resolution <r3d>.

        Parameters
        ----------
        C: Adaptor2d_Curve2d
        R3d: float

        Returns
        -------
        float

        """
        return _Extrema.Extrema_Curve2dTool_Resolution(*args)

    @staticmethod
    def Value(*args) -> "gp_Pnt2d":
        r"""
        Computes the point of parameter u on the curve.

        Parameters
        ----------
        C: Adaptor2d_Curve2d
        U: float

        Returns
        -------
        gp_Pnt2d

        """
        return _Extrema.Extrema_Curve2dTool_Value(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _Extrema.Extrema_Curve2dTool_swiginit(self, _Extrema.new_Extrema_Curve2dTool())
    __swig_destroy__ = _Extrema.delete_Extrema_Curve2dTool

# Register Extrema_Curve2dTool in _Extrema:
_Extrema.Extrema_Curve2dTool_swigregister(Extrema_Curve2dTool)

def Extrema_Curve2dTool_BSpline(*args) -> "opencascade::handle< Geom2d_BSplineCurve >":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor2d_Curve2d

    Returns
    -------
    opencascade::handle<Geom2d_BSplineCurve>

    """
    return _Extrema.Extrema_Curve2dTool_BSpline(*args)

def Extrema_Curve2dTool_Bezier(*args) -> "opencascade::handle< Geom2d_BezierCurve >":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor2d_Curve2d

    Returns
    -------
    opencascade::handle<Geom2d_BezierCurve>

    """
    return _Extrema.Extrema_Curve2dTool_Bezier(*args)

def Extrema_Curve2dTool_Circle(*args) -> "gp_Circ2d":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor2d_Curve2d

    Returns
    -------
    gp_Circ2d

    """
    return _Extrema.Extrema_Curve2dTool_Circle(*args)

def Extrema_Curve2dTool_Continuity(*args) -> "GeomAbs_Shape":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor2d_Curve2d

    Returns
    -------
    GeomAbs_Shape

    """
    return _Extrema.Extrema_Curve2dTool_Continuity(*args)

def Extrema_Curve2dTool_D0(*args) -> "void":
    r"""
    Computes the point of parameter u on the curve.

    Parameters
    ----------
    C: Adaptor2d_Curve2d
    U: float
    P: gp_Pnt2d

    Returns
    -------
    None

    """
    return _Extrema.Extrema_Curve2dTool_D0(*args)

def Extrema_Curve2dTool_D1(*args) -> "void":
    r"""
    Computes the point of parameter u on the curve with its first derivative.

    Parameters
    ----------
    C: Adaptor2d_Curve2d
    U: float
    P: gp_Pnt2d
    V: gp_Vec2d

    Returns
    -------
    None

    """
    return _Extrema.Extrema_Curve2dTool_D1(*args)

def Extrema_Curve2dTool_D2(*args) -> "void":
    r"""
    Returns the point p of parameter u, the first and second derivatives v1 and v2.

    Parameters
    ----------
    C: Adaptor2d_Curve2d
    U: float
    P: gp_Pnt2d
    V1: gp_Vec2d
    V2: gp_Vec2d

    Returns
    -------
    None

    """
    return _Extrema.Extrema_Curve2dTool_D2(*args)

def Extrema_Curve2dTool_D3(*args) -> "void":
    r"""
    Returns the point p of parameter u, the first, the second and the third derivative.

    Parameters
    ----------
    C: Adaptor2d_Curve2d
    U: float
    P: gp_Pnt2d
    V1: gp_Vec2d
    V2: gp_Vec2d
    V3: gp_Vec2d

    Returns
    -------
    None

    """
    return _Extrema.Extrema_Curve2dTool_D3(*args)

def Extrema_Curve2dTool_DN(*args) -> "gp_Vec2d":
    r"""
    The returned vector gives the value of the derivative for the order of derivation n.

    Parameters
    ----------
    C: Adaptor2d_Curve2d
    U: float
    N: int

    Returns
    -------
    gp_Vec2d

    """
    return _Extrema.Extrema_Curve2dTool_DN(*args)

def Extrema_Curve2dTool_DeflCurvIntervals(*args) -> "opencascade::handle< TColStd_HArray1OfReal >":
    r"""
    Returns the parameters bounding the intervals of subdivision of curve according to curvature deflection. value of deflection is defined in method. //!.

    Parameters
    ----------
    C: Adaptor2d_Curve2d

    Returns
    -------
    opencascade::handle<TColStd_HArray1OfReal>

    """
    return _Extrema.Extrema_Curve2dTool_DeflCurvIntervals(*args)

def Extrema_Curve2dTool_Degree(*args) -> "Standard_Integer":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor2d_Curve2d

    Returns
    -------
    int

    """
    return _Extrema.Extrema_Curve2dTool_Degree(*args)

def Extrema_Curve2dTool_Ellipse(*args) -> "gp_Elips2d":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor2d_Curve2d

    Returns
    -------
    gp_Elips2d

    """
    return _Extrema.Extrema_Curve2dTool_Ellipse(*args)

def Extrema_Curve2dTool_FirstParameter(*args) -> "Standard_Real":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor2d_Curve2d

    Returns
    -------
    float

    """
    return _Extrema.Extrema_Curve2dTool_FirstParameter(*args)

def Extrema_Curve2dTool_GetType(*args) -> "GeomAbs_CurveType":
    r"""
    Returns the type of the curve in the current interval : line, circle, ellipse, hyperbola, parabola, beziercurve, bsplinecurve, othercurve.

    Parameters
    ----------
    C: Adaptor2d_Curve2d

    Returns
    -------
    GeomAbs_CurveType

    """
    return _Extrema.Extrema_Curve2dTool_GetType(*args)

def Extrema_Curve2dTool_Hyperbola(*args) -> "gp_Hypr2d":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor2d_Curve2d

    Returns
    -------
    gp_Hypr2d

    """
    return _Extrema.Extrema_Curve2dTool_Hyperbola(*args)

def Extrema_Curve2dTool_Intervals(*args) -> "void":
    r"""
    Stores in <t> the parameters bounding the intervals of continuity <s>.

    Parameters
    ----------
    C: Adaptor2d_Curve2d
    T: TColStd_Array1OfReal
    S: GeomAbs_Shape

    Returns
    -------
    None

    """
    return _Extrema.Extrema_Curve2dTool_Intervals(*args)

def Extrema_Curve2dTool_IsClosed(*args) -> "Standard_Boolean":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor2d_Curve2d

    Returns
    -------
    bool

    """
    return _Extrema.Extrema_Curve2dTool_IsClosed(*args)

def Extrema_Curve2dTool_IsPeriodic(*args) -> "Standard_Boolean":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor2d_Curve2d

    Returns
    -------
    bool

    """
    return _Extrema.Extrema_Curve2dTool_IsPeriodic(*args)

def Extrema_Curve2dTool_IsRational(*args) -> "Standard_Boolean":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor2d_Curve2d

    Returns
    -------
    bool

    """
    return _Extrema.Extrema_Curve2dTool_IsRational(*args)

def Extrema_Curve2dTool_LastParameter(*args) -> "Standard_Real":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor2d_Curve2d

    Returns
    -------
    float

    """
    return _Extrema.Extrema_Curve2dTool_LastParameter(*args)

def Extrema_Curve2dTool_Line(*args) -> "gp_Lin2d":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor2d_Curve2d

    Returns
    -------
    gp_Lin2d

    """
    return _Extrema.Extrema_Curve2dTool_Line(*args)

def Extrema_Curve2dTool_NbIntervals(*args) -> "Standard_Integer":
    r"""
    If necessary, breaks the curve in intervals of continuity <s>. and returns the number of intervals.

    Parameters
    ----------
    C: Adaptor2d_Curve2d
    S: GeomAbs_Shape

    Returns
    -------
    int

    """
    return _Extrema.Extrema_Curve2dTool_NbIntervals(*args)

def Extrema_Curve2dTool_NbKnots(*args) -> "Standard_Integer":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor2d_Curve2d

    Returns
    -------
    int

    """
    return _Extrema.Extrema_Curve2dTool_NbKnots(*args)

def Extrema_Curve2dTool_NbPoles(*args) -> "Standard_Integer":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor2d_Curve2d

    Returns
    -------
    int

    """
    return _Extrema.Extrema_Curve2dTool_NbPoles(*args)

def Extrema_Curve2dTool_Parabola(*args) -> "gp_Parab2d":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor2d_Curve2d

    Returns
    -------
    gp_Parab2d

    """
    return _Extrema.Extrema_Curve2dTool_Parabola(*args)

def Extrema_Curve2dTool_Period(*args) -> "Standard_Real":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor2d_Curve2d

    Returns
    -------
    float

    """
    return _Extrema.Extrema_Curve2dTool_Period(*args)

def Extrema_Curve2dTool_Resolution(*args) -> "Standard_Real":
    r"""
    Returns the parametric resolution corresponding to the real space resolution <r3d>.

    Parameters
    ----------
    C: Adaptor2d_Curve2d
    R3d: float

    Returns
    -------
    float

    """
    return _Extrema.Extrema_Curve2dTool_Resolution(*args)

def Extrema_Curve2dTool_Value(*args) -> "gp_Pnt2d":
    r"""
    Computes the point of parameter u on the curve.

    Parameters
    ----------
    C: Adaptor2d_Curve2d
    U: float

    Returns
    -------
    gp_Pnt2d

    """
    return _Extrema.Extrema_Curve2dTool_Value(*args)

class Extrema_CurveTool(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    @staticmethod
    def BSpline(*args) -> "opencascade::handle< Geom_BSplineCurve >":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        opencascade::handle<Geom_BSplineCurve>

        """
        return _Extrema.Extrema_CurveTool_BSpline(*args)

    @staticmethod
    def Bezier(*args) -> "opencascade::handle< Geom_BezierCurve >":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        opencascade::handle<Geom_BezierCurve>

        """
        return _Extrema.Extrema_CurveTool_Bezier(*args)

    @staticmethod
    def Circle(*args) -> "gp_Circ":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        gp_Circ

        """
        return _Extrema.Extrema_CurveTool_Circle(*args)

    @staticmethod
    def Continuity(*args) -> "GeomAbs_Shape":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        GeomAbs_Shape

        """
        return _Extrema.Extrema_CurveTool_Continuity(*args)

    @staticmethod
    def D0(*args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve
        U: float
        P: gp_Pnt

        Returns
        -------
        None

        """
        return _Extrema.Extrema_CurveTool_D0(*args)

    @staticmethod
    def D1(*args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve
        U: float
        P: gp_Pnt
        V: gp_Vec

        Returns
        -------
        None

        """
        return _Extrema.Extrema_CurveTool_D1(*args)

    @staticmethod
    def D2(*args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve
        U: float
        P: gp_Pnt
        V1: gp_Vec
        V2: gp_Vec

        Returns
        -------
        None

        """
        return _Extrema.Extrema_CurveTool_D2(*args)

    @staticmethod
    def D3(*args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve
        U: float
        P: gp_Pnt
        V1: gp_Vec
        V2: gp_Vec
        V3: gp_Vec

        Returns
        -------
        None

        """
        return _Extrema.Extrema_CurveTool_D3(*args)

    @staticmethod
    def DN(*args) -> "gp_Vec":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve
        U: float
        N: int

        Returns
        -------
        gp_Vec

        """
        return _Extrema.Extrema_CurveTool_DN(*args)

    @staticmethod
    def DeflCurvIntervals(*args) -> "opencascade::handle< TColStd_HArray1OfReal >":
        r"""
        Returns the parameters bounding the intervals of subdivision of curve according to curvature deflection. value of deflection is defined in method. //!.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        opencascade::handle<TColStd_HArray1OfReal>

        """
        return _Extrema.Extrema_CurveTool_DeflCurvIntervals(*args)

    @staticmethod
    def Degree(*args) -> "Standard_Integer":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        int

        """
        return _Extrema.Extrema_CurveTool_Degree(*args)

    @staticmethod
    def Ellipse(*args) -> "gp_Elips":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        gp_Elips

        """
        return _Extrema.Extrema_CurveTool_Ellipse(*args)

    @staticmethod
    def FirstParameter(*args) -> "Standard_Real":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        float

        """
        return _Extrema.Extrema_CurveTool_FirstParameter(*args)

    @staticmethod
    def GetType(*args) -> "GeomAbs_CurveType":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        GeomAbs_CurveType

        """
        return _Extrema.Extrema_CurveTool_GetType(*args)

    @staticmethod
    def Hyperbola(*args) -> "gp_Hypr":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        gp_Hypr

        """
        return _Extrema.Extrema_CurveTool_Hyperbola(*args)

    @staticmethod
    def Intervals(*args) -> "void":
        r"""
        Stores in <t> the parameters bounding the intervals of continuity <s>. //! the array must provide enough room to accomodate for the parameters. i.e. t.length() > nbintervals().

        Parameters
        ----------
        C: Adaptor3d_Curve
        T: TColStd_Array1OfReal
        S: GeomAbs_Shape

        Returns
        -------
        None

        """
        return _Extrema.Extrema_CurveTool_Intervals(*args)

    @staticmethod
    def IsPeriodic(*args) -> "Standard_Boolean":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_CurveTool_IsPeriodic(*args)

    @staticmethod
    def IsRational(*args) -> "Standard_Boolean":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_CurveTool_IsRational(*args)

    @staticmethod
    def LastParameter(*args) -> "Standard_Real":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        float

        """
        return _Extrema.Extrema_CurveTool_LastParameter(*args)

    @staticmethod
    def Line(*args) -> "gp_Lin":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        gp_Lin

        """
        return _Extrema.Extrema_CurveTool_Line(*args)

    @staticmethod
    def NbIntervals(*args) -> "Standard_Integer":
        r"""
        Returns the number of intervals for continuity <s>. may be one if continuity(me) >= <s>.

        Parameters
        ----------
        C: Adaptor3d_Curve
        S: GeomAbs_Shape

        Returns
        -------
        int

        """
        return _Extrema.Extrema_CurveTool_NbIntervals(*args)

    @staticmethod
    def NbKnots(*args) -> "Standard_Integer":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        int

        """
        return _Extrema.Extrema_CurveTool_NbKnots(*args)

    @staticmethod
    def NbPoles(*args) -> "Standard_Integer":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        int

        """
        return _Extrema.Extrema_CurveTool_NbPoles(*args)

    @staticmethod
    def Parabola(*args) -> "gp_Parab":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        gp_Parab

        """
        return _Extrema.Extrema_CurveTool_Parabola(*args)

    @staticmethod
    def Period(*args) -> "Standard_Real":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        float

        """
        return _Extrema.Extrema_CurveTool_Period(*args)

    @staticmethod
    def Resolution(*args) -> "Standard_Real":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve
        R3d: float

        Returns
        -------
        float

        """
        return _Extrema.Extrema_CurveTool_Resolution(*args)

    @staticmethod
    def Value(*args) -> "gp_Pnt":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve
        U: float

        Returns
        -------
        gp_Pnt

        """
        return _Extrema.Extrema_CurveTool_Value(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _Extrema.Extrema_CurveTool_swiginit(self, _Extrema.new_Extrema_CurveTool())
    __swig_destroy__ = _Extrema.delete_Extrema_CurveTool

# Register Extrema_CurveTool in _Extrema:
_Extrema.Extrema_CurveTool_swigregister(Extrema_CurveTool)

def Extrema_CurveTool_BSpline(*args) -> "opencascade::handle< Geom_BSplineCurve >":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve

    Returns
    -------
    opencascade::handle<Geom_BSplineCurve>

    """
    return _Extrema.Extrema_CurveTool_BSpline(*args)

def Extrema_CurveTool_Bezier(*args) -> "opencascade::handle< Geom_BezierCurve >":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve

    Returns
    -------
    opencascade::handle<Geom_BezierCurve>

    """
    return _Extrema.Extrema_CurveTool_Bezier(*args)

def Extrema_CurveTool_Circle(*args) -> "gp_Circ":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve

    Returns
    -------
    gp_Circ

    """
    return _Extrema.Extrema_CurveTool_Circle(*args)

def Extrema_CurveTool_Continuity(*args) -> "GeomAbs_Shape":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve

    Returns
    -------
    GeomAbs_Shape

    """
    return _Extrema.Extrema_CurveTool_Continuity(*args)

def Extrema_CurveTool_D0(*args) -> "void":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve
    U: float
    P: gp_Pnt

    Returns
    -------
    None

    """
    return _Extrema.Extrema_CurveTool_D0(*args)

def Extrema_CurveTool_D1(*args) -> "void":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve
    U: float
    P: gp_Pnt
    V: gp_Vec

    Returns
    -------
    None

    """
    return _Extrema.Extrema_CurveTool_D1(*args)

def Extrema_CurveTool_D2(*args) -> "void":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve
    U: float
    P: gp_Pnt
    V1: gp_Vec
    V2: gp_Vec

    Returns
    -------
    None

    """
    return _Extrema.Extrema_CurveTool_D2(*args)

def Extrema_CurveTool_D3(*args) -> "void":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve
    U: float
    P: gp_Pnt
    V1: gp_Vec
    V2: gp_Vec
    V3: gp_Vec

    Returns
    -------
    None

    """
    return _Extrema.Extrema_CurveTool_D3(*args)

def Extrema_CurveTool_DN(*args) -> "gp_Vec":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve
    U: float
    N: int

    Returns
    -------
    gp_Vec

    """
    return _Extrema.Extrema_CurveTool_DN(*args)

def Extrema_CurveTool_DeflCurvIntervals(*args) -> "opencascade::handle< TColStd_HArray1OfReal >":
    r"""
    Returns the parameters bounding the intervals of subdivision of curve according to curvature deflection. value of deflection is defined in method. //!.

    Parameters
    ----------
    C: Adaptor3d_Curve

    Returns
    -------
    opencascade::handle<TColStd_HArray1OfReal>

    """
    return _Extrema.Extrema_CurveTool_DeflCurvIntervals(*args)

def Extrema_CurveTool_Degree(*args) -> "Standard_Integer":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve

    Returns
    -------
    int

    """
    return _Extrema.Extrema_CurveTool_Degree(*args)

def Extrema_CurveTool_Ellipse(*args) -> "gp_Elips":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve

    Returns
    -------
    gp_Elips

    """
    return _Extrema.Extrema_CurveTool_Ellipse(*args)

def Extrema_CurveTool_FirstParameter(*args) -> "Standard_Real":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve

    Returns
    -------
    float

    """
    return _Extrema.Extrema_CurveTool_FirstParameter(*args)

def Extrema_CurveTool_GetType(*args) -> "GeomAbs_CurveType":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve

    Returns
    -------
    GeomAbs_CurveType

    """
    return _Extrema.Extrema_CurveTool_GetType(*args)

def Extrema_CurveTool_Hyperbola(*args) -> "gp_Hypr":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve

    Returns
    -------
    gp_Hypr

    """
    return _Extrema.Extrema_CurveTool_Hyperbola(*args)

def Extrema_CurveTool_Intervals(*args) -> "void":
    r"""
    Stores in <t> the parameters bounding the intervals of continuity <s>. //! the array must provide enough room to accomodate for the parameters. i.e. t.length() > nbintervals().

    Parameters
    ----------
    C: Adaptor3d_Curve
    T: TColStd_Array1OfReal
    S: GeomAbs_Shape

    Returns
    -------
    None

    """
    return _Extrema.Extrema_CurveTool_Intervals(*args)

def Extrema_CurveTool_IsPeriodic(*args) -> "Standard_Boolean":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve

    Returns
    -------
    bool

    """
    return _Extrema.Extrema_CurveTool_IsPeriodic(*args)

def Extrema_CurveTool_IsRational(*args) -> "Standard_Boolean":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve

    Returns
    -------
    bool

    """
    return _Extrema.Extrema_CurveTool_IsRational(*args)

def Extrema_CurveTool_LastParameter(*args) -> "Standard_Real":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve

    Returns
    -------
    float

    """
    return _Extrema.Extrema_CurveTool_LastParameter(*args)

def Extrema_CurveTool_Line(*args) -> "gp_Lin":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve

    Returns
    -------
    gp_Lin

    """
    return _Extrema.Extrema_CurveTool_Line(*args)

def Extrema_CurveTool_NbIntervals(*args) -> "Standard_Integer":
    r"""
    Returns the number of intervals for continuity <s>. may be one if continuity(me) >= <s>.

    Parameters
    ----------
    C: Adaptor3d_Curve
    S: GeomAbs_Shape

    Returns
    -------
    int

    """
    return _Extrema.Extrema_CurveTool_NbIntervals(*args)

def Extrema_CurveTool_NbKnots(*args) -> "Standard_Integer":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve

    Returns
    -------
    int

    """
    return _Extrema.Extrema_CurveTool_NbKnots(*args)

def Extrema_CurveTool_NbPoles(*args) -> "Standard_Integer":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve

    Returns
    -------
    int

    """
    return _Extrema.Extrema_CurveTool_NbPoles(*args)

def Extrema_CurveTool_Parabola(*args) -> "gp_Parab":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve

    Returns
    -------
    gp_Parab

    """
    return _Extrema.Extrema_CurveTool_Parabola(*args)

def Extrema_CurveTool_Period(*args) -> "Standard_Real":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve

    Returns
    -------
    float

    """
    return _Extrema.Extrema_CurveTool_Period(*args)

def Extrema_CurveTool_Resolution(*args) -> "Standard_Real":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve
    R3d: float

    Returns
    -------
    float

    """
    return _Extrema.Extrema_CurveTool_Resolution(*args)

def Extrema_CurveTool_Value(*args) -> "gp_Pnt":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_Curve
    U: float

    Returns
    -------
    gp_Pnt

    """
    return _Extrema.Extrema_CurveTool_Value(*args)

class Extrema_ECC(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Calculates all the distances as above between uinf and usup for c1 and between vinf and vsup for c2.

        Returns
        -------
        None
        It calculates all the distances. the function f(u,v)=distance(c1(u),c2(v)) has an extremum when gradient(f)=0. the algorithm uses evtushenko's global optimization solver.

        Parameters
        ----------
        C1: Adaptor3d_Curve
        C2: Adaptor3d_Curve

        Returns
        -------
        None
        Calculates all the distances as above between uinf and usup for c1 and between vinf and vsup for c2.

        Parameters
        ----------
        C1: Adaptor3d_Curve
        C2: Adaptor3d_Curve
        Uinf: float
        Usup: float
        Vinf: float
        Vsup: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_ECC_swiginit(self, _Extrema.new_Extrema_ECC(*args))

    def GetSingleSolutionFlag(self, *args) -> "Standard_Boolean":
        r"""
        Get flag for single extrema computation. works on parametric solver only.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ECC_GetSingleSolutionFlag(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ECC_IsDone(self, *args)

    def IsParallel(self, *args) -> "Standard_Boolean":
        r"""
        Returns state of myparallel flag.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ECC_IsParallel(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_ECC_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        Performs calculations.

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ECC_Perform(self, *args)

    def Points(self, *args) -> "void":
        r"""
        Returns the points of the nth extremum distance. p1 is on the first curve, p2 on the second one.

        Parameters
        ----------
        N: int
        P1: Extrema_POnCurv
        P2: Extrema_POnCurv

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ECC_Points(self, *args)

    def SetParams(self, *args) -> "void":
        r"""
        Set params in case of empty constructor is usage.

        Parameters
        ----------
        C1: Adaptor3d_Curve
        C2: Adaptor3d_Curve
        Uinf: float
        Usup: float
        Vinf: float
        Vsup: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ECC_SetParams(self, *args)

    def SetSingleSolutionFlag(self, *args) -> "void":
        r"""
        Set flag for single extrema computation. works on parametric solver only.

        Parameters
        ----------
        theSingleSolutionFlag: bool

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ECC_SetSingleSolutionFlag(self, *args)

    def SetTolerance(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        Tol: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ECC_SetTolerance(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth square extremum distance.

        Parameters
        ----------
        N: int,optional
        	default value is 1

        Returns
        -------
        float

        """
        return _Extrema.Extrema_ECC_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_ECC

# Register Extrema_ECC in _Extrema:
_Extrema.Extrema_ECC_swigregister(Extrema_ECC)

class Extrema_ECC2d(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Calculates all the distances as above between uinf and usup for c1 and between vinf and vsup for c2.

        Returns
        -------
        None
        It calculates all the distances. the function f(u,v)=distance(c1(u),c2(v)) has an extremum when gradient(f)=0. the algorithm uses evtushenko's global optimization solver.

        Parameters
        ----------
        C1: Adaptor2d_Curve2d
        C2: Adaptor2d_Curve2d

        Returns
        -------
        None
        Calculates all the distances as above between uinf and usup for c1 and between vinf and vsup for c2.

        Parameters
        ----------
        C1: Adaptor2d_Curve2d
        C2: Adaptor2d_Curve2d
        Uinf: float
        Usup: float
        Vinf: float
        Vsup: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_ECC2d_swiginit(self, _Extrema.new_Extrema_ECC2d(*args))

    def GetSingleSolutionFlag(self, *args) -> "Standard_Boolean":
        r"""
        Get flag for single extrema computation. works on parametric solver only.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ECC2d_GetSingleSolutionFlag(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ECC2d_IsDone(self, *args)

    def IsParallel(self, *args) -> "Standard_Boolean":
        r"""
        Returns state of myparallel flag.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ECC2d_IsParallel(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_ECC2d_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        Performs calculations.

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ECC2d_Perform(self, *args)

    def Points(self, *args) -> "void":
        r"""
        Returns the points of the nth extremum distance. p1 is on the first curve, p2 on the second one.

        Parameters
        ----------
        N: int
        P1: Extrema_POnCurv2d
        P2: Extrema_POnCurv2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ECC2d_Points(self, *args)

    def SetParams(self, *args) -> "void":
        r"""
        Set params in case of empty constructor is usage.

        Parameters
        ----------
        C1: Adaptor2d_Curve2d
        C2: Adaptor2d_Curve2d
        Uinf: float
        Usup: float
        Vinf: float
        Vsup: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ECC2d_SetParams(self, *args)

    def SetSingleSolutionFlag(self, *args) -> "void":
        r"""
        Set flag for single extrema computation. works on parametric solver only.

        Parameters
        ----------
        theSingleSolutionFlag: bool

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ECC2d_SetSingleSolutionFlag(self, *args)

    def SetTolerance(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        Tol: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ECC2d_SetTolerance(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth square extremum distance.

        Parameters
        ----------
        N: int,optional
        	default value is 1

        Returns
        -------
        float

        """
        return _Extrema.Extrema_ECC2d_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_ECC2d

# Register Extrema_ECC2d in _Extrema:
_Extrema.Extrema_ECC2d_swigregister(Extrema_ECC2d)

class Extrema_ELPCOfLocateExtPC(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        It calculates all the distances. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs all the zeros inside the definition range of the curve. zeros are searched between uinf and usup. tol is used to decide to stop the iterations according to the following condition: if n is the number of iterations, the algorithm stops when abs(f(un)-f(un-1)) < tol.

        Parameters
        ----------
        P: gp_Pnt
        C: Adaptor3d_Curve
        Uinf: float
        Usup: float
        TolF: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None
        It calculates all the distances. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs all the zeros inside the definition range of the curve. tol is used to decide to stop the iterations according to the following condition: if n is the number of iterations, the algorithm stops when abs(f(un)-f(un-1)) < tol.

        Parameters
        ----------
        P: gp_Pnt
        C: Adaptor3d_Curve
        TolF: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None

        """
        _Extrema.Extrema_ELPCOfLocateExtPC_swiginit(self, _Extrema.new_Extrema_ELPCOfLocateExtPC(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Initializes the fields of the algorithm.

        Parameters
        ----------
        C: Adaptor3d_Curve
        Uinf: float
        Usup: float
        TolF: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ELPCOfLocateExtPC_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        True if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ELPCOfLocateExtPC_IsDone(self, *args)

    def IsMin(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the <n>th extremum distance is a minimum.

        Parameters
        ----------
        N: int

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ELPCOfLocateExtPC_IsMin(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_ELPCOfLocateExtPC_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        An exception is raised if the fields have not been initialized.

        Parameters
        ----------
        P: gp_Pnt

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ELPCOfLocateExtPC_Perform(self, *args)

    def Point(self, *args) -> "Extrema_POnCurv const &":
        r"""
        Returns the point of the <n>th extremum distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnCurv

        """
        return _Extrema.Extrema_ELPCOfLocateExtPC_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the <n>th extremum square distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_ELPCOfLocateExtPC_SquareDistance(self, *args)

    def TrimmedSquareDistances(self, *args) -> "void":
        r"""
        If the curve is a trimmed curve, dist1 is a square distance between <p> and the point of parameter firstparameter <p1> and dist2 is a square distance between <p> and the point of parameter lastparameter <p2>.

        Parameters
        ----------
        P1: gp_Pnt
        P2: gp_Pnt

        Returns
        -------
        dist1: float
        dist2: float

        """
        return _Extrema.Extrema_ELPCOfLocateExtPC_TrimmedSquareDistances(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_ELPCOfLocateExtPC

# Register Extrema_ELPCOfLocateExtPC in _Extrema:
_Extrema.Extrema_ELPCOfLocateExtPC_swigregister(Extrema_ELPCOfLocateExtPC)

class Extrema_ELPCOfLocateExtPC2d(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        It calculates all the distances. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs all the zeros inside the definition range of the curve. zeros are searched between uinf and usup. tol is used to decide to stop the iterations according to the following condition: if n is the number of iterations, the algorithm stops when abs(f(un)-f(un-1)) < tol.

        Parameters
        ----------
        P: gp_Pnt2d
        C: Adaptor2d_Curve2d
        Uinf: float
        Usup: float
        TolF: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None
        It calculates all the distances. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs all the zeros inside the definition range of the curve. tol is used to decide to stop the iterations according to the following condition: if n is the number of iterations, the algorithm stops when abs(f(un)-f(un-1)) < tol.

        Parameters
        ----------
        P: gp_Pnt2d
        C: Adaptor2d_Curve2d
        TolF: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None

        """
        _Extrema.Extrema_ELPCOfLocateExtPC2d_swiginit(self, _Extrema.new_Extrema_ELPCOfLocateExtPC2d(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Initializes the fields of the algorithm.

        Parameters
        ----------
        C: Adaptor2d_Curve2d
        Uinf: float
        Usup: float
        TolF: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ELPCOfLocateExtPC2d_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        True if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ELPCOfLocateExtPC2d_IsDone(self, *args)

    def IsMin(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the <n>th extremum distance is a minimum.

        Parameters
        ----------
        N: int

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ELPCOfLocateExtPC2d_IsMin(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_ELPCOfLocateExtPC2d_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        An exception is raised if the fields have not been initialized.

        Parameters
        ----------
        P: gp_Pnt2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ELPCOfLocateExtPC2d_Perform(self, *args)

    def Point(self, *args) -> "Extrema_POnCurv2d const &":
        r"""
        Returns the point of the <n>th extremum distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnCurv2d

        """
        return _Extrema.Extrema_ELPCOfLocateExtPC2d_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the <n>th extremum square distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_ELPCOfLocateExtPC2d_SquareDistance(self, *args)

    def TrimmedSquareDistances(self, *args) -> "void":
        r"""
        If the curve is a trimmed curve, dist1 is a square distance between <p> and the point of parameter firstparameter <p1> and dist2 is a square distance between <p> and the point of parameter lastparameter <p2>.

        Parameters
        ----------
        P1: gp_Pnt2d
        P2: gp_Pnt2d

        Returns
        -------
        dist1: float
        dist2: float

        """
        return _Extrema.Extrema_ELPCOfLocateExtPC2d_TrimmedSquareDistances(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_ELPCOfLocateExtPC2d

# Register Extrema_ELPCOfLocateExtPC2d in _Extrema:
_Extrema.Extrema_ELPCOfLocateExtPC2d_swigregister(Extrema_ELPCOfLocateExtPC2d)

class Extrema_EPCOfELPCOfLocateExtPC(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        It calculates all the distances. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs all the zeros inside the definition range of the curve. nbu is used to locate the close points to find the zeros. tol and tolu are used to decide to stop the iterations according to the following condition: if n is the number of iterations, abs(un-un-1) < tolu and abs(f(un)-f(un-1)) < tol.

        Parameters
        ----------
        P: gp_Pnt
        C: Adaptor3d_Curve
        NbU: int
        TolU: float
        TolF: float

        Returns
        -------
        None
        It calculates all the distances. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs all the zeros inside the definition range of the curve. nbu is used to locate the close points to find the zeros. zeros are searched between umin and usup. tol and tolu are used to decide to stop the iterations according to the following condition: if n is the number of iterations, abs(un-un-1) < tolu and abs(f(un)-f(un-1)) < tol.

        Parameters
        ----------
        P: gp_Pnt
        C: Adaptor3d_Curve
        NbU: int
        Umin: float
        Usup: float
        TolU: float
        TolF: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_EPCOfELPCOfLocateExtPC_swiginit(self, _Extrema.new_Extrema_EPCOfELPCOfLocateExtPC(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Sets the fields of the algorithm.

        Parameters
        ----------
        C: Adaptor3d_Curve
        NbU: int
        TolU: float
        TolF: float

        Returns
        -------
        None
        Sets the fields of the algorithm.

        Parameters
        ----------
        C: Adaptor3d_Curve
        NbU: int
        Umin: float
        Usup: float
        TolU: float
        TolF: float

        Returns
        -------
        None
        Sets the fields of the algorithm.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        None
        Sets the fields of the algorithm.

        Parameters
        ----------
        NbU: int
        Umin: float
        Usup: float
        TolU: float
        TolF: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_EPCOfELPCOfLocateExtPC_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        True if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_EPCOfELPCOfLocateExtPC_IsDone(self, *args)

    def IsMin(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the nth extremum distance is a minimum.

        Parameters
        ----------
        N: int

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_EPCOfELPCOfLocateExtPC_IsMin(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_EPCOfELPCOfLocateExtPC_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        The algorithm is done with the point p. an exception is raised if the fields have not been initialized.

        Parameters
        ----------
        P: gp_Pnt

        Returns
        -------
        None

        """
        return _Extrema.Extrema_EPCOfELPCOfLocateExtPC_Perform(self, *args)

    def Point(self, *args) -> "Extrema_POnCurv const &":
        r"""
        Returns the point of the nth extremum distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnCurv

        """
        return _Extrema.Extrema_EPCOfELPCOfLocateExtPC_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth extremum square distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_EPCOfELPCOfLocateExtPC_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_EPCOfELPCOfLocateExtPC

# Register Extrema_EPCOfELPCOfLocateExtPC in _Extrema:
_Extrema.Extrema_EPCOfELPCOfLocateExtPC_swigregister(Extrema_EPCOfELPCOfLocateExtPC)

class Extrema_EPCOfELPCOfLocateExtPC2d(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        It calculates all the distances. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs all the zeros inside the definition range of the curve. nbu is used to locate the close points to find the zeros. tol and tolu are used to decide to stop the iterations according to the following condition: if n is the number of iterations, abs(un-un-1) < tolu and abs(f(un)-f(un-1)) < tol.

        Parameters
        ----------
        P: gp_Pnt2d
        C: Adaptor2d_Curve2d
        NbU: int
        TolU: float
        TolF: float

        Returns
        -------
        None
        It calculates all the distances. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs all the zeros inside the definition range of the curve. nbu is used to locate the close points to find the zeros. zeros are searched between umin and usup. tol and tolu are used to decide to stop the iterations according to the following condition: if n is the number of iterations, abs(un-un-1) < tolu and abs(f(un)-f(un-1)) < tol.

        Parameters
        ----------
        P: gp_Pnt2d
        C: Adaptor2d_Curve2d
        NbU: int
        Umin: float
        Usup: float
        TolU: float
        TolF: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_EPCOfELPCOfLocateExtPC2d_swiginit(self, _Extrema.new_Extrema_EPCOfELPCOfLocateExtPC2d(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Sets the fields of the algorithm.

        Parameters
        ----------
        C: Adaptor2d_Curve2d
        NbU: int
        TolU: float
        TolF: float

        Returns
        -------
        None
        Sets the fields of the algorithm.

        Parameters
        ----------
        C: Adaptor2d_Curve2d
        NbU: int
        Umin: float
        Usup: float
        TolU: float
        TolF: float

        Returns
        -------
        None
        Sets the fields of the algorithm.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        None
        Sets the fields of the algorithm.

        Parameters
        ----------
        NbU: int
        Umin: float
        Usup: float
        TolU: float
        TolF: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_EPCOfELPCOfLocateExtPC2d_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        True if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_EPCOfELPCOfLocateExtPC2d_IsDone(self, *args)

    def IsMin(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the nth extremum distance is a minimum.

        Parameters
        ----------
        N: int

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_EPCOfELPCOfLocateExtPC2d_IsMin(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_EPCOfELPCOfLocateExtPC2d_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        The algorithm is done with the point p. an exception is raised if the fields have not been initialized.

        Parameters
        ----------
        P: gp_Pnt2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_EPCOfELPCOfLocateExtPC2d_Perform(self, *args)

    def Point(self, *args) -> "Extrema_POnCurv2d const &":
        r"""
        Returns the point of the nth extremum distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnCurv2d

        """
        return _Extrema.Extrema_EPCOfELPCOfLocateExtPC2d_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth extremum square distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_EPCOfELPCOfLocateExtPC2d_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_EPCOfELPCOfLocateExtPC2d

# Register Extrema_EPCOfELPCOfLocateExtPC2d in _Extrema:
_Extrema.Extrema_EPCOfELPCOfLocateExtPC2d_swigregister(Extrema_EPCOfELPCOfLocateExtPC2d)

class Extrema_EPCOfExtPC(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        It calculates all the distances. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs all the zeros inside the definition range of the curve. nbu is used to locate the close points to find the zeros. tol and tolu are used to decide to stop the iterations according to the following condition: if n is the number of iterations, abs(un-un-1) < tolu and abs(f(un)-f(un-1)) < tol.

        Parameters
        ----------
        P: gp_Pnt
        C: Adaptor3d_Curve
        NbU: int
        TolU: float
        TolF: float

        Returns
        -------
        None
        It calculates all the distances. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs all the zeros inside the definition range of the curve. nbu is used to locate the close points to find the zeros. zeros are searched between umin and usup. tol and tolu are used to decide to stop the iterations according to the following condition: if n is the number of iterations, abs(un-un-1) < tolu and abs(f(un)-f(un-1)) < tol.

        Parameters
        ----------
        P: gp_Pnt
        C: Adaptor3d_Curve
        NbU: int
        Umin: float
        Usup: float
        TolU: float
        TolF: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_EPCOfExtPC_swiginit(self, _Extrema.new_Extrema_EPCOfExtPC(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Sets the fields of the algorithm.

        Parameters
        ----------
        C: Adaptor3d_Curve
        NbU: int
        TolU: float
        TolF: float

        Returns
        -------
        None
        Sets the fields of the algorithm.

        Parameters
        ----------
        C: Adaptor3d_Curve
        NbU: int
        Umin: float
        Usup: float
        TolU: float
        TolF: float

        Returns
        -------
        None
        Sets the fields of the algorithm.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        None
        Sets the fields of the algorithm.

        Parameters
        ----------
        NbU: int
        Umin: float
        Usup: float
        TolU: float
        TolF: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_EPCOfExtPC_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        True if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_EPCOfExtPC_IsDone(self, *args)

    def IsMin(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the nth extremum distance is a minimum.

        Parameters
        ----------
        N: int

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_EPCOfExtPC_IsMin(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_EPCOfExtPC_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        The algorithm is done with the point p. an exception is raised if the fields have not been initialized.

        Parameters
        ----------
        P: gp_Pnt

        Returns
        -------
        None

        """
        return _Extrema.Extrema_EPCOfExtPC_Perform(self, *args)

    def Point(self, *args) -> "Extrema_POnCurv const &":
        r"""
        Returns the point of the nth extremum distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnCurv

        """
        return _Extrema.Extrema_EPCOfExtPC_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth extremum square distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_EPCOfExtPC_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_EPCOfExtPC

# Register Extrema_EPCOfExtPC in _Extrema:
_Extrema.Extrema_EPCOfExtPC_swigregister(Extrema_EPCOfExtPC)

class Extrema_EPCOfExtPC2d(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        It calculates all the distances. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs all the zeros inside the definition range of the curve. nbu is used to locate the close points to find the zeros. tol and tolu are used to decide to stop the iterations according to the following condition: if n is the number of iterations, abs(un-un-1) < tolu and abs(f(un)-f(un-1)) < tol.

        Parameters
        ----------
        P: gp_Pnt2d
        C: Adaptor2d_Curve2d
        NbU: int
        TolU: float
        TolF: float

        Returns
        -------
        None
        It calculates all the distances. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs all the zeros inside the definition range of the curve. nbu is used to locate the close points to find the zeros. zeros are searched between umin and usup. tol and tolu are used to decide to stop the iterations according to the following condition: if n is the number of iterations, abs(un-un-1) < tolu and abs(f(un)-f(un-1)) < tol.

        Parameters
        ----------
        P: gp_Pnt2d
        C: Adaptor2d_Curve2d
        NbU: int
        Umin: float
        Usup: float
        TolU: float
        TolF: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_EPCOfExtPC2d_swiginit(self, _Extrema.new_Extrema_EPCOfExtPC2d(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Sets the fields of the algorithm.

        Parameters
        ----------
        C: Adaptor2d_Curve2d
        NbU: int
        TolU: float
        TolF: float

        Returns
        -------
        None
        Sets the fields of the algorithm.

        Parameters
        ----------
        C: Adaptor2d_Curve2d
        NbU: int
        Umin: float
        Usup: float
        TolU: float
        TolF: float

        Returns
        -------
        None
        Sets the fields of the algorithm.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        None
        Sets the fields of the algorithm.

        Parameters
        ----------
        NbU: int
        Umin: float
        Usup: float
        TolU: float
        TolF: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_EPCOfExtPC2d_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        True if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_EPCOfExtPC2d_IsDone(self, *args)

    def IsMin(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the nth extremum distance is a minimum.

        Parameters
        ----------
        N: int

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_EPCOfExtPC2d_IsMin(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_EPCOfExtPC2d_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        The algorithm is done with the point p. an exception is raised if the fields have not been initialized.

        Parameters
        ----------
        P: gp_Pnt2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_EPCOfExtPC2d_Perform(self, *args)

    def Point(self, *args) -> "Extrema_POnCurv2d const &":
        r"""
        Returns the point of the nth extremum distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnCurv2d

        """
        return _Extrema.Extrema_EPCOfExtPC2d_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth extremum square distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_EPCOfExtPC2d_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_EPCOfExtPC2d

# Register Extrema_EPCOfExtPC2d in _Extrema:
_Extrema.Extrema_EPCOfExtPC2d_swigregister(Extrema_EPCOfExtPC2d)

class Extrema_ExtCC(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Parameters
        ----------
        TolC1: float,optional
        	default value is 1.0e-10
        TolC2: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None
        It calculates all the distances.

        Parameters
        ----------
        C1: Adaptor3d_Curve
        C2: Adaptor3d_Curve
        TolC1: float,optional
        	default value is 1.0e-10
        TolC2: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None
        It calculates all the distances.

        Parameters
        ----------
        C1: Adaptor3d_Curve
        C2: Adaptor3d_Curve
        U1: float
        U2: float
        V1: float
        V2: float
        TolC1: float,optional
        	default value is 1.0e-10
        TolC2: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None

        """
        _Extrema.Extrema_ExtCC_swiginit(self, _Extrema.new_Extrema_ExtCC(*args))

    def GetSingleSolutionFlag(self, *args) -> "Standard_Boolean":
        r"""
        Get flag for single extrema computation. works on parametric solver only.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtCC_GetSingleSolutionFlag(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtCC_IsDone(self, *args)

    def IsParallel(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the two curves are parallel.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtCC_IsParallel(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_ExtCC_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        No available documentation.

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtCC_Perform(self, *args)

    def Points(self, *args) -> "void":
        r"""
        Returns the points of the nth extremum distance. p1 is on the first curve, p2 on the second one.

        Parameters
        ----------
        N: int
        P1: Extrema_POnCurv
        P2: Extrema_POnCurv

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtCC_Points(self, *args)

    def SetCurve(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        theRank: int
        C: Adaptor3d_Curve

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        theRank: int
        C: Adaptor3d_Curve
        Uinf: float
        Usup: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtCC_SetCurve(self, *args)

    def SetRange(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        theRank: int
        Uinf: float
        Usup: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtCC_SetRange(self, *args)

    def SetSingleSolutionFlag(self, *args) -> "void":
        r"""
        Set flag for single extrema computation. works on parametric solver only.

        Parameters
        ----------
        theSingleSolutionFlag: bool

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtCC_SetSingleSolutionFlag(self, *args)

    def SetTolerance(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        theRank: int
        Tol: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtCC_SetTolerance(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth extremum square distance.

        Parameters
        ----------
        N: int,optional
        	default value is 1

        Returns
        -------
        float

        """
        return _Extrema.Extrema_ExtCC_SquareDistance(self, *args)

    def TrimmedSquareDistances(self, *args) -> "void":
        r"""
        If the curve is a trimmed curve, dist11 is a square distance between the point on c1 of parameter firstparameter and the point of parameter firstparameter on c2.

        Parameters
        ----------
        P11: gp_Pnt
        P12: gp_Pnt
        P21: gp_Pnt
        P22: gp_Pnt

        Returns
        -------
        dist11: float
        distP12: float
        distP21: float
        distP22: float

        """
        return _Extrema.Extrema_ExtCC_TrimmedSquareDistances(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_ExtCC

# Register Extrema_ExtCC in _Extrema:
_Extrema.Extrema_ExtCC_swigregister(Extrema_ExtCC)

class Extrema_ExtCC2d(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        It calculates all the distances.

        Parameters
        ----------
        C1: Adaptor2d_Curve2d
        C2: Adaptor2d_Curve2d
        TolC1: float,optional
        	default value is 1.0e-10
        TolC2: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None
        It calculates all the distances.

        Parameters
        ----------
        C1: Adaptor2d_Curve2d
        C2: Adaptor2d_Curve2d
        U1: float
        U2: float
        V1: float
        V2: float
        TolC1: float,optional
        	default value is 1.0e-10
        TolC2: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None

        """
        _Extrema.Extrema_ExtCC2d_swiginit(self, _Extrema.new_Extrema_ExtCC2d(*args))

    def GetSingleSolutionFlag(self, *args) -> "Standard_Boolean":
        r"""
        Get flag for single extrema computation. works on parametric solver only.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtCC2d_GetSingleSolutionFlag(self, *args)

    def Initialize(self, *args) -> "void":
        r"""
        Initializes the fields.

        Parameters
        ----------
        C2: Adaptor2d_Curve2d
        V1: float
        V2: float
        TolC1: float,optional
        	default value is 1.0e-10
        TolC2: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtCC2d_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtCC2d_IsDone(self, *args)

    def IsParallel(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the two curves are parallel.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtCC2d_IsParallel(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_ExtCC2d_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        C1: Adaptor2d_Curve2d
        U1: float
        U2: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtCC2d_Perform(self, *args)

    def Points(self, *args) -> "void":
        r"""
        Returns the points of the nth extremum distance. p1 is on the first curve, p2 on the second one.

        Parameters
        ----------
        N: int
        P1: Extrema_POnCurv2d
        P2: Extrema_POnCurv2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtCC2d_Points(self, *args)

    def SetSingleSolutionFlag(self, *args) -> "void":
        r"""
        Set flag for single extrema computation. works on parametric solver only.

        Parameters
        ----------
        theSingleSolutionFlag: bool

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtCC2d_SetSingleSolutionFlag(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth extremum square distance.

        Parameters
        ----------
        N: int,optional
        	default value is 1

        Returns
        -------
        float

        """
        return _Extrema.Extrema_ExtCC2d_SquareDistance(self, *args)

    def TrimmedSquareDistances(self, *args) -> "void":
        r"""
        If the curve is a trimmed curve, dist11 is a square distance between the point on c1 of parameter firstparameter and the point of parameter firstparameter on c2.

        Parameters
        ----------
        P11: gp_Pnt2d
        P12: gp_Pnt2d
        P21: gp_Pnt2d
        P22: gp_Pnt2d

        Returns
        -------
        dist11: float
        distP12: float
        distP21: float
        distP22: float

        """
        return _Extrema.Extrema_ExtCC2d_TrimmedSquareDistances(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_ExtCC2d

# Register Extrema_ExtCC2d in _Extrema:
_Extrema.Extrema_ExtCC2d_swigregister(Extrema_ExtCC2d)

class Extrema_ExtCS(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        It calculates all the distances between c and s.

        Parameters
        ----------
        C: Adaptor3d_Curve
        S: Adaptor3d_Surface
        TolC: float
        TolS: float

        Returns
        -------
        None
        It calculates all the distances between c and s. ucinf and ucmax are the start and end parameters of the curve.

        Parameters
        ----------
        C: Adaptor3d_Curve
        S: Adaptor3d_Surface
        UCinf: float
        UCsup: float
        Uinf: float
        Usup: float
        Vinf: float
        Vsup: float
        TolC: float
        TolS: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_ExtCS_swiginit(self, _Extrema.new_Extrema_ExtCS(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Initializes the fields of the algorithm.

        Parameters
        ----------
        S: Adaptor3d_Surface
        Uinf: float
        Usup: float
        Vinf: float
        Vsup: float
        TolC: float
        TolS: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtCS_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtCS_IsDone(self, *args)

    def IsParallel(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the curve is on a parallel surface.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtCS_IsParallel(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_ExtCS_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        Computes the distances. an exception is raised if the fieds have not been initialized.

        Parameters
        ----------
        C: Adaptor3d_Curve
        Uinf: float
        Usup: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtCS_Perform(self, *args)

    def Points(self, *args) -> "void":
        r"""
        Returns the point of the nth resulting distance.

        Parameters
        ----------
        N: int
        P1: Extrema_POnCurv
        P2: Extrema_POnSurf

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtCS_Points(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth resulting square distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_ExtCS_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_ExtCS

# Register Extrema_ExtCS in _Extrema:
_Extrema.Extrema_ExtCS_swigregister(Extrema_ExtCS)

class Extrema_ExtElC(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        Calculates the distance between two lines. angtol is used to test if the lines are parallel: angle(c1,c2) < angtol.

        Parameters
        ----------
        C1: gp_Lin
        C2: gp_Lin
        AngTol: float

        Returns
        -------
        None
        Calculates the distance between a line and a circle.

        Parameters
        ----------
        C1: gp_Lin
        C2: gp_Circ
        Tol: float

        Returns
        -------
        None
        Calculates the distance between a line and an elipse.

        Parameters
        ----------
        C1: gp_Lin
        C2: gp_Elips

        Returns
        -------
        None
        Calculates the distance between a line and a hyperbola.

        Parameters
        ----------
        C1: gp_Lin
        C2: gp_Hypr

        Returns
        -------
        None
        Calculates the distance between a line and a parabola.

        Parameters
        ----------
        C1: gp_Lin
        C2: gp_Parab

        Returns
        -------
        None
        Calculates the distance between two circles. the circles can be parallel or identical.

        Parameters
        ----------
        C1: gp_Circ
        C2: gp_Circ

        Returns
        -------
        None

        """
        _Extrema.Extrema_ExtElC_swiginit(self, _Extrema.new_Extrema_ExtElC(*args))

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtElC_IsDone(self, *args)

    def IsParallel(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the two curves are parallel.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtElC_IsParallel(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_ExtElC_NbExt(self, *args)

    def Points(self, *args) -> "void":
        r"""
        Returns the points of the nth extremum distance. p1 is on the first curve, p2 on the second one.

        Parameters
        ----------
        N: int
        P1: Extrema_POnCurv
        P2: Extrema_POnCurv

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtElC_Points(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth extremum square distance.

        Parameters
        ----------
        N: int,optional
        	default value is 1

        Returns
        -------
        float

        """
        return _Extrema.Extrema_ExtElC_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_ExtElC

# Register Extrema_ExtElC in _Extrema:
_Extrema.Extrema_ExtElC_swigregister(Extrema_ExtElC)

class Extrema_ExtElC2d(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        Calculates the distance between two lines. angtol is used to test if the lines are parallel: angle(c1,c2) < angtol.

        Parameters
        ----------
        C1: gp_Lin2d
        C2: gp_Lin2d
        AngTol: float

        Returns
        -------
        None
        Calculates the distance between a line and a circle.

        Parameters
        ----------
        C1: gp_Lin2d
        C2: gp_Circ2d
        Tol: float

        Returns
        -------
        None
        Calculates the distance between a line and an elipse.

        Parameters
        ----------
        C1: gp_Lin2d
        C2: gp_Elips2d

        Returns
        -------
        None
        Calculates the distance between a line and a hyperbola.

        Parameters
        ----------
        C1: gp_Lin2d
        C2: gp_Hypr2d

        Returns
        -------
        None
        Calculates the distance between a line and a parabola.

        Parameters
        ----------
        C1: gp_Lin2d
        C2: gp_Parab2d

        Returns
        -------
        None
        Calculates the distance between two circles. the circles can be parallel or identical.

        Parameters
        ----------
        C1: gp_Circ2d
        C2: gp_Circ2d

        Returns
        -------
        None
        Calculates the distance between a circle and an elipse.

        Parameters
        ----------
        C1: gp_Circ2d
        C2: gp_Elips2d

        Returns
        -------
        None
        Calculates the distance between a circle and a hyperbola.

        Parameters
        ----------
        C1: gp_Circ2d
        C2: gp_Hypr2d

        Returns
        -------
        None
        Calculates the distance between a circle and a parabola.

        Parameters
        ----------
        C1: gp_Circ2d
        C2: gp_Parab2d

        Returns
        -------
        None

        """
        _Extrema.Extrema_ExtElC2d_swiginit(self, _Extrema.new_Extrema_ExtElC2d(*args))

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtElC2d_IsDone(self, *args)

    def IsParallel(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the two curves are parallel.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtElC2d_IsParallel(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_ExtElC2d_NbExt(self, *args)

    def Points(self, *args) -> "void":
        r"""
        Returns the points of the nth extremum distance. p1 is on the first curve, p2 on the second one.

        Parameters
        ----------
        N: int
        P1: Extrema_POnCurv2d
        P2: Extrema_POnCurv2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtElC2d_Points(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth extremum square distance.

        Parameters
        ----------
        N: int,optional
        	default value is 1

        Returns
        -------
        float

        """
        return _Extrema.Extrema_ExtElC2d_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_ExtElC2d

# Register Extrema_ExtElC2d in _Extrema:
_Extrema.Extrema_ExtElC2d_swigregister(Extrema_ExtElC2d)

class Extrema_ExtElCS(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        Calculates the distances between a line and a plane. the line can be on the plane or on a parallel plane.

        Parameters
        ----------
        C: gp_Lin
        S: gp_Pln

        Returns
        -------
        None
        Calculates the distances between a line and a cylinder.

        Parameters
        ----------
        C: gp_Lin
        S: gp_Cylinder

        Returns
        -------
        None
        Calculates the distances between a line and a cone.

        Parameters
        ----------
        C: gp_Lin
        S: gp_Cone

        Returns
        -------
        None
        Calculates the distances between a line and a sphere.

        Parameters
        ----------
        C: gp_Lin
        S: gp_Sphere

        Returns
        -------
        None
        Calculates the distances between a line and a torus.

        Parameters
        ----------
        C: gp_Lin
        S: gp_Torus

        Returns
        -------
        None
        Calculates the distances between a circle and a plane.

        Parameters
        ----------
        C: gp_Circ
        S: gp_Pln

        Returns
        -------
        None
        Calculates the distances between a circle and a cylinder.

        Parameters
        ----------
        C: gp_Circ
        S: gp_Cylinder

        Returns
        -------
        None
        Calculates the distances between a circle and a cone.

        Parameters
        ----------
        C: gp_Circ
        S: gp_Cone

        Returns
        -------
        None
        Calculates the distances between a circle and a sphere.

        Parameters
        ----------
        C: gp_Circ
        S: gp_Sphere

        Returns
        -------
        None
        Calculates the distances between a circle and a torus.

        Parameters
        ----------
        C: gp_Circ
        S: gp_Torus

        Returns
        -------
        None
        Calculates the distances between a hyperbola and a plane.

        Parameters
        ----------
        C: gp_Hypr
        S: gp_Pln

        Returns
        -------
        None

        """
        _Extrema.Extrema_ExtElCS_swiginit(self, _Extrema.new_Extrema_ExtElCS(*args))

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtElCS_IsDone(self, *args)

    def IsParallel(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the curve is on a parallel surface.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtElCS_IsParallel(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_ExtElCS_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        C: gp_Lin
        S: gp_Pln

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C: gp_Lin
        S: gp_Cylinder

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C: gp_Lin
        S: gp_Cone

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C: gp_Lin
        S: gp_Sphere

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C: gp_Lin
        S: gp_Torus

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C: gp_Circ
        S: gp_Pln

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C: gp_Circ
        S: gp_Cylinder

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C: gp_Circ
        S: gp_Cone

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C: gp_Circ
        S: gp_Sphere

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C: gp_Circ
        S: gp_Torus

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C: gp_Hypr
        S: gp_Pln

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtElCS_Perform(self, *args)

    def Points(self, *args) -> "void":
        r"""
        Returns the points of the nth extremum distance. p1 is on the curve, p2 on the surface.

        Parameters
        ----------
        N: int
        P1: Extrema_POnCurv
        P2: Extrema_POnSurf

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtElCS_Points(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth extremum square distance.

        Parameters
        ----------
        N: int,optional
        	default value is 1

        Returns
        -------
        float

        """
        return _Extrema.Extrema_ExtElCS_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_ExtElCS

# Register Extrema_ExtElCS in _Extrema:
_Extrema.Extrema_ExtElCS_swigregister(Extrema_ExtElCS)

class Extrema_ExtElSS(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        Calculates the distances between 2 planes. these planes can be parallel.

        Parameters
        ----------
        S1: gp_Pln
        S2: gp_Pln

        Returns
        -------
        None
        Calculates the distances between a plane and a sphere.

        Parameters
        ----------
        S1: gp_Pln
        S2: gp_Sphere

        Returns
        -------
        None
        Calculates the distances between 2 spheres. these spheres can be parallel.

        Parameters
        ----------
        S1: gp_Sphere
        S2: gp_Sphere

        Returns
        -------
        None
        Calculates the distances between a sphere and a cylinder.

        Parameters
        ----------
        S1: gp_Sphere
        S2: gp_Cylinder

        Returns
        -------
        None
        Calculates the distances between a sphere and a cone.

        Parameters
        ----------
        S1: gp_Sphere
        S2: gp_Cone

        Returns
        -------
        None
        Calculates the distances between a sphere and a torus.

        Parameters
        ----------
        S1: gp_Sphere
        S2: gp_Torus

        Returns
        -------
        None

        """
        _Extrema.Extrema_ExtElSS_swiginit(self, _Extrema.new_Extrema_ExtElSS(*args))

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtElSS_IsDone(self, *args)

    def IsParallel(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the two surfaces are parallel.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtElSS_IsParallel(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_ExtElSS_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        S1: gp_Pln
        S2: gp_Pln

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        S1: gp_Pln
        S2: gp_Sphere

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        S1: gp_Sphere
        S2: gp_Sphere

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        S1: gp_Sphere
        S2: gp_Cylinder

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        S1: gp_Sphere
        S2: gp_Cone

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        S1: gp_Sphere
        S2: gp_Torus

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtElSS_Perform(self, *args)

    def Points(self, *args) -> "void":
        r"""
        Returns the points for the nth resulting distance. p1 is on the first surface, p2 on the second one.

        Parameters
        ----------
        N: int
        P1: Extrema_POnSurf
        P2: Extrema_POnSurf

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtElSS_Points(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth extremum square distance.

        Parameters
        ----------
        N: int,optional
        	default value is 1

        Returns
        -------
        float

        """
        return _Extrema.Extrema_ExtElSS_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_ExtElSS

# Register Extrema_ExtElSS in _Extrema:
_Extrema.Extrema_ExtElSS_swigregister(Extrema_ExtElSS)

class Extrema_ExtPC(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        It calculates all the distances. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs all the zeros inside the definition range of the curve. zeros are searched between uinf and usup. tol is used to decide to stop the iterations according to the following condition: if n is the number of iterations, the algorithm stops when abs(f(un)-f(un-1)) < tol.

        Parameters
        ----------
        P: gp_Pnt
        C: Adaptor3d_Curve
        Uinf: float
        Usup: float
        TolF: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None
        It calculates all the distances. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs all the zeros inside the definition range of the curve. tol is used to decide to stop the iterations according to the following condition: if n is the number of iterations, the algorithm stops when abs(f(un)-f(un-1)) < tol.

        Parameters
        ----------
        P: gp_Pnt
        C: Adaptor3d_Curve
        TolF: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None

        """
        _Extrema.Extrema_ExtPC_swiginit(self, _Extrema.new_Extrema_ExtPC(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Initializes the fields of the algorithm.

        Parameters
        ----------
        C: Adaptor3d_Curve
        Uinf: float
        Usup: float
        TolF: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtPC_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        True if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtPC_IsDone(self, *args)

    def IsMin(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the <n>th extremum distance is a minimum.

        Parameters
        ----------
        N: int

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtPC_IsMin(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_ExtPC_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        An exception is raised if the fields have not been initialized.

        Parameters
        ----------
        P: gp_Pnt

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtPC_Perform(self, *args)

    def Point(self, *args) -> "Extrema_POnCurv const &":
        r"""
        Returns the point of the <n>th extremum distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnCurv

        """
        return _Extrema.Extrema_ExtPC_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the <n>th extremum square distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_ExtPC_SquareDistance(self, *args)

    def TrimmedSquareDistances(self, *args) -> "void":
        r"""
        If the curve is a trimmed curve, dist1 is a square distance between <p> and the point of parameter firstparameter <p1> and dist2 is a square distance between <p> and the point of parameter lastparameter <p2>.

        Parameters
        ----------
        P1: gp_Pnt
        P2: gp_Pnt

        Returns
        -------
        dist1: float
        dist2: float

        """
        return _Extrema.Extrema_ExtPC_TrimmedSquareDistances(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_ExtPC

# Register Extrema_ExtPC in _Extrema:
_Extrema.Extrema_ExtPC_swigregister(Extrema_ExtPC)

class Extrema_ExtPC2d(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        It calculates all the distances. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs all the zeros inside the definition range of the curve. zeros are searched between uinf and usup. tol is used to decide to stop the iterations according to the following condition: if n is the number of iterations, the algorithm stops when abs(f(un)-f(un-1)) < tol.

        Parameters
        ----------
        P: gp_Pnt2d
        C: Adaptor2d_Curve2d
        Uinf: float
        Usup: float
        TolF: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None
        It calculates all the distances. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs all the zeros inside the definition range of the curve. tol is used to decide to stop the iterations according to the following condition: if n is the number of iterations, the algorithm stops when abs(f(un)-f(un-1)) < tol.

        Parameters
        ----------
        P: gp_Pnt2d
        C: Adaptor2d_Curve2d
        TolF: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None

        """
        _Extrema.Extrema_ExtPC2d_swiginit(self, _Extrema.new_Extrema_ExtPC2d(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Initializes the fields of the algorithm.

        Parameters
        ----------
        C: Adaptor2d_Curve2d
        Uinf: float
        Usup: float
        TolF: float,optional
        	default value is 1.0e-10

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtPC2d_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        True if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtPC2d_IsDone(self, *args)

    def IsMin(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the <n>th extremum distance is a minimum.

        Parameters
        ----------
        N: int

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtPC2d_IsMin(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_ExtPC2d_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        An exception is raised if the fields have not been initialized.

        Parameters
        ----------
        P: gp_Pnt2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtPC2d_Perform(self, *args)

    def Point(self, *args) -> "Extrema_POnCurv2d const &":
        r"""
        Returns the point of the <n>th extremum distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnCurv2d

        """
        return _Extrema.Extrema_ExtPC2d_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the <n>th extremum square distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_ExtPC2d_SquareDistance(self, *args)

    def TrimmedSquareDistances(self, *args) -> "void":
        r"""
        If the curve is a trimmed curve, dist1 is a square distance between <p> and the point of parameter firstparameter <p1> and dist2 is a square distance between <p> and the point of parameter lastparameter <p2>.

        Parameters
        ----------
        P1: gp_Pnt2d
        P2: gp_Pnt2d

        Returns
        -------
        dist1: float
        dist2: float

        """
        return _Extrema.Extrema_ExtPC2d_TrimmedSquareDistances(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_ExtPC2d

# Register Extrema_ExtPC2d in _Extrema:
_Extrema.Extrema_ExtPC2d_swigregister(Extrema_ExtPC2d)

class Extrema_ExtPElC(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        Calculates the extremum distance between the point p and the segment [uinf,usup] of the line c.

        Parameters
        ----------
        P: gp_Pnt
        C: gp_Lin
        Tol: float
        Uinf: float
        Usup: float

        Returns
        -------
        None
        Calculates the 2 extremum distances between the point p and the segment [uinf,usup] of the circle c. tol is used to determine if p is on the axis of the circle or if an extremum is on an endpoint of the segment. if p is on the axis of the circle, there are infinite solution then isdone(me)=false. the conditions on the uinf and usup are: 0. <= uinf <= 2.*pi and usup > uinf. if usup > uinf + 2.*pi, then only the solutions in the range [uinf,uinf+2.*pi[ are computed.

        Parameters
        ----------
        P: gp_Pnt
        C: gp_Circ
        Tol: float
        Uinf: float
        Usup: float

        Returns
        -------
        None
        Calculates the 4 extremum distances between the point p and the segment [uinf,usup] of the elipse c. tol is used to determine if the point is on the axis of the elipse and if the major radius is equal to the minor radius or if an extremum is on an endpoint of the segment. if p is on the axis of the elipse, there are infinite solution then isdone(me)=false. the conditions on the uinf and usup are: 0. <= uinf <= 2.*pi and usup > uinf. if usup > uinf + 2.*pi, then only the solutions in the range [uinf,uinf+2.*pi[ are computed.

        Parameters
        ----------
        P: gp_Pnt
        C: gp_Elips
        Tol: float
        Uinf: float
        Usup: float

        Returns
        -------
        None
        Calculates the extremum distances between the point p and the segment [uinf,usup] of the hyperbola c. tol is used to determine if two solutions u and v are identical; the condition is: dist(c(u),c(v)) < tol.

        Parameters
        ----------
        P: gp_Pnt
        C: gp_Hypr
        Tol: float
        Uinf: float
        Usup: float

        Returns
        -------
        None
        Calculates the 4 extremum distances between the point p and the segment [uinf,usup] of the parabola c. tol is used to determine if two solutions u and v are identical; the condition is: dist(c(u),c(v)) < tol.

        Parameters
        ----------
        P: gp_Pnt
        C: gp_Parab
        Tol: float
        Uinf: float
        Usup: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_ExtPElC_swiginit(self, _Extrema.new_Extrema_ExtPElC(*args))

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        True if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtPElC_IsDone(self, *args)

    def IsMin(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the nth extremum distance is a minimum.

        Parameters
        ----------
        N: int

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtPElC_IsMin(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_ExtPElC_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt
        C: gp_Lin
        Tol: float
        Uinf: float
        Usup: float

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt
        C: gp_Circ
        Tol: float
        Uinf: float
        Usup: float

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt
        C: gp_Elips
        Tol: float
        Uinf: float
        Usup: float

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt
        C: gp_Hypr
        Tol: float
        Uinf: float
        Usup: float

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt
        C: gp_Parab
        Tol: float
        Uinf: float
        Usup: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtPElC_Perform(self, *args)

    def Point(self, *args) -> "Extrema_POnCurv const &":
        r"""
        Returns the point of the nth extremum distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnCurv

        """
        return _Extrema.Extrema_ExtPElC_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth extremum square distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_ExtPElC_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_ExtPElC

# Register Extrema_ExtPElC in _Extrema:
_Extrema.Extrema_ExtPElC_swigregister(Extrema_ExtPElC)

class Extrema_ExtPElC2d(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        Calculates the extremum distance between the point p and the segment [uinf,usup] of the line l.

        Parameters
        ----------
        P: gp_Pnt2d
        C: gp_Lin2d
        Tol: float
        Uinf: float
        Usup: float

        Returns
        -------
        None
        Calculates the 2 extremum distances between the point p and the segment [uinf,usup] of the circle c. tol is used to determine if p is on the axis of the circle or if an extremum is on an endpoint of the segment. if p is on the axis of the circle, there are infinite solution then isdone(me)=false. the conditions on the uinf and usup are: 0. <= uinf <= 2.*pi and usup > uinf. if usup > uinf + 2.*pi, then only the solutions in the range [uinf,uinf+2.*pi[ are computed.

        Parameters
        ----------
        P: gp_Pnt2d
        C: gp_Circ2d
        Tol: float
        Uinf: float
        Usup: float

        Returns
        -------
        None
        Calculates the 4 extremum distances between the point p and the segment [uinf,usup] of the elipse c. tol is used to determine if the point is on the axis of the elipse and if the major radius is equal to the minor radius or if an extremum is on an endpoint of the segment. if p is on the axis of the elipse, there are infinite solution then isdone(me)=false. the conditions on the uinf and usup are: 0. <= uinf <= 2.*pi and usup > uinf. if usup > uinf + 2.*pi, then only the solutions in the range [uinf,uinf+2.*pi[ are computed.

        Parameters
        ----------
        P: gp_Pnt2d
        C: gp_Elips2d
        Tol: float
        Uinf: float
        Usup: float

        Returns
        -------
        None
        Calculates the extremum distances between the point p and the segment [uinf,usup] of the hyperbola c. tol is used to determine if two solutions u and v are identical; the condition is: dist(c(u),c(v)) < tol.

        Parameters
        ----------
        P: gp_Pnt2d
        C: gp_Hypr2d
        Tol: float
        Uinf: float
        Usup: float

        Returns
        -------
        None
        Calculates the 4 extremum distances between the point p and the segment [uinf,usup] of the parabola c. tol is used to determine if two solutions u and v are identical; the condition is: dist(c(u),c(v)) < tol.

        Parameters
        ----------
        P: gp_Pnt2d
        C: gp_Parab2d
        Tol: float
        Uinf: float
        Usup: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_ExtPElC2d_swiginit(self, _Extrema.new_Extrema_ExtPElC2d(*args))

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        True if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtPElC2d_IsDone(self, *args)

    def IsMin(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the nth extremum distance is a minimum.

        Parameters
        ----------
        N: int

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtPElC2d_IsMin(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_ExtPElC2d_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt2d
        L: gp_Lin2d
        Tol: float
        Uinf: float
        Usup: float

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt2d
        C: gp_Circ2d
        Tol: float
        Uinf: float
        Usup: float

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt2d
        C: gp_Elips2d
        Tol: float
        Uinf: float
        Usup: float

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt2d
        C: gp_Hypr2d
        Tol: float
        Uinf: float
        Usup: float

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt2d
        C: gp_Parab2d
        Tol: float
        Uinf: float
        Usup: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtPElC2d_Perform(self, *args)

    def Point(self, *args) -> "Extrema_POnCurv2d const &":
        r"""
        Returns the point of the nth extremum distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnCurv2d

        """
        return _Extrema.Extrema_ExtPElC2d_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth extremum square distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_ExtPElC2d_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_ExtPElC2d

# Register Extrema_ExtPElC2d in _Extrema:
_Extrema.Extrema_ExtPElC2d_swigregister(Extrema_ExtPElC2d)

class Extrema_ExtPElS(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        It calculates all the distances between a point and a cylinder from gp. tol is used to test if the point is on the axis.

        Parameters
        ----------
        P: gp_Pnt
        S: gp_Cylinder
        Tol: float

        Returns
        -------
        None
        It calculates all the distances between a point and a plane from gp. tol is used to test if the point is on the plane.

        Parameters
        ----------
        P: gp_Pnt
        S: gp_Pln
        Tol: float

        Returns
        -------
        None
        It calculates all the distances between a point and a cone from gp. tol is used to test if the point is at the apex or on the axis.

        Parameters
        ----------
        P: gp_Pnt
        S: gp_Cone
        Tol: float

        Returns
        -------
        None
        It calculates all the distances between a point and a torus from gp. tol is used to test if the point is on the axis.

        Parameters
        ----------
        P: gp_Pnt
        S: gp_Torus
        Tol: float

        Returns
        -------
        None
        It calculates all the distances between a point and a sphere from gp. tol is used to test if the point is at the center.

        Parameters
        ----------
        P: gp_Pnt
        S: gp_Sphere
        Tol: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_ExtPElS_swiginit(self, _Extrema.new_Extrema_ExtPElS(*args))

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtPElS_IsDone(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_ExtPElS_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt
        S: gp_Cylinder
        Tol: float

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt
        S: gp_Pln
        Tol: float

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt
        S: gp_Cone
        Tol: float

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt
        S: gp_Torus
        Tol: float

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt
        S: gp_Sphere
        Tol: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtPElS_Perform(self, *args)

    def Point(self, *args) -> "Extrema_POnSurf const &":
        r"""
        Returns the point of the nth resulting distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnSurf

        """
        return _Extrema.Extrema_ExtPElS_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth resulting square distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_ExtPElS_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_ExtPElS

# Register Extrema_ExtPElS in _Extrema:
_Extrema.Extrema_ExtPElS_swigregister(Extrema_ExtPElS)

class Extrema_ExtPExtS(OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        It calculates all the distances between a point from gp and a surface.

        Parameters
        ----------
        P: gp_Pnt
        S: GeomAdaptor_HSurfaceOfLinearExtrusion
        Umin: float
        Usup: float
        Vmin: float
        Vsup: float
        TolU: float
        TolV: float

        Returns
        -------
        None
        It calculates all the distances between a point from gp and a surface.

        Parameters
        ----------
        P: gp_Pnt
        S: GeomAdaptor_HSurfaceOfLinearExtrusion
        TolU: float
        TolV: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_ExtPExtS_swiginit(self, _Extrema.new_Extrema_ExtPExtS(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Initializes the fields of the algorithm.

        Parameters
        ----------
        S: GeomAdaptor_HSurfaceOfLinearExtrusion
        Uinf: float
        Usup: float
        Vinf: float
        Vsup: float
        TolU: float
        TolV: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtPExtS_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtPExtS_IsDone(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_ExtPExtS_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtPExtS_Perform(self, *args)

    def Point(self, *args) -> "Extrema_POnSurf const &":
        r"""
        Returns the point of the nth resulting distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnSurf

        """
        return _Extrema.Extrema_ExtPExtS_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth resulting square distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_ExtPExtS_SquareDistance(self, *args)


    @staticmethod
    def DownCast(t):
      return Handle_Extrema_ExtPExtS_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_ExtPExtS

# Register Extrema_ExtPExtS in _Extrema:
_Extrema.Extrema_ExtPExtS_swigregister(Extrema_ExtPExtS)

class Extrema_ExtPRevS(OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        It calculates all the distances between a point from gp and a surfaceptr from adaptor3d.

        Parameters
        ----------
        P: gp_Pnt
        S: GeomAdaptor_HSurfaceOfRevolution
        Umin: float
        Usup: float
        Vmin: float
        Vsup: float
        TolU: float
        TolV: float

        Returns
        -------
        None
        It calculates all the distances between a point from gp and a surfaceptr from adaptor3d.

        Parameters
        ----------
        P: gp_Pnt
        S: GeomAdaptor_HSurfaceOfRevolution
        TolU: float
        TolV: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_ExtPRevS_swiginit(self, _Extrema.new_Extrema_ExtPRevS(*args))

    def Initialize(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        S: GeomAdaptor_HSurfaceOfRevolution
        Umin: float
        Usup: float
        Vmin: float
        Vsup: float
        TolU: float
        TolV: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtPRevS_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtPRevS_IsDone(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_ExtPRevS_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtPRevS_Perform(self, *args)

    def Point(self, *args) -> "Extrema_POnSurf const &":
        r"""
        Returns the point of the nth resulting distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnSurf

        """
        return _Extrema.Extrema_ExtPRevS_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth resulting square distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_ExtPRevS_SquareDistance(self, *args)


    @staticmethod
    def DownCast(t):
      return Handle_Extrema_ExtPRevS_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_ExtPRevS

# Register Extrema_ExtPRevS in _Extrema:
_Extrema.Extrema_ExtPRevS_swigregister(Extrema_ExtPRevS)

class Extrema_ExtPS(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        It calculates all the distances. nbu and nbv are used to locate the close points to find the zeros. they must be great enough such that if there is n extrema, there will be n extrema between p and the grid. tolu et tolv are used to determine the conditions to stop the iterations; at the iteration number n: (un - un-1) < tolu and (vn - vn-1) < tolv .

        Parameters
        ----------
        P: gp_Pnt
        S: Adaptor3d_Surface
        TolU: float
        TolV: float
        F: Extrema_ExtFlag,optional
        	default value is Extrema_ExtFlag_MINMAX
        A: Extrema_ExtAlgo,optional
        	default value is Extrema_ExtAlgo_Grad

        Returns
        -------
        None
        It calculates all the distances. nbu and nbv are used to locate the close points to find the zeros. they must be great enough such that if there is n extrema, there will be n extrema between p and the grid. tolu et tolv are used to determine the conditions to stop the iterations; at the iteration number n: (un - un-1) < tolu and (vn - vn-1) < tolv .

        Parameters
        ----------
        P: gp_Pnt
        S: Adaptor3d_Surface
        Uinf: float
        Usup: float
        Vinf: float
        Vsup: float
        TolU: float
        TolV: float
        F: Extrema_ExtFlag,optional
        	default value is Extrema_ExtFlag_MINMAX
        A: Extrema_ExtAlgo,optional
        	default value is Extrema_ExtAlgo_Grad

        Returns
        -------
        None

        """
        _Extrema.Extrema_ExtPS_swiginit(self, _Extrema.new_Extrema_ExtPS(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Initializes the fields of the algorithm.

        Parameters
        ----------
        S: Adaptor3d_Surface
        Uinf: float
        Usup: float
        Vinf: float
        Vsup: float
        TolU: float
        TolV: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtPS_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtPS_IsDone(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_ExtPS_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        Computes the distances. an exception is raised if the fieds have not been initialized.

        Parameters
        ----------
        P: gp_Pnt

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtPS_Perform(self, *args)

    def Point(self, *args) -> "Extrema_POnSurf const &":
        r"""
        Returns the point of the nth resulting distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnSurf

        """
        return _Extrema.Extrema_ExtPS_Point(self, *args)

    def SetAlgo(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        A: Extrema_ExtAlgo

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtPS_SetAlgo(self, *args)

    def SetFlag(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        F: Extrema_ExtFlag

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtPS_SetFlag(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth resulting square distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_ExtPS_SquareDistance(self, *args)

    def TrimmedSquareDistances(self, *args) -> "void":
        r"""
        If the surface is a trimmed surface, dufvf is a square distance between <p> and the point of parameter firstuparameter and firstvparameter <pufvf>. dufvl is a square distance between <p> and the point of parameter firstuparameter and lastvparameter <pufvl>. dulvf is a square distance between <p> and the point of parameter lastuparameter and firstvparameter <pulvf>. dulvl is a square distance between <p> and the point of parameter lastuparameter and lastvparameter <pulvl>.

        Parameters
        ----------
        PUfVf: gp_Pnt
        PUfVl: gp_Pnt
        PUlVf: gp_Pnt
        PUlVl: gp_Pnt

        Returns
        -------
        dUfVf: float
        dUfVl: float
        dUlVf: float
        dUlVl: float

        """
        return _Extrema.Extrema_ExtPS_TrimmedSquareDistances(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_ExtPS

# Register Extrema_ExtPS in _Extrema:
_Extrema.Extrema_ExtPS_swigregister(Extrema_ExtPS)

class Extrema_ExtSS(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        It calculates all the distances between s1 and s2.

        Parameters
        ----------
        S1: Adaptor3d_Surface
        S2: Adaptor3d_Surface
        TolS1: float
        TolS2: float

        Returns
        -------
        None
        It calculates all the distances between s1 and s2.

        Parameters
        ----------
        S1: Adaptor3d_Surface
        S2: Adaptor3d_Surface
        Uinf1: float
        Usup1: float
        Vinf1: float
        Vsup1: float
        Uinf2: float
        Usup2: float
        Vinf2: float
        Vsup2: float
        TolS1: float
        TolS2: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_ExtSS_swiginit(self, _Extrema.new_Extrema_ExtSS(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Initializes the fields of the algorithm.

        Parameters
        ----------
        S2: Adaptor3d_Surface
        Uinf2: float
        Usup2: float
        Vinf2: float
        Vsup2: float
        TolS1: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtSS_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtSS_IsDone(self, *args)

    def IsParallel(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the curve is on a parallel surface.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_ExtSS_IsParallel(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_ExtSS_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        Computes the distances. an exception is raised if the fieds have not been initialized.

        Parameters
        ----------
        S1: Adaptor3d_Surface
        Uinf1: float
        Usup1: float
        Vinf1: float
        Vsup1: float
        TolS1: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtSS_Perform(self, *args)

    def Points(self, *args) -> "void":
        r"""
        Returns the point of the nth resulting distance.

        Parameters
        ----------
        N: int
        P1: Extrema_POnSurf
        P2: Extrema_POnSurf

        Returns
        -------
        None

        """
        return _Extrema.Extrema_ExtSS_Points(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth resulting square distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_ExtSS_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_ExtSS

# Register Extrema_ExtSS in _Extrema:
_Extrema.Extrema_ExtSS_swigregister(Extrema_ExtSS)

class Extrema_FuncExtCS(OCC.Core.math.math_FunctionSetWithDerivatives):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve
        S: Adaptor3d_Surface

        Returns
        -------
        None

        """
        _Extrema.Extrema_FuncExtCS_swiginit(self, _Extrema.new_Extrema_FuncExtCS(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Sets the field mysurf of the function.

        Parameters
        ----------
        C: Adaptor3d_Curve
        S: Adaptor3d_Surface

        Returns
        -------
        None

        """
        return _Extrema.Extrema_FuncExtCS_Initialize(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Return the number of found extrema.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_FuncExtCS_NbExt(self, *args)

    def PointOnCurve(self, *args) -> "Extrema_POnCurv const &":
        r"""
        Returns the nth extremum on c.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnCurv

        """
        return _Extrema.Extrema_FuncExtCS_PointOnCurve(self, *args)

    def PointOnSurface(self, *args) -> "Extrema_POnSurf const &":
        r"""
        Return the nth extremum on s.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnSurf

        """
        return _Extrema.Extrema_FuncExtCS_PointOnSurface(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Return the value of the nth distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_FuncExtCS_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_FuncExtCS

# Register Extrema_FuncExtCS in _Extrema:
_Extrema.Extrema_FuncExtCS_swigregister(Extrema_FuncExtCS)

class Extrema_FuncExtSS(OCC.Core.math.math_FunctionSetWithDerivatives):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        S1: Adaptor3d_Surface
        S2: Adaptor3d_Surface

        Returns
        -------
        None

        """
        _Extrema.Extrema_FuncExtSS_swiginit(self, _Extrema.new_Extrema_FuncExtSS(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Sets the field mysurf of the function.

        Parameters
        ----------
        S1: Adaptor3d_Surface
        S2: Adaptor3d_Surface

        Returns
        -------
        None

        """
        return _Extrema.Extrema_FuncExtSS_Initialize(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Return the number of found extrema.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_FuncExtSS_NbExt(self, *args)

    def PointOnS1(self, *args) -> "Extrema_POnSurf const &":
        r"""
        Return the nth extremum on s1.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnSurf

        """
        return _Extrema.Extrema_FuncExtSS_PointOnS1(self, *args)

    def PointOnS2(self, *args) -> "Extrema_POnSurf const &":
        r"""
        Renvoie le nieme extremum sur s2.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnSurf

        """
        return _Extrema.Extrema_FuncExtSS_PointOnS2(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Return the value of the nth distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_FuncExtSS_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_FuncExtSS

# Register Extrema_FuncExtSS in _Extrema:
_Extrema.Extrema_FuncExtSS_swigregister(Extrema_FuncExtSS)

class Extrema_FuncPSDist(OCC.Core.math.math_MultipleVarFunctionWithGradient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Constructor.

        Parameters
        ----------
        theS: Adaptor3d_Surface
        theP: gp_Pnt

        Returns
        -------
        None

        """
        _Extrema.Extrema_FuncPSDist_swiginit(self, _Extrema.new_Extrema_FuncPSDist(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_FuncPSDist

# Register Extrema_FuncPSDist in _Extrema:
_Extrema.Extrema_FuncPSDist_swigregister(Extrema_FuncPSDist)

class Extrema_FuncPSNorm(OCC.Core.math.math_FunctionSetWithDerivatives):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt
        S: Adaptor3d_Surface

        Returns
        -------
        None

        """
        _Extrema.Extrema_FuncPSNorm_swiginit(self, _Extrema.new_Extrema_FuncPSNorm(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Sets the field mysurf of the function.

        Parameters
        ----------
        S: Adaptor3d_Surface

        Returns
        -------
        None

        """
        return _Extrema.Extrema_FuncPSNorm_Initialize(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Return the number of found extrema.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_FuncPSNorm_NbExt(self, *args)

    def Point(self, *args) -> "Extrema_POnSurf const &":
        r"""
        Returns the nth extremum.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnSurf

        """
        return _Extrema.Extrema_FuncPSNorm_Point(self, *args)

    def SetPoint(self, *args) -> "void":
        r"""
        Sets the field mysurf of the function.

        Parameters
        ----------
        P: gp_Pnt

        Returns
        -------
        None

        """
        return _Extrema.Extrema_FuncPSNorm_SetPoint(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Return the value of the nth distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_FuncPSNorm_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_FuncPSNorm

# Register Extrema_FuncPSNorm in _Extrema:
_Extrema.Extrema_FuncPSNorm_swigregister(Extrema_FuncPSNorm)

class Extrema_GenExtCS(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        It calculates all the distances. the function f(u,v)=distance(s1(u1,v1),s2(u2,v2)) has an extremum when gradient(f)=0. the algorithm searchs all the zeros inside the definition ranges of the surfaces. nbu and nbv are used to locate the close points on the surface and nbt on the curve to find the zeros.

        Parameters
        ----------
        C: Adaptor3d_Curve
        S: Adaptor3d_Surface
        NbT: int
        NbU: int
        NbV: int
        Tol1: float
        Tol2: float

        Returns
        -------
        None
        It calculates all the distances. the function f(u,v)=distance(p,s(u,v)) has an extremum when gradient(f)=0. the algorithm searchs all the zeros inside the definition ranges of the surface. nbt,nbu and nbv are used to locate the close points to find the zeros.

        Parameters
        ----------
        C: Adaptor3d_Curve
        S: Adaptor3d_Surface
        NbT: int
        NbU: int
        NbV: int
        tmin: float
        tsup: float
        Umin: float
        Usup: float
        Vmin: float
        Vsup: float
        Tol1: float
        Tol2: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_GenExtCS_swiginit(self, _Extrema.new_Extrema_GenExtCS(*args))

    def Initialize(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        S: Adaptor3d_Surface
        NbU: int
        NbV: int
        Tol2: float

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        S: Adaptor3d_Surface
        NbU: int
        NbV: int
        Umin: float
        Usup: float
        Vmin: float
        Vsup: float
        Tol2: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_GenExtCS_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_GenExtCS_IsDone(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_GenExtCS_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        The algorithm is done with s an exception is raised if the fields have not been initialized.

        Parameters
        ----------
        C: Adaptor3d_Curve
        NbT: int
        Tol1: float

        Returns
        -------
        None
        The algorithm is done with c an exception is raised if the fields have not been initialized.

        Parameters
        ----------
        C: Adaptor3d_Curve
        NbT: int
        tmin: float
        tsup: float
        Tol1: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_GenExtCS_Perform(self, *args)

    def PointOnCurve(self, *args) -> "Extrema_POnCurv const &":
        r"""
        Returns the point of the nth resulting distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnCurv

        """
        return _Extrema.Extrema_GenExtCS_PointOnCurve(self, *args)

    def PointOnSurface(self, *args) -> "Extrema_POnSurf const &":
        r"""
        Returns the point of the nth resulting distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnSurf

        """
        return _Extrema.Extrema_GenExtCS_PointOnSurface(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth resulting square distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_GenExtCS_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_GenExtCS

# Register Extrema_GenExtCS in _Extrema:
_Extrema.Extrema_GenExtCS_swigregister(Extrema_GenExtCS)

class Extrema_GenExtPS(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        It calculates all the distances. the function f(u,v)=distance(p,s(u,v)) has an extremum when gradient(f)=0. the algorithm searchs all the zeros inside the definition ranges of the surface. nbu and nbv are used to locate the close points to find the zeros. they must be great enough such that if there is n extrema, there will be n extrema between p and the grid. tolu et tolv are used to determine the conditions to stop the iterations; at the iteration number n: (un - un-1) < tolu and (vn - vn-1) < tolv .

        Parameters
        ----------
        P: gp_Pnt
        S: Adaptor3d_Surface
        NbU: int
        NbV: int
        TolU: float
        TolV: float
        F: Extrema_ExtFlag,optional
        	default value is Extrema_ExtFlag_MINMAX
        A: Extrema_ExtAlgo,optional
        	default value is Extrema_ExtAlgo_Grad

        Returns
        -------
        None
        It calculates all the distances. the function f(u,v)=distance(p,s(u,v)) has an extremum when gradient(f)=0. the algorithm searchs all the zeros inside the definition ranges of the surface. nbu and nbv are used to locate the close points to find the zeros. they must be great enough such that if there is n extrema, there will be n extrema between p and the grid. tolu et tolv are used to determine the conditions to stop the iterations; at the iteration number n: (un - un-1) < tolu and (vn - vn-1) < tolv .

        Parameters
        ----------
        P: gp_Pnt
        S: Adaptor3d_Surface
        NbU: int
        NbV: int
        Umin: float
        Usup: float
        Vmin: float
        Vsup: float
        TolU: float
        TolV: float
        F: Extrema_ExtFlag,optional
        	default value is Extrema_ExtFlag_MINMAX
        A: Extrema_ExtAlgo,optional
        	default value is Extrema_ExtAlgo_Grad

        Returns
        -------
        None

        """
        _Extrema.Extrema_GenExtPS_swiginit(self, _Extrema.new_Extrema_GenExtPS(*args))

    def Initialize(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        S: Adaptor3d_Surface
        NbU: int
        NbV: int
        TolU: float
        TolV: float

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        S: Adaptor3d_Surface
        NbU: int
        NbV: int
        Umin: float
        Usup: float
        Vmin: float
        Vsup: float
        TolU: float
        TolV: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_GenExtPS_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_GenExtPS_IsDone(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_GenExtPS_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        The algorithm is done with the point p. an exception is raised if the fields have not been initialized.

        Parameters
        ----------
        P: gp_Pnt

        Returns
        -------
        None

        """
        return _Extrema.Extrema_GenExtPS_Perform(self, *args)

    def Point(self, *args) -> "Extrema_POnSurf const &":
        r"""
        Returns the point of the nth resulting distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnSurf

        """
        return _Extrema.Extrema_GenExtPS_Point(self, *args)

    def SetAlgo(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        A: Extrema_ExtAlgo

        Returns
        -------
        None

        """
        return _Extrema.Extrema_GenExtPS_SetAlgo(self, *args)

    def SetFlag(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        F: Extrema_ExtFlag

        Returns
        -------
        None

        """
        return _Extrema.Extrema_GenExtPS_SetFlag(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth resulting square distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_GenExtPS_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_GenExtPS

# Register Extrema_GenExtPS in _Extrema:
_Extrema.Extrema_GenExtPS_swigregister(Extrema_GenExtPS)

class Extrema_GenExtSS(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        It calculates all the distances. the function f(u,v)=distance(s1(u1,v1),s2(u2,v2)) has an extremum when gradient(f)=0. the algorithm searchs all the zeros inside the definition ranges of the surfaces. nbu and nbv are used to locate the close points to find the zeros.

        Parameters
        ----------
        S1: Adaptor3d_Surface
        S2: Adaptor3d_Surface
        NbU: int
        NbV: int
        Tol1: float
        Tol2: float

        Returns
        -------
        None
        It calculates all the distances. the function f(u,v)=distance(p,s(u,v)) has an extremum when gradient(f)=0. the algorithm searchs all the zeros inside the definition ranges of the surface. nbu and nbv are used to locate the close points to find the zeros.

        Parameters
        ----------
        S1: Adaptor3d_Surface
        S2: Adaptor3d_Surface
        NbU: int
        NbV: int
        U1min: float
        U1sup: float
        V1min: float
        V1sup: float
        U2min: float
        U2sup: float
        V2min: float
        V2sup: float
        Tol1: float
        Tol2: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_GenExtSS_swiginit(self, _Extrema.new_Extrema_GenExtSS(*args))

    def Initialize(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        S2: Adaptor3d_Surface
        NbU: int
        NbV: int
        Tol2: float

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        S2: Adaptor3d_Surface
        NbU: int
        NbV: int
        U2min: float
        U2sup: float
        V2min: float
        V2sup: float
        Tol2: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_GenExtSS_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distances are found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_GenExtSS_IsDone(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of extremum distances.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_GenExtSS_NbExt(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        The algorithm is done with s1 an exception is raised if the fields have not been initialized.

        Parameters
        ----------
        S1: Adaptor3d_Surface
        Tol1: float

        Returns
        -------
        None
        The algorithm is done withs1 an exception is raised if the fields have not been initialized.

        Parameters
        ----------
        S1: Adaptor3d_Surface
        U1min: float
        U1sup: float
        V1min: float
        V1sup: float
        Tol1: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_GenExtSS_Perform(self, *args)

    def PointOnS1(self, *args) -> "Extrema_POnSurf const &":
        r"""
        Returns the point of the nth resulting distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnSurf

        """
        return _Extrema.Extrema_GenExtSS_PointOnS1(self, *args)

    def PointOnS2(self, *args) -> "Extrema_POnSurf const &":
        r"""
        Returns the point of the nth resulting distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnSurf

        """
        return _Extrema.Extrema_GenExtSS_PointOnS2(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the nth resulting square distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_GenExtSS_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_GenExtSS

# Register Extrema_GenExtSS in _Extrema:
_Extrema.Extrema_GenExtSS_swigregister(Extrema_GenExtSS)

class Extrema_GenLocateExtCS(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        Calculates the distance with two close points. the close points are defined by the parameter values t for c and (u,v) for s. the function f(t,u,v)=distance(c(t),s(u,v)) has an extremun when gradient(f)=0. the algorithm searchs a zero near the close points.

        Parameters
        ----------
        C: Adaptor3d_Curve
        S: Adaptor3d_Surface
        T: float
        U: float
        V: float
        Tol1: float
        Tol2: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_GenLocateExtCS_swiginit(self, _Extrema.new_Extrema_GenLocateExtCS(*args))

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distance is found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_GenLocateExtCS_IsDone(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve
        S: Adaptor3d_Surface
        T: float
        U: float
        V: float
        Tol1: float
        Tol2: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_GenLocateExtCS_Perform(self, *args)

    def PointOnCurve(self, *args) -> "Extrema_POnCurv const &":
        r"""
        Returns the point of the extremum distance on c.

        Returns
        -------
        Extrema_POnCurv

        """
        return _Extrema.Extrema_GenLocateExtCS_PointOnCurve(self, *args)

    def PointOnSurface(self, *args) -> "Extrema_POnSurf const &":
        r"""
        Returns the point of the extremum distance on s.

        Returns
        -------
        Extrema_POnSurf

        """
        return _Extrema.Extrema_GenLocateExtCS_PointOnSurface(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the extremum square distance.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_GenLocateExtCS_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_GenLocateExtCS

# Register Extrema_GenLocateExtCS in _Extrema:
_Extrema.Extrema_GenLocateExtCS_swigregister(Extrema_GenLocateExtCS)

class Extrema_GenLocateExtPS(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Constructor.

        Parameters
        ----------
        theS: Adaptor3d_Surface
        theTolU: float,optional
        	default value is Precision::PConfusion()
        theTolV: float,optional
        	default value is Precision::PConfusion()

        Returns
        -------
        None

        """
        _Extrema.Extrema_GenLocateExtPS_swiginit(self, _Extrema.new_Extrema_GenLocateExtPS(*args))

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distance is found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_GenLocateExtPS_IsDone(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        Calculates the extrema between the point and the surface using a close point. the close point is defined by the parameter values theu0 and thev0. type of the algorithm depends on the isdistancecriteria flag. if flag value is false - normal projection criteria will be used. if flag value is true - distance criteria will be used.

        Parameters
        ----------
        theP: gp_Pnt
        theU0: float
        theV0: float
        isDistanceCriteria: bool,optional
        	default value is Standard_False

        Returns
        -------
        None

        """
        return _Extrema.Extrema_GenLocateExtPS_Perform(self, *args)

    def Point(self, *args) -> "Extrema_POnSurf const &":
        r"""
        Returns the point of the extremum distance.

        Returns
        -------
        Extrema_POnSurf

        """
        return _Extrema.Extrema_GenLocateExtPS_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the extremum square distance.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_GenLocateExtPS_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_GenLocateExtPS

# Register Extrema_GenLocateExtPS in _Extrema:
_Extrema.Extrema_GenLocateExtPS_swigregister(Extrema_GenLocateExtPS)

class Extrema_GenLocateExtSS(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        Calculates the distance with two close points. the close points are defined by the parameter values (u1,v1) for s1 and (u2,v2) for s2. the function f(u1,v1,u2,v2)=distance(s1(u1,v1),s2(u2,v2)) has an extremun when gradient(f)=0. the algorithm searchs a zero near the close points.

        Parameters
        ----------
        S1: Adaptor3d_Surface
        S2: Adaptor3d_Surface
        U1: float
        V1: float
        U2: float
        V2: float
        Tol1: float
        Tol2: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_GenLocateExtSS_swiginit(self, _Extrema.new_Extrema_GenLocateExtSS(*args))

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distance is found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_GenLocateExtSS_IsDone(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        S1: Adaptor3d_Surface
        S2: Adaptor3d_Surface
        U1: float
        V1: float
        U2: float
        V2: float
        Tol1: float
        Tol2: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_GenLocateExtSS_Perform(self, *args)

    def PointOnS1(self, *args) -> "Extrema_POnSurf const &":
        r"""
        Returns the point of the extremum distance on s1.

        Returns
        -------
        Extrema_POnSurf

        """
        return _Extrema.Extrema_GenLocateExtSS_PointOnS1(self, *args)

    def PointOnS2(self, *args) -> "Extrema_POnSurf const &":
        r"""
        Returns the point of the extremum distance on s2.

        Returns
        -------
        Extrema_POnSurf

        """
        return _Extrema.Extrema_GenLocateExtSS_PointOnS2(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the extremum square distance.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_GenLocateExtSS_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_GenLocateExtSS

# Register Extrema_GenLocateExtSS in _Extrema:
_Extrema.Extrema_GenLocateExtSS_swigregister(Extrema_GenLocateExtSS)

class Extrema_GlobOptFuncCCC0(OCC.Core.math.math_MultipleVarFunction):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Parameters
        ----------
        C1: Adaptor3d_Curve
        C2: Adaptor3d_Curve

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C1: Adaptor2d_Curve2d
        C2: Adaptor2d_Curve2d

        Returns
        -------
        None

        """
        _Extrema.Extrema_GlobOptFuncCCC0_swiginit(self, _Extrema.new_Extrema_GlobOptFuncCCC0(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_GlobOptFuncCCC0

# Register Extrema_GlobOptFuncCCC0 in _Extrema:
_Extrema.Extrema_GlobOptFuncCCC0_swigregister(Extrema_GlobOptFuncCCC0)

class Extrema_GlobOptFuncCCC1(OCC.Core.math.math_MultipleVarFunctionWithGradient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Parameters
        ----------
        C1: Adaptor3d_Curve
        C2: Adaptor3d_Curve

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C1: Adaptor2d_Curve2d
        C2: Adaptor2d_Curve2d

        Returns
        -------
        None

        """
        _Extrema.Extrema_GlobOptFuncCCC1_swiginit(self, _Extrema.new_Extrema_GlobOptFuncCCC1(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_GlobOptFuncCCC1

# Register Extrema_GlobOptFuncCCC1 in _Extrema:
_Extrema.Extrema_GlobOptFuncCCC1_swigregister(Extrema_GlobOptFuncCCC1)

class Extrema_GlobOptFuncCCC2(OCC.Core.math.math_MultipleVarFunctionWithHessian):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Parameters
        ----------
        C1: Adaptor3d_Curve
        C2: Adaptor3d_Curve

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C1: Adaptor2d_Curve2d
        C2: Adaptor2d_Curve2d

        Returns
        -------
        None

        """
        _Extrema.Extrema_GlobOptFuncCCC2_swiginit(self, _Extrema.new_Extrema_GlobOptFuncCCC2(*args))

    def Values(self, *args) -> "Standard_Boolean":
        r"""
        No available documentation.

        Parameters
        ----------
        X: math_Vector
        G: math_Vector

        Returns
        -------
        F: float
        No available documentation.

        Parameters
        ----------
        X: math_Vector
        G: math_Vector
        H: math_Matrix

        Returns
        -------
        F: float

        """
        return _Extrema.Extrema_GlobOptFuncCCC2_Values(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_GlobOptFuncCCC2

# Register Extrema_GlobOptFuncCCC2 in _Extrema:
_Extrema.Extrema_GlobOptFuncCCC2_swigregister(Extrema_GlobOptFuncCCC2)

class Extrema_GlobOptFuncCQuadric(OCC.Core.math.math_MultipleVarFunction):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Curve and surface should exist during all the lifetime of extrema_globoptfunccquadric.

        Parameters
        ----------
        C: Adaptor3d_Curve *

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve *
        theTf: float
        theTl: float

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve *
        S: Adaptor3d_Surface *

        Returns
        -------
        None

        """
        _Extrema.Extrema_GlobOptFuncCQuadric_swiginit(self, _Extrema.new_Extrema_GlobOptFuncCQuadric(*args))

    def LoadQuad(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        S: Adaptor3d_Surface *
        theUf: float
        theUl: float
        theVf: float
        theVl: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_GlobOptFuncCQuadric_LoadQuad(self, *args)

    def QuadricParameters(self, *args) -> "void":
        r"""
        Parameters of quadric for point on curve defined by thect.

        Parameters
        ----------
        theCT: math_Vector
        theUV: math_Vector

        Returns
        -------
        None

        """
        return _Extrema.Extrema_GlobOptFuncCQuadric_QuadricParameters(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_GlobOptFuncCQuadric

# Register Extrema_GlobOptFuncCQuadric in _Extrema:
_Extrema.Extrema_GlobOptFuncCQuadric_swigregister(Extrema_GlobOptFuncCQuadric)

class Extrema_GlobOptFuncCS(OCC.Core.math.math_MultipleVarFunctionWithHessian):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Curve and surface should exist during all the lifetime of extrema_globoptfunccs.

        Parameters
        ----------
        C: Adaptor3d_Curve *
        S: Adaptor3d_Surface *

        Returns
        -------
        None

        """
        _Extrema.Extrema_GlobOptFuncCS_swiginit(self, _Extrema.new_Extrema_GlobOptFuncCS(*args))

    def Values(self, *args) -> "Standard_Boolean":
        r"""
        No available documentation.

        Parameters
        ----------
        theX: math_Vector
        theG: math_Vector

        Returns
        -------
        theF: float
        No available documentation.

        Parameters
        ----------
        theX: math_Vector
        theG: math_Vector
        theH: math_Matrix

        Returns
        -------
        theF: float

        """
        return _Extrema.Extrema_GlobOptFuncCS_Values(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_GlobOptFuncCS

# Register Extrema_GlobOptFuncCS in _Extrema:
_Extrema.Extrema_GlobOptFuncCS_swigregister(Extrema_GlobOptFuncCS)

class Extrema_GlobOptFuncConicS(OCC.Core.math.math_MultipleVarFunction):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Curve and surface should exist during all the lifetime of extrema_globoptfuncconics.

        Parameters
        ----------
        C: Adaptor3d_Curve *
        S: Adaptor3d_Surface *

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        S: Adaptor3d_Surface *

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        S: Adaptor3d_Surface *
        theUf: float
        theUl: float
        theVf: float
        theVl: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_GlobOptFuncConicS_swiginit(self, _Extrema.new_Extrema_GlobOptFuncConicS(*args))

    def ConicParameter(self, *args) -> "Standard_Real":
        r"""
        Parameter of conic for point on surface defined by theuv.

        Parameters
        ----------
        theUV: math_Vector

        Returns
        -------
        float

        """
        return _Extrema.Extrema_GlobOptFuncConicS_ConicParameter(self, *args)

    def LoadConic(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        S: Adaptor3d_Curve *
        theTf: float
        theTl: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_GlobOptFuncConicS_LoadConic(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_GlobOptFuncConicS

# Register Extrema_GlobOptFuncConicS in _Extrema:
_Extrema.Extrema_GlobOptFuncConicS_swigregister(Extrema_GlobOptFuncConicS)

class Extrema_LocECC(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Calculates the distance with a close point. the close point is defined by a parameter value on each curve. the function f(u,v)=distance(c1(u),c2(v)) has an extremun when gradient(f)=0. the algorithm searchs the zero near the close point.

        Parameters
        ----------
        C1: Adaptor3d_Curve
        C2: Adaptor3d_Curve
        U0: float
        V0: float
        TolU: float
        TolV: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_LocECC_swiginit(self, _Extrema.new_Extrema_LocECC(*args))

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distance is found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_LocECC_IsDone(self, *args)

    def Point(self, *args) -> "void":
        r"""
        Returns the points of the extremum distance. p1 is on the first curve, p2 on the second one.

        Parameters
        ----------
        P1: Extrema_POnCurv
        P2: Extrema_POnCurv

        Returns
        -------
        None

        """
        return _Extrema.Extrema_LocECC_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the extremum square distance.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_LocECC_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_LocECC

# Register Extrema_LocECC in _Extrema:
_Extrema.Extrema_LocECC_swigregister(Extrema_LocECC)

class Extrema_LocECC2d(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Calculates the distance with a close point. the close point is defined by a parameter value on each curve. the function f(u,v)=distance(c1(u),c2(v)) has an extremun when gradient(f)=0. the algorithm searchs the zero near the close point.

        Parameters
        ----------
        C1: Adaptor2d_Curve2d
        C2: Adaptor2d_Curve2d
        U0: float
        V0: float
        TolU: float
        TolV: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_LocECC2d_swiginit(self, _Extrema.new_Extrema_LocECC2d(*args))

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distance is found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_LocECC2d_IsDone(self, *args)

    def Point(self, *args) -> "void":
        r"""
        Returns the points of the extremum distance. p1 is on the first curve, p2 on the second one.

        Parameters
        ----------
        P1: Extrema_POnCurv2d
        P2: Extrema_POnCurv2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_LocECC2d_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the extremum square distance.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_LocECC2d_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_LocECC2d

# Register Extrema_LocECC2d in _Extrema:
_Extrema.Extrema_LocECC2d_swigregister(Extrema_LocECC2d)

class Extrema_LocEPCOfLocateExtPC(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        Calculates the distance with a close point. the close point is defined by the parameter value u0. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs a zero near the close point. tolu is used to decide to stop the iterations. at the nth iteration, the criteria is: abs(un - un-1) < tolu.

        Parameters
        ----------
        P: gp_Pnt
        C: Adaptor3d_Curve
        U0: float
        TolU: float

        Returns
        -------
        None
        Calculates the distance with a close point. the close point is defined by the parameter value u0. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs a zero near the close point. zeros are searched between umin et usup. tolu is used to decide to stop the iterations. at the nth iteration, the criteria is: abs(un - un-1) < tolu.

        Parameters
        ----------
        P: gp_Pnt
        C: Adaptor3d_Curve
        U0: float
        Umin: float
        Usup: float
        TolU: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_LocEPCOfLocateExtPC_swiginit(self, _Extrema.new_Extrema_LocEPCOfLocateExtPC(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Sets the fields of the algorithm.

        Parameters
        ----------
        C: Adaptor3d_Curve
        Umin: float
        Usup: float
        TolU: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_LocEPCOfLocateExtPC_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distance is found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_LocEPCOfLocateExtPC_IsDone(self, *args)

    def IsMin(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the extremum distance is a minimum.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_LocEPCOfLocateExtPC_IsMin(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        The algorithm is done with the point p. an exception is raised if the fields have not been initialized.

        Parameters
        ----------
        P: gp_Pnt
        U0: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_LocEPCOfLocateExtPC_Perform(self, *args)

    def Point(self, *args) -> "Extrema_POnCurv const &":
        r"""
        Returns the point of the extremum distance.

        Returns
        -------
        Extrema_POnCurv

        """
        return _Extrema.Extrema_LocEPCOfLocateExtPC_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the extremum square distance.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_LocEPCOfLocateExtPC_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_LocEPCOfLocateExtPC

# Register Extrema_LocEPCOfLocateExtPC in _Extrema:
_Extrema.Extrema_LocEPCOfLocateExtPC_swigregister(Extrema_LocEPCOfLocateExtPC)

class Extrema_LocEPCOfLocateExtPC2d(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        Calculates the distance with a close point. the close point is defined by the parameter value u0. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs a zero near the close point. tolu is used to decide to stop the iterations. at the nth iteration, the criteria is: abs(un - un-1) < tolu.

        Parameters
        ----------
        P: gp_Pnt2d
        C: Adaptor2d_Curve2d
        U0: float
        TolU: float

        Returns
        -------
        None
        Calculates the distance with a close point. the close point is defined by the parameter value u0. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs a zero near the close point. zeros are searched between umin et usup. tolu is used to decide to stop the iterations. at the nth iteration, the criteria is: abs(un - un-1) < tolu.

        Parameters
        ----------
        P: gp_Pnt2d
        C: Adaptor2d_Curve2d
        U0: float
        Umin: float
        Usup: float
        TolU: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_LocEPCOfLocateExtPC2d_swiginit(self, _Extrema.new_Extrema_LocEPCOfLocateExtPC2d(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Sets the fields of the algorithm.

        Parameters
        ----------
        C: Adaptor2d_Curve2d
        Umin: float
        Usup: float
        TolU: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_LocEPCOfLocateExtPC2d_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distance is found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_LocEPCOfLocateExtPC2d_IsDone(self, *args)

    def IsMin(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the extremum distance is a minimum.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_LocEPCOfLocateExtPC2d_IsMin(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        The algorithm is done with the point p. an exception is raised if the fields have not been initialized.

        Parameters
        ----------
        P: gp_Pnt2d
        U0: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_LocEPCOfLocateExtPC2d_Perform(self, *args)

    def Point(self, *args) -> "Extrema_POnCurv2d const &":
        r"""
        Returns the point of the extremum distance.

        Returns
        -------
        Extrema_POnCurv2d

        """
        return _Extrema.Extrema_LocEPCOfLocateExtPC2d_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the extremum square distance.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_LocEPCOfLocateExtPC2d_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_LocEPCOfLocateExtPC2d

# Register Extrema_LocEPCOfLocateExtPC2d in _Extrema:
_Extrema.Extrema_LocEPCOfLocateExtPC2d_swigregister(Extrema_LocEPCOfLocateExtPC2d)

class Extrema_LocateExtCC(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Calculates the distance with a close point. the close point is defined by a parameter value on each curve. the function f(u,v)=distance(c1(u),c2(v)) has an extremun when gradient(f)=0. the algorithm searchs the zero near the close point.

        Parameters
        ----------
        C1: Adaptor3d_Curve
        C2: Adaptor3d_Curve
        U0: float
        V0: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_LocateExtCC_swiginit(self, _Extrema.new_Extrema_LocateExtCC(*args))

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distance is found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_LocateExtCC_IsDone(self, *args)

    def Point(self, *args) -> "void":
        r"""
        Returns the points of the extremum distance. p1 is on the first curve, p2 on the second one.

        Parameters
        ----------
        P1: Extrema_POnCurv
        P2: Extrema_POnCurv

        Returns
        -------
        None

        """
        return _Extrema.Extrema_LocateExtCC_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the extremum square distance.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_LocateExtCC_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_LocateExtCC

# Register Extrema_LocateExtCC in _Extrema:
_Extrema.Extrema_LocateExtCC_swigregister(Extrema_LocateExtCC)

class Extrema_LocateExtCC2d(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Calculates the distance with a close point. the close point is defined by a parameter value on each curve. the function f(u,v)=distance(c1(u),c2(v)) has an extremun when gradient(f)=0. the algorithm searchs the zero near the close point.

        Parameters
        ----------
        C1: Adaptor2d_Curve2d
        C2: Adaptor2d_Curve2d
        U0: float
        V0: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_LocateExtCC2d_swiginit(self, _Extrema.new_Extrema_LocateExtCC2d(*args))

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distance is found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_LocateExtCC2d_IsDone(self, *args)

    def Point(self, *args) -> "void":
        r"""
        Returns the points of the extremum distance. p1 is on the first curve, p2 on the second one.

        Parameters
        ----------
        P1: Extrema_POnCurv2d
        P2: Extrema_POnCurv2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_LocateExtCC2d_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the extremum square distance.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_LocateExtCC2d_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_LocateExtCC2d

# Register Extrema_LocateExtCC2d in _Extrema:
_Extrema.Extrema_LocateExtCC2d_swigregister(Extrema_LocateExtCC2d)

class Extrema_LocateExtPC(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        Calculates the distance with a close point. the close point is defined by the parameter value u0. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs a zero near the close point. tolf is used to decide to stop the iterations. at the nth iteration, the criteria is: abs(un - un-1) < tolf.

        Parameters
        ----------
        P: gp_Pnt
        C: Adaptor3d_Curve
        U0: float
        TolF: float

        Returns
        -------
        None
        Calculates the distance with a close point. the close point is defined by the parameter value u0. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs a zero near the close point. zeros are searched between umin et usup. tolf is used to decide to stop the iterations. at the nth iteration, the criteria is: abs(un - un-1) < tolf.

        Parameters
        ----------
        P: gp_Pnt
        C: Adaptor3d_Curve
        U0: float
        Umin: float
        Usup: float
        TolF: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_LocateExtPC_swiginit(self, _Extrema.new_Extrema_LocateExtPC(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Sets the fields of the algorithm.

        Parameters
        ----------
        C: Adaptor3d_Curve
        Umin: float
        Usup: float
        TolF: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_LocateExtPC_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distance is found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_LocateExtPC_IsDone(self, *args)

    def IsMin(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the extremum distance is a minimum.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_LocateExtPC_IsMin(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt
        U0: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_LocateExtPC_Perform(self, *args)

    def Point(self, *args) -> "Extrema_POnCurv const &":
        r"""
        Returns the point of the extremum distance.

        Returns
        -------
        Extrema_POnCurv

        """
        return _Extrema.Extrema_LocateExtPC_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the extremum square distance.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_LocateExtPC_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_LocateExtPC

# Register Extrema_LocateExtPC in _Extrema:
_Extrema.Extrema_LocateExtPC_swigregister(Extrema_LocateExtPC)

class Extrema_LocateExtPC2d(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        Calculates the distance with a close point. the close point is defined by the parameter value u0. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs a zero near the close point. tolf is used to decide to stop the iterations. at the nth iteration, the criteria is: abs(un - un-1) < tolf.

        Parameters
        ----------
        P: gp_Pnt2d
        C: Adaptor2d_Curve2d
        U0: float
        TolF: float

        Returns
        -------
        None
        Calculates the distance with a close point. the close point is defined by the parameter value u0. the function f(u)=distance(p,c(u)) has an extremum when g(u)=df/du=0. the algorithm searchs a zero near the close point. zeros are searched between umin et usup. tolf is used to decide to stop the iterations. at the nth iteration, the criteria is: abs(un - un-1) < tolf.

        Parameters
        ----------
        P: gp_Pnt2d
        C: Adaptor2d_Curve2d
        U0: float
        Umin: float
        Usup: float
        TolF: float

        Returns
        -------
        None

        """
        _Extrema.Extrema_LocateExtPC2d_swiginit(self, _Extrema.new_Extrema_LocateExtPC2d(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Sets the fields of the algorithm.

        Parameters
        ----------
        C: Adaptor2d_Curve2d
        Umin: float
        Usup: float
        TolF: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_LocateExtPC2d_Initialize(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the distance is found.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_LocateExtPC2d_IsDone(self, *args)

    def IsMin(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the extremum distance is a minimum.

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_LocateExtPC2d_IsMin(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt2d
        U0: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_LocateExtPC2d_Perform(self, *args)

    def Point(self, *args) -> "Extrema_POnCurv2d const &":
        r"""
        Returns the point of the extremum distance.

        Returns
        -------
        Extrema_POnCurv2d

        """
        return _Extrema.Extrema_LocateExtPC2d_Point(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the value of the extremum square distance.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_LocateExtPC2d_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_LocateExtPC2d

# Register Extrema_LocateExtPC2d in _Extrema:
_Extrema.Extrema_LocateExtPC2d_swigregister(Extrema_LocateExtPC2d)

class Extrema_PCFOfEPCOfELPCOfLocateExtPC(OCC.Core.math.math_FunctionWithDerivative):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt
        C: Adaptor3d_Curve

        Returns
        -------
        None

        """
        _Extrema.Extrema_PCFOfEPCOfELPCOfLocateExtPC_swiginit(self, _Extrema.new_Extrema_PCFOfEPCOfELPCOfLocateExtPC(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Sets the field mycurve of the function.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        None

        """
        return _Extrema.Extrema_PCFOfEPCOfELPCOfLocateExtPC_Initialize(self, *args)

    def IsMin(self, *args) -> "Standard_Boolean":
        r"""
        Shows if the nth distance is a minimum.

        Parameters
        ----------
        N: int

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_PCFOfEPCOfELPCOfLocateExtPC_IsMin(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Return the nunber of found extrema.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_PCFOfEPCOfELPCOfLocateExtPC_NbExt(self, *args)

    def Point(self, *args) -> "Extrema_POnCurv const &":
        r"""
        Returns the nth extremum.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnCurv

        """
        return _Extrema.Extrema_PCFOfEPCOfELPCOfLocateExtPC_Point(self, *args)

    def SearchOfTolerance(self, *args) -> "Standard_Real":
        r"""
        Computes a tol value. if 1st derivative of curve |d1|<tol, it is considered d1=0.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_PCFOfEPCOfELPCOfLocateExtPC_SearchOfTolerance(self, *args)

    def SetPoint(self, *args) -> "void":
        r"""
        Sets the field p of the function.

        Parameters
        ----------
        P: gp_Pnt

        Returns
        -------
        None

        """
        return _Extrema.Extrema_PCFOfEPCOfELPCOfLocateExtPC_SetPoint(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the nth distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_PCFOfEPCOfELPCOfLocateExtPC_SquareDistance(self, *args)

    def SubIntervalInitialize(self, *args) -> "void":
        r"""
        Determines boundaries of subinterval for find of root.

        Parameters
        ----------
        theUfirst: float
        theUlast: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_PCFOfEPCOfELPCOfLocateExtPC_SubIntervalInitialize(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_PCFOfEPCOfELPCOfLocateExtPC

# Register Extrema_PCFOfEPCOfELPCOfLocateExtPC in _Extrema:
_Extrema.Extrema_PCFOfEPCOfELPCOfLocateExtPC_swigregister(Extrema_PCFOfEPCOfELPCOfLocateExtPC)

class Extrema_PCFOfEPCOfELPCOfLocateExtPC2d(OCC.Core.math.math_FunctionWithDerivative):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt2d
        C: Adaptor2d_Curve2d

        Returns
        -------
        None

        """
        _Extrema.Extrema_PCFOfEPCOfELPCOfLocateExtPC2d_swiginit(self, _Extrema.new_Extrema_PCFOfEPCOfELPCOfLocateExtPC2d(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Sets the field mycurve of the function.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_PCFOfEPCOfELPCOfLocateExtPC2d_Initialize(self, *args)

    def IsMin(self, *args) -> "Standard_Boolean":
        r"""
        Shows if the nth distance is a minimum.

        Parameters
        ----------
        N: int

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_PCFOfEPCOfELPCOfLocateExtPC2d_IsMin(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Return the nunber of found extrema.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_PCFOfEPCOfELPCOfLocateExtPC2d_NbExt(self, *args)

    def Point(self, *args) -> "Extrema_POnCurv2d const &":
        r"""
        Returns the nth extremum.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnCurv2d

        """
        return _Extrema.Extrema_PCFOfEPCOfELPCOfLocateExtPC2d_Point(self, *args)

    def SearchOfTolerance(self, *args) -> "Standard_Real":
        r"""
        Computes a tol value. if 1st derivative of curve |d1|<tol, it is considered d1=0.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_PCFOfEPCOfELPCOfLocateExtPC2d_SearchOfTolerance(self, *args)

    def SetPoint(self, *args) -> "void":
        r"""
        Sets the field p of the function.

        Parameters
        ----------
        P: gp_Pnt2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_PCFOfEPCOfELPCOfLocateExtPC2d_SetPoint(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the nth distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_PCFOfEPCOfELPCOfLocateExtPC2d_SquareDistance(self, *args)

    def SubIntervalInitialize(self, *args) -> "void":
        r"""
        Determines boundaries of subinterval for find of root.

        Parameters
        ----------
        theUfirst: float
        theUlast: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_PCFOfEPCOfELPCOfLocateExtPC2d_SubIntervalInitialize(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_PCFOfEPCOfELPCOfLocateExtPC2d

# Register Extrema_PCFOfEPCOfELPCOfLocateExtPC2d in _Extrema:
_Extrema.Extrema_PCFOfEPCOfELPCOfLocateExtPC2d_swigregister(Extrema_PCFOfEPCOfELPCOfLocateExtPC2d)

class Extrema_PCFOfEPCOfExtPC(OCC.Core.math.math_FunctionWithDerivative):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt
        C: Adaptor3d_Curve

        Returns
        -------
        None

        """
        _Extrema.Extrema_PCFOfEPCOfExtPC_swiginit(self, _Extrema.new_Extrema_PCFOfEPCOfExtPC(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Sets the field mycurve of the function.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        None

        """
        return _Extrema.Extrema_PCFOfEPCOfExtPC_Initialize(self, *args)

    def IsMin(self, *args) -> "Standard_Boolean":
        r"""
        Shows if the nth distance is a minimum.

        Parameters
        ----------
        N: int

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_PCFOfEPCOfExtPC_IsMin(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Return the nunber of found extrema.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_PCFOfEPCOfExtPC_NbExt(self, *args)

    def Point(self, *args) -> "Extrema_POnCurv const &":
        r"""
        Returns the nth extremum.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnCurv

        """
        return _Extrema.Extrema_PCFOfEPCOfExtPC_Point(self, *args)

    def SearchOfTolerance(self, *args) -> "Standard_Real":
        r"""
        Computes a tol value. if 1st derivative of curve |d1|<tol, it is considered d1=0.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_PCFOfEPCOfExtPC_SearchOfTolerance(self, *args)

    def SetPoint(self, *args) -> "void":
        r"""
        Sets the field p of the function.

        Parameters
        ----------
        P: gp_Pnt

        Returns
        -------
        None

        """
        return _Extrema.Extrema_PCFOfEPCOfExtPC_SetPoint(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the nth distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_PCFOfEPCOfExtPC_SquareDistance(self, *args)

    def SubIntervalInitialize(self, *args) -> "void":
        r"""
        Determines boundaries of subinterval for find of root.

        Parameters
        ----------
        theUfirst: float
        theUlast: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_PCFOfEPCOfExtPC_SubIntervalInitialize(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_PCFOfEPCOfExtPC

# Register Extrema_PCFOfEPCOfExtPC in _Extrema:
_Extrema.Extrema_PCFOfEPCOfExtPC_swigregister(Extrema_PCFOfEPCOfExtPC)

class Extrema_PCFOfEPCOfExtPC2d(OCC.Core.math.math_FunctionWithDerivative):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt2d
        C: Adaptor2d_Curve2d

        Returns
        -------
        None

        """
        _Extrema.Extrema_PCFOfEPCOfExtPC2d_swiginit(self, _Extrema.new_Extrema_PCFOfEPCOfExtPC2d(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Sets the field mycurve of the function.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_PCFOfEPCOfExtPC2d_Initialize(self, *args)

    def IsMin(self, *args) -> "Standard_Boolean":
        r"""
        Shows if the nth distance is a minimum.

        Parameters
        ----------
        N: int

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_PCFOfEPCOfExtPC2d_IsMin(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Return the nunber of found extrema.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_PCFOfEPCOfExtPC2d_NbExt(self, *args)

    def Point(self, *args) -> "Extrema_POnCurv2d const &":
        r"""
        Returns the nth extremum.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnCurv2d

        """
        return _Extrema.Extrema_PCFOfEPCOfExtPC2d_Point(self, *args)

    def SearchOfTolerance(self, *args) -> "Standard_Real":
        r"""
        Computes a tol value. if 1st derivative of curve |d1|<tol, it is considered d1=0.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_PCFOfEPCOfExtPC2d_SearchOfTolerance(self, *args)

    def SetPoint(self, *args) -> "void":
        r"""
        Sets the field p of the function.

        Parameters
        ----------
        P: gp_Pnt2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_PCFOfEPCOfExtPC2d_SetPoint(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the nth distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_PCFOfEPCOfExtPC2d_SquareDistance(self, *args)

    def SubIntervalInitialize(self, *args) -> "void":
        r"""
        Determines boundaries of subinterval for find of root.

        Parameters
        ----------
        theUfirst: float
        theUlast: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_PCFOfEPCOfExtPC2d_SubIntervalInitialize(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_PCFOfEPCOfExtPC2d

# Register Extrema_PCFOfEPCOfExtPC2d in _Extrema:
_Extrema.Extrema_PCFOfEPCOfExtPC2d_swigregister(Extrema_PCFOfEPCOfExtPC2d)

class Extrema_PCLocFOfLocEPCOfLocateExtPC(OCC.Core.math.math_FunctionWithDerivative):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt
        C: Adaptor3d_Curve

        Returns
        -------
        None

        """
        _Extrema.Extrema_PCLocFOfLocEPCOfLocateExtPC_swiginit(self, _Extrema.new_Extrema_PCLocFOfLocEPCOfLocateExtPC(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Sets the field mycurve of the function.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        None

        """
        return _Extrema.Extrema_PCLocFOfLocEPCOfLocateExtPC_Initialize(self, *args)

    def IsMin(self, *args) -> "Standard_Boolean":
        r"""
        Shows if the nth distance is a minimum.

        Parameters
        ----------
        N: int

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_PCLocFOfLocEPCOfLocateExtPC_IsMin(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Return the nunber of found extrema.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_PCLocFOfLocEPCOfLocateExtPC_NbExt(self, *args)

    def Point(self, *args) -> "Extrema_POnCurv const &":
        r"""
        Returns the nth extremum.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnCurv

        """
        return _Extrema.Extrema_PCLocFOfLocEPCOfLocateExtPC_Point(self, *args)

    def SearchOfTolerance(self, *args) -> "Standard_Real":
        r"""
        Computes a tol value. if 1st derivative of curve |d1|<tol, it is considered d1=0.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_PCLocFOfLocEPCOfLocateExtPC_SearchOfTolerance(self, *args)

    def SetPoint(self, *args) -> "void":
        r"""
        Sets the field p of the function.

        Parameters
        ----------
        P: gp_Pnt

        Returns
        -------
        None

        """
        return _Extrema.Extrema_PCLocFOfLocEPCOfLocateExtPC_SetPoint(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the nth distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_PCLocFOfLocEPCOfLocateExtPC_SquareDistance(self, *args)

    def SubIntervalInitialize(self, *args) -> "void":
        r"""
        Determines boundaries of subinterval for find of root.

        Parameters
        ----------
        theUfirst: float
        theUlast: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_PCLocFOfLocEPCOfLocateExtPC_SubIntervalInitialize(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_PCLocFOfLocEPCOfLocateExtPC

# Register Extrema_PCLocFOfLocEPCOfLocateExtPC in _Extrema:
_Extrema.Extrema_PCLocFOfLocEPCOfLocateExtPC_swigregister(Extrema_PCLocFOfLocEPCOfLocateExtPC)

class Extrema_PCLocFOfLocEPCOfLocateExtPC2d(OCC.Core.math.math_FunctionWithDerivative):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt2d
        C: Adaptor2d_Curve2d

        Returns
        -------
        None

        """
        _Extrema.Extrema_PCLocFOfLocEPCOfLocateExtPC2d_swiginit(self, _Extrema.new_Extrema_PCLocFOfLocEPCOfLocateExtPC2d(*args))

    def Initialize(self, *args) -> "void":
        r"""
        Sets the field mycurve of the function.

        Parameters
        ----------
        C: Adaptor2d_Curve2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_PCLocFOfLocEPCOfLocateExtPC2d_Initialize(self, *args)

    def IsMin(self, *args) -> "Standard_Boolean":
        r"""
        Shows if the nth distance is a minimum.

        Parameters
        ----------
        N: int

        Returns
        -------
        bool

        """
        return _Extrema.Extrema_PCLocFOfLocEPCOfLocateExtPC2d_IsMin(self, *args)

    def NbExt(self, *args) -> "Standard_Integer":
        r"""
        Return the nunber of found extrema.

        Returns
        -------
        int

        """
        return _Extrema.Extrema_PCLocFOfLocEPCOfLocateExtPC2d_NbExt(self, *args)

    def Point(self, *args) -> "Extrema_POnCurv2d const &":
        r"""
        Returns the nth extremum.

        Parameters
        ----------
        N: int

        Returns
        -------
        Extrema_POnCurv2d

        """
        return _Extrema.Extrema_PCLocFOfLocEPCOfLocateExtPC2d_Point(self, *args)

    def SearchOfTolerance(self, *args) -> "Standard_Real":
        r"""
        Computes a tol value. if 1st derivative of curve |d1|<tol, it is considered d1=0.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_PCLocFOfLocEPCOfLocateExtPC2d_SearchOfTolerance(self, *args)

    def SetPoint(self, *args) -> "void":
        r"""
        Sets the field p of the function.

        Parameters
        ----------
        P: gp_Pnt2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_PCLocFOfLocEPCOfLocateExtPC2d_SetPoint(self, *args)

    def SquareDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the nth distance.

        Parameters
        ----------
        N: int

        Returns
        -------
        float

        """
        return _Extrema.Extrema_PCLocFOfLocEPCOfLocateExtPC2d_SquareDistance(self, *args)

    def SubIntervalInitialize(self, *args) -> "void":
        r"""
        Determines boundaries of subinterval for find of root.

        Parameters
        ----------
        theUfirst: float
        theUlast: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_PCLocFOfLocEPCOfLocateExtPC2d_SubIntervalInitialize(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_PCLocFOfLocEPCOfLocateExtPC2d

# Register Extrema_PCLocFOfLocEPCOfLocateExtPC2d in _Extrema:
_Extrema.Extrema_PCLocFOfLocEPCOfLocateExtPC2d_swigregister(Extrema_PCLocFOfLocEPCOfLocateExtPC2d)

class Extrema_POnCurv(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Creation of an indefinite point on curve.

        Returns
        -------
        None
        Creation of a point on curve with a parameter value on the curve and a pnt from gp.

        Parameters
        ----------
        U: float
        P: gp_Pnt

        Returns
        -------
        None

        """
        _Extrema.Extrema_POnCurv_swiginit(self, _Extrema.new_Extrema_POnCurv(*args))

    def Parameter(self, *args) -> "Standard_Real":
        r"""
        Returns the parameter on the curve.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_POnCurv_Parameter(self, *args)

    def SetValues(self, *args) -> "void":
        r"""
        Sets the point and parameter values.

        Parameters
        ----------
        U: float
        P: gp_Pnt

        Returns
        -------
        None

        """
        return _Extrema.Extrema_POnCurv_SetValues(self, *args)

    def Value(self, *args) -> "gp_Pnt const":
        r"""
        Returns the point.

        Returns
        -------
        gp_Pnt

        """
        return _Extrema.Extrema_POnCurv_Value(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_POnCurv

# Register Extrema_POnCurv in _Extrema:
_Extrema.Extrema_POnCurv_swigregister(Extrema_POnCurv)

class Extrema_POnCurv2d(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Creation of an indefinite point on curve.

        Returns
        -------
        None
        Creation of a point on curve with a parameter value on the curve and a pnt from gp.

        Parameters
        ----------
        U: float
        P: gp_Pnt2d

        Returns
        -------
        None

        """
        _Extrema.Extrema_POnCurv2d_swiginit(self, _Extrema.new_Extrema_POnCurv2d(*args))

    def Parameter(self, *args) -> "Standard_Real":
        r"""
        Returns the parameter on the curve.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_POnCurv2d_Parameter(self, *args)

    def SetValues(self, *args) -> "void":
        r"""
        Sets the point and parameter values.

        Parameters
        ----------
        U: float
        P: gp_Pnt2d

        Returns
        -------
        None

        """
        return _Extrema.Extrema_POnCurv2d_SetValues(self, *args)

    def Value(self, *args) -> "gp_Pnt2d const":
        r"""
        Returns the point.

        Returns
        -------
        gp_Pnt2d

        """
        return _Extrema.Extrema_POnCurv2d_Value(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_POnCurv2d

# Register Extrema_POnCurv2d in _Extrema:
_Extrema.Extrema_POnCurv2d_swigregister(Extrema_POnCurv2d)

class Extrema_POnSurf(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Creation of an indefinite point on surface.

        Returns
        -------
        None
        Creation of a point on surface with parameter values on the surface and a pnt from gp.

        Parameters
        ----------
        U: float
        V: float
        P: gp_Pnt

        Returns
        -------
        None

        """
        _Extrema.Extrema_POnSurf_swiginit(self, _Extrema.new_Extrema_POnSurf(*args))

    def Parameter(self, *args) -> "void":
        r"""
        Returns the parameter values on the surface.

        Parameters
        ----------

        Returns
        -------
        U: float
        V: float

        """
        return _Extrema.Extrema_POnSurf_Parameter(self, *args)

    def SetParameters(self, *args) -> "void":
        r"""
        Sets the params of current ponsurf instance. (e.g. to the point to be projected).

        Parameters
        ----------
        theU: float
        theV: float
        thePnt: gp_Pnt

        Returns
        -------
        None

        """
        return _Extrema.Extrema_POnSurf_SetParameters(self, *args)

    def Value(self, *args) -> "gp_Pnt const":
        r"""
        Returns the 3d point.

        Returns
        -------
        gp_Pnt

        """
        return _Extrema.Extrema_POnSurf_Value(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_POnSurf

# Register Extrema_POnSurf in _Extrema:
_Extrema.Extrema_POnSurf_swigregister(Extrema_POnSurf)

class Extrema_POnSurfParams(Extrema_POnSurf):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Empty constructor.

        Returns
        -------
        None
        Creation of a point on surface with parameter values on the surface and a pnt from gp.

        Parameters
        ----------
        theU: float
        theV: float
        thePnt: gp_Pnt

        Returns
        -------
        None

        """
        _Extrema.Extrema_POnSurfParams_swiginit(self, _Extrema.new_Extrema_POnSurfParams(*args))

    def GetElementType(self, *args) -> "Extrema_ElementType":
        r"""
        Query the element type on which this point is situated.

        Returns
        -------
        Extrema_ElementType

        """
        return _Extrema.Extrema_POnSurfParams_GetElementType(self, *args)

    def GetIndices(self, *args) -> "void":
        r"""
        Query the u and v indices of an element that contains this point.

        Parameters
        ----------

        Returns
        -------
        theIndexU: int
        theIndexV: int

        """
        return _Extrema.Extrema_POnSurfParams_GetIndices(self, *args)

    def GetSqrDistance(self, *args) -> "Standard_Real":
        r"""
        Query the square distance from this point to another one.

        Returns
        -------
        float

        """
        return _Extrema.Extrema_POnSurfParams_GetSqrDistance(self, *args)

    def SetElementType(self, *args) -> "void":
        r"""
        Sets the element type on which this point is situated.

        Parameters
        ----------
        theElementType: Extrema_ElementType

        Returns
        -------
        None

        """
        return _Extrema.Extrema_POnSurfParams_SetElementType(self, *args)

    def SetIndices(self, *args) -> "void":
        r"""
        Sets the u and v indices of an element that contains this point.

        Parameters
        ----------
        theIndexU: int
        theIndexV: int

        Returns
        -------
        None

        """
        return _Extrema.Extrema_POnSurfParams_SetIndices(self, *args)

    def SetSqrDistance(self, *args) -> "void":
        r"""
        Sets the square distance from this point to another one (e.g. to the point to be projected).

        Parameters
        ----------
        theSqrDistance: float

        Returns
        -------
        None

        """
        return _Extrema.Extrema_POnSurfParams_SetSqrDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Extrema.delete_Extrema_POnSurfParams

# Register Extrema_POnSurfParams in _Extrema:
_Extrema.Extrema_POnSurfParams_swigregister(Extrema_POnSurfParams)

class Extrema_HArray1OfPOnSurf(Extrema_Array1OfPOnSurf, OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _Extrema.Extrema_HArray1OfPOnSurf_swiginit(self, _Extrema.new_Extrema_HArray1OfPOnSurf(*args))

    def Array1(self) -> "Extrema_Array1OfPOnSurf const &":
        return _Extrema.Extrema_HArray1OfPOnSurf_Array1(self)

    def ChangeArray1(self) -> "Extrema_Array1OfPOnSurf &":
        return _Extrema.Extrema_HArray1OfPOnSurf_ChangeArray1(self)


    @staticmethod
    def DownCast(t):
      return Handle_Extrema_HArray1OfPOnSurf_DownCast(t)

    __swig_destroy__ = _Extrema.delete_Extrema_HArray1OfPOnSurf

# Register Extrema_HArray1OfPOnSurf in _Extrema:
_Extrema.Extrema_HArray1OfPOnSurf_swigregister(Extrema_HArray1OfPOnSurf)

class Extrema_HArray1OfPOnCurv(Extrema_Array1OfPOnCurv, OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _Extrema.Extrema_HArray1OfPOnCurv_swiginit(self, _Extrema.new_Extrema_HArray1OfPOnCurv(*args))

    def Array1(self) -> "Extrema_Array1OfPOnCurv const &":
        return _Extrema.Extrema_HArray1OfPOnCurv_Array1(self)

    def ChangeArray1(self) -> "Extrema_Array1OfPOnCurv &":
        return _Extrema.Extrema_HArray1OfPOnCurv_ChangeArray1(self)


    @staticmethod
    def DownCast(t):
      return Handle_Extrema_HArray1OfPOnCurv_DownCast(t)

    __swig_destroy__ = _Extrema.delete_Extrema_HArray1OfPOnCurv

# Register Extrema_HArray1OfPOnCurv in _Extrema:
_Extrema.Extrema_HArray1OfPOnCurv_swigregister(Extrema_HArray1OfPOnCurv)

class Extrema_HArray1OfPOnCurv2d(Extrema_Array1OfPOnCurv2d, OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _Extrema.Extrema_HArray1OfPOnCurv2d_swiginit(self, _Extrema.new_Extrema_HArray1OfPOnCurv2d(*args))

    def Array1(self) -> "Extrema_Array1OfPOnCurv2d const &":
        return _Extrema.Extrema_HArray1OfPOnCurv2d_Array1(self)

    def ChangeArray1(self) -> "Extrema_Array1OfPOnCurv2d &":
        return _Extrema.Extrema_HArray1OfPOnCurv2d_ChangeArray1(self)


    @staticmethod
    def DownCast(t):
      return Handle_Extrema_HArray1OfPOnCurv2d_DownCast(t)

    __swig_destroy__ = _Extrema.delete_Extrema_HArray1OfPOnCurv2d

# Register Extrema_HArray1OfPOnCurv2d in _Extrema:
_Extrema.Extrema_HArray1OfPOnCurv2d_swigregister(Extrema_HArray1OfPOnCurv2d)

class Extrema_HArray2OfPOnCurv2d(Extrema_Array2OfPOnCurv2d, OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _Extrema.Extrema_HArray2OfPOnCurv2d_swiginit(self, _Extrema.new_Extrema_HArray2OfPOnCurv2d(*args))

    def Array2(self) -> "Extrema_Array2OfPOnCurv2d const &":
        return _Extrema.Extrema_HArray2OfPOnCurv2d_Array2(self)

    def ChangeArray2(self) -> "Extrema_Array2OfPOnCurv2d &":
        return _Extrema.Extrema_HArray2OfPOnCurv2d_ChangeArray2(self)


    @staticmethod
    def DownCast(t):
      return Handle_Extrema_HArray2OfPOnCurv2d_DownCast(t)

    __swig_destroy__ = _Extrema.delete_Extrema_HArray2OfPOnCurv2d

# Register Extrema_HArray2OfPOnCurv2d in _Extrema:
_Extrema.Extrema_HArray2OfPOnCurv2d_swigregister(Extrema_HArray2OfPOnCurv2d)

class Extrema_HArray2OfPOnCurv(Extrema_Array2OfPOnCurv, OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _Extrema.Extrema_HArray2OfPOnCurv_swiginit(self, _Extrema.new_Extrema_HArray2OfPOnCurv(*args))

    def Array2(self) -> "Extrema_Array2OfPOnCurv const &":
        return _Extrema.Extrema_HArray2OfPOnCurv_Array2(self)

    def ChangeArray2(self) -> "Extrema_Array2OfPOnCurv &":
        return _Extrema.Extrema_HArray2OfPOnCurv_ChangeArray2(self)


    @staticmethod
    def DownCast(t):
      return Handle_Extrema_HArray2OfPOnCurv_DownCast(t)

    __swig_destroy__ = _Extrema.delete_Extrema_HArray2OfPOnCurv

# Register Extrema_HArray2OfPOnCurv in _Extrema:
_Extrema.Extrema_HArray2OfPOnCurv_swigregister(Extrema_HArray2OfPOnCurv)

class Extrema_HArray2OfPOnSurf(Extrema_Array2OfPOnSurf, OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _Extrema.Extrema_HArray2OfPOnSurf_swiginit(self, _Extrema.new_Extrema_HArray2OfPOnSurf(*args))

    def Array2(self) -> "Extrema_Array2OfPOnSurf const &":
        return _Extrema.Extrema_HArray2OfPOnSurf_Array2(self)

    def ChangeArray2(self) -> "Extrema_Array2OfPOnSurf &":
        return _Extrema.Extrema_HArray2OfPOnSurf_ChangeArray2(self)


    @staticmethod
    def DownCast(t):
      return Handle_Extrema_HArray2OfPOnSurf_DownCast(t)

    __swig_destroy__ = _Extrema.delete_Extrema_HArray2OfPOnSurf

# Register Extrema_HArray2OfPOnSurf in _Extrema:
_Extrema.Extrema_HArray2OfPOnSurf_swigregister(Extrema_HArray2OfPOnSurf)

class Extrema_HArray2OfPOnSurfParams(Extrema_Array2OfPOnSurfParams, OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _Extrema.Extrema_HArray2OfPOnSurfParams_swiginit(self, _Extrema.new_Extrema_HArray2OfPOnSurfParams(*args))

    def Array2(self) -> "Extrema_Array2OfPOnSurfParams const &":
        return _Extrema.Extrema_HArray2OfPOnSurfParams_Array2(self)

    def ChangeArray2(self) -> "Extrema_Array2OfPOnSurfParams &":
        return _Extrema.Extrema_HArray2OfPOnSurfParams_ChangeArray2(self)


    @staticmethod
    def DownCast(t):
      return Handle_Extrema_HArray2OfPOnSurfParams_DownCast(t)

    __swig_destroy__ = _Extrema.delete_Extrema_HArray2OfPOnSurfParams

# Register Extrema_HArray2OfPOnSurfParams in _Extrema:
_Extrema.Extrema_HArray2OfPOnSurfParams_swigregister(Extrema_HArray2OfPOnSurfParams)





