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

"""
gp module, see official documentation at
https://dev.opencascade.org/doc/occt-7.9.0/refman/html/package_gp.html
"""

from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if getattr(globals().get("__spec__"), "parent", None) or __package__ or "." in __name__:
    from . import _gp
else:
    import _gp

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 == "this":
            set(self, name, value)
        elif name == "thisown":
            self.this.own(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__ = _gp.delete_SwigPyIterator

    def value(self):
        return _gp.SwigPyIterator_value(self)

    def incr(self, n=1):
        return _gp.SwigPyIterator_incr(self, n)

    def decr(self, n=1):
        return _gp.SwigPyIterator_decr(self, n)

    def distance(self, x):
        return _gp.SwigPyIterator_distance(self, x)

    def equal(self, x):
        return _gp.SwigPyIterator_equal(self, x)

    def copy(self):
        return _gp.SwigPyIterator_copy(self)

    def next(self):
        return _gp.SwigPyIterator_next(self)

    def __next__(self):
        return _gp.SwigPyIterator___next__(self)

    def previous(self):
        return _gp.SwigPyIterator_previous(self)

    def advance(self, n):
        return _gp.SwigPyIterator_advance(self, n)

    def __eq__(self, x):
        return _gp.SwigPyIterator___eq__(self, x)

    def __ne__(self, x):
        return _gp.SwigPyIterator___ne__(self, x)

    def __iadd__(self, n):
        return _gp.SwigPyIterator___iadd__(self, n)

    def __isub__(self, n):
        return _gp.SwigPyIterator___isub__(self, n)

    def __add__(self, n):
        return _gp.SwigPyIterator___add__(self, n)

    def __sub__(self, *args):
        return _gp.SwigPyIterator___sub__(self, *args)
    def __iter__(self):
        return self

# Register SwigPyIterator in _gp:
_gp.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, method_name, class_name):
    return _gp.process_exception(error, method_name, class_name)

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

class ios_base(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")
    __repr__ = _swig_repr
    erase_event = _gp.ios_base_erase_event
    imbue_event = _gp.ios_base_imbue_event
    copyfmt_event = _gp.ios_base_copyfmt_event

    def register_callback(self, __fn, __index):
        return _gp.ios_base_register_callback(self, __fn, __index)

    def flags(self, *args):
        return _gp.ios_base_flags(self, *args)

    def setf(self, *args):
        return _gp.ios_base_setf(self, *args)

    def unsetf(self, __mask):
        return _gp.ios_base_unsetf(self, __mask)

    def precision(self, *args):
        return _gp.ios_base_precision(self, *args)

    def width(self, *args):
        return _gp.ios_base_width(self, *args)

    @staticmethod
    def sync_with_stdio(__sync=True):
        return _gp.ios_base_sync_with_stdio(__sync)

    def imbue(self, __loc):
        return _gp.ios_base_imbue(self, __loc)

    def getloc(self):
        return _gp.ios_base_getloc(self)

    @staticmethod
    def xalloc():
        return _gp.ios_base_xalloc()

    def iword(self, __ix):
        return _gp.ios_base_iword(self, __ix)

    def pword(self, __ix):
        return _gp.ios_base_pword(self, __ix)
    __swig_destroy__ = _gp.delete_ios_base

# Register ios_base in _gp:
_gp.ios_base_swigregister(ios_base)
cvar = _gp.cvar
ios_base.boolalpha = _gp.cvar.ios_base_boolalpha
ios_base.dec = _gp.cvar.ios_base_dec
ios_base.fixed = _gp.cvar.ios_base_fixed
ios_base.hex = _gp.cvar.ios_base_hex
ios_base.internal = _gp.cvar.ios_base_internal
ios_base.left = _gp.cvar.ios_base_left
ios_base.oct = _gp.cvar.ios_base_oct
ios_base.right = _gp.cvar.ios_base_right
ios_base.scientific = _gp.cvar.ios_base_scientific
ios_base.showbase = _gp.cvar.ios_base_showbase
ios_base.showpoint = _gp.cvar.ios_base_showpoint
ios_base.showpos = _gp.cvar.ios_base_showpos
ios_base.skipws = _gp.cvar.ios_base_skipws
ios_base.unitbuf = _gp.cvar.ios_base_unitbuf
ios_base.uppercase = _gp.cvar.ios_base_uppercase
ios_base.adjustfield = _gp.cvar.ios_base_adjustfield
ios_base.basefield = _gp.cvar.ios_base_basefield
ios_base.floatfield = _gp.cvar.ios_base_floatfield
ios_base.badbit = _gp.cvar.ios_base_badbit
ios_base.eofbit = _gp.cvar.ios_base_eofbit
ios_base.failbit = _gp.cvar.ios_base_failbit
ios_base.goodbit = _gp.cvar.ios_base_goodbit
ios_base.app = _gp.cvar.ios_base_app
ios_base.ate = _gp.cvar.ios_base_ate
ios_base.binary = _gp.cvar.ios_base_binary
ios_base.ios_base_in = _gp.cvar.ios_base_ios_base_in
ios_base.out = _gp.cvar.ios_base_out
ios_base.trunc = _gp.cvar.ios_base_trunc
ios_base.beg = _gp.cvar.ios_base_beg
ios_base.cur = _gp.cvar.ios_base_cur
ios_base.end = _gp.cvar.ios_base_end

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

    def rdstate(self):
        return _gp.ios_rdstate(self)

    def clear(self, *args):
        return _gp.ios_clear(self, *args)

    def setstate(self, __state):
        return _gp.ios_setstate(self, __state)

    def good(self):
        return _gp.ios_good(self)

    def eof(self):
        return _gp.ios_eof(self)

    def fail(self):
        return _gp.ios_fail(self)

    def bad(self):
        return _gp.ios_bad(self)

    def exceptions(self, *args):
        return _gp.ios_exceptions(self, *args)

    def __init__(self, __sb):
        _gp.ios_swiginit(self, _gp.new_ios(__sb))
    __swig_destroy__ = _gp.delete_ios

    def tie(self, *args):
        return _gp.ios_tie(self, *args)

    def rdbuf(self, *args):
        return _gp.ios_rdbuf(self, *args)

    def copyfmt(self, __rhs):
        return _gp.ios_copyfmt(self, __rhs)

    def fill(self, *args):
        return _gp.ios_fill(self, *args)

    def imbue(self, __loc):
        return _gp.ios_imbue(self, __loc)

    def narrow(self, __c, __dfault):
        return _gp.ios_narrow(self, __c, __dfault)

    def widen(self, __c):
        return _gp.ios_widen(self, __c)

# Register ios in _gp:
_gp.ios_swigregister(ios)
class ostream(ios):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, __sb):
        _gp.ostream_swiginit(self, _gp.new_ostream(__sb))
    __swig_destroy__ = _gp.delete_ostream

    def __lshift__(self, *args):
        return _gp.ostream___lshift__(self, *args)

    def put(self, __c):
        return _gp.ostream_put(self, __c)

    def write(self, __s, __n):
        return _gp.ostream_write(self, __s, __n)

    def flush(self):
        return _gp.ostream_flush(self)

    def tellp(self):
        return _gp.ostream_tellp(self)

    def seekp(self, *args):
        return _gp.ostream_seekp(self, *args)

# Register ostream in _gp:
_gp.ostream_swigregister(ostream)
class istream(ios):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, __sb):
        _gp.istream_swiginit(self, _gp.new_istream(__sb))
    __swig_destroy__ = _gp.delete_istream

    def __rshift__(self, *args):
        return _gp.istream___rshift__(self, *args)

    def gcount(self):
        return _gp.istream_gcount(self)

    def get(self, *args):
        return _gp.istream_get(self, *args)

    def getline(self, *args):
        return _gp.istream_getline(self, *args)

    def ignore(self, *args):
        return _gp.istream_ignore(self, *args)

    def peek(self):
        return _gp.istream_peek(self)

    def read(self, __s, __n):
        return _gp.istream_read(self, __s, __n)

    def readsome(self, __s, __n):
        return _gp.istream_readsome(self, __s, __n)

    def putback(self, __c):
        return _gp.istream_putback(self, __c)

    def unget(self):
        return _gp.istream_unget(self)

    def sync(self):
        return _gp.istream_sync(self)

    def tellg(self):
        return _gp.istream_tellg(self)

    def seekg(self, *args):
        return _gp.istream_seekg(self, *args)

# Register istream in _gp:
_gp.istream_swigregister(istream)
class iostream(istream, ostream):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, __sb):
        _gp.iostream_swiginit(self, _gp.new_iostream(__sb))
    __swig_destroy__ = _gp.delete_iostream

# Register iostream in _gp:
_gp.iostream_swigregister(iostream)
cin = cvar.cin
cout = cvar.cout
cerr = cvar.cerr
clog = cvar.clog

endl_cb_ptr = _gp.endl_cb_ptr
endl = _gp.endl
ends_cb_ptr = _gp.ends_cb_ptr
ends = _gp.ends
flush_cb_ptr = _gp.flush_cb_ptr
flush = _gp.flush
import OCC.Core.Standard
import OCC.Core.NCollection
import OCC.Core.TColStd
import OCC.Core.TCollection

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

gp_EulerAngles = _gp.gp_EulerAngles
gp_YawPitchRoll = _gp.gp_YawPitchRoll
gp_Extrinsic_XYZ = _gp.gp_Extrinsic_XYZ
gp_Extrinsic_XZY = _gp.gp_Extrinsic_XZY
gp_Extrinsic_YZX = _gp.gp_Extrinsic_YZX
gp_Extrinsic_YXZ = _gp.gp_Extrinsic_YXZ
gp_Extrinsic_ZXY = _gp.gp_Extrinsic_ZXY
gp_Extrinsic_ZYX = _gp.gp_Extrinsic_ZYX
gp_Intrinsic_XYZ = _gp.gp_Intrinsic_XYZ
gp_Intrinsic_XZY = _gp.gp_Intrinsic_XZY
gp_Intrinsic_YZX = _gp.gp_Intrinsic_YZX
gp_Intrinsic_YXZ = _gp.gp_Intrinsic_YXZ
gp_Intrinsic_ZXY = _gp.gp_Intrinsic_ZXY
gp_Intrinsic_ZYX = _gp.gp_Intrinsic_ZYX
gp_Extrinsic_XYX = _gp.gp_Extrinsic_XYX
gp_Extrinsic_XZX = _gp.gp_Extrinsic_XZX
gp_Extrinsic_YZY = _gp.gp_Extrinsic_YZY
gp_Extrinsic_YXY = _gp.gp_Extrinsic_YXY
gp_Extrinsic_ZYZ = _gp.gp_Extrinsic_ZYZ
gp_Extrinsic_ZXZ = _gp.gp_Extrinsic_ZXZ
gp_Intrinsic_XYX = _gp.gp_Intrinsic_XYX
gp_Intrinsic_XZX = _gp.gp_Intrinsic_XZX
gp_Intrinsic_YZY = _gp.gp_Intrinsic_YZY
gp_Intrinsic_YXY = _gp.gp_Intrinsic_YXY
gp_Intrinsic_ZXZ = _gp.gp_Intrinsic_ZXZ
gp_Intrinsic_ZYZ = _gp.gp_Intrinsic_ZYZ
gp_Identity = _gp.gp_Identity
gp_Rotation = _gp.gp_Rotation
gp_Translation = _gp.gp_Translation
gp_PntMirror = _gp.gp_PntMirror
gp_Ax1Mirror = _gp.gp_Ax1Mirror
gp_Ax2Mirror = _gp.gp_Ax2Mirror
gp_Scale = _gp.gp_Scale
gp_CompoundTrsf = _gp.gp_CompoundTrsf
gp_Other = _gp.gp_Other


class gp_EulerSequence(IntEnum):
	gp_EulerAngles = 0
	gp_YawPitchRoll = 1
	gp_Extrinsic_XYZ = 2
	gp_Extrinsic_XZY = 3
	gp_Extrinsic_YZX = 4
	gp_Extrinsic_YXZ = 5
	gp_Extrinsic_ZXY = 6
	gp_Extrinsic_ZYX = 7
	gp_Intrinsic_XYZ = 8
	gp_Intrinsic_XZY = 9
	gp_Intrinsic_YZX = 10
	gp_Intrinsic_YXZ = 11
	gp_Intrinsic_ZXY = 12
	gp_Intrinsic_ZYX = 13
	gp_Extrinsic_XYX = 14
	gp_Extrinsic_XZX = 15
	gp_Extrinsic_YZY = 16
	gp_Extrinsic_YXY = 17
	gp_Extrinsic_ZYZ = 18
	gp_Extrinsic_ZXZ = 19
	gp_Intrinsic_XYX = 20
	gp_Intrinsic_XZX = 21
	gp_Intrinsic_YZY = 22
	gp_Intrinsic_YXY = 23
	gp_Intrinsic_ZXZ = 24
	gp_Intrinsic_ZYZ = 25
gp_EulerAngles = gp_EulerSequence.gp_EulerAngles
gp_YawPitchRoll = gp_EulerSequence.gp_YawPitchRoll
gp_Extrinsic_XYZ = gp_EulerSequence.gp_Extrinsic_XYZ
gp_Extrinsic_XZY = gp_EulerSequence.gp_Extrinsic_XZY
gp_Extrinsic_YZX = gp_EulerSequence.gp_Extrinsic_YZX
gp_Extrinsic_YXZ = gp_EulerSequence.gp_Extrinsic_YXZ
gp_Extrinsic_ZXY = gp_EulerSequence.gp_Extrinsic_ZXY
gp_Extrinsic_ZYX = gp_EulerSequence.gp_Extrinsic_ZYX
gp_Intrinsic_XYZ = gp_EulerSequence.gp_Intrinsic_XYZ
gp_Intrinsic_XZY = gp_EulerSequence.gp_Intrinsic_XZY
gp_Intrinsic_YZX = gp_EulerSequence.gp_Intrinsic_YZX
gp_Intrinsic_YXZ = gp_EulerSequence.gp_Intrinsic_YXZ
gp_Intrinsic_ZXY = gp_EulerSequence.gp_Intrinsic_ZXY
gp_Intrinsic_ZYX = gp_EulerSequence.gp_Intrinsic_ZYX
gp_Extrinsic_XYX = gp_EulerSequence.gp_Extrinsic_XYX
gp_Extrinsic_XZX = gp_EulerSequence.gp_Extrinsic_XZX
gp_Extrinsic_YZY = gp_EulerSequence.gp_Extrinsic_YZY
gp_Extrinsic_YXY = gp_EulerSequence.gp_Extrinsic_YXY
gp_Extrinsic_ZYZ = gp_EulerSequence.gp_Extrinsic_ZYZ
gp_Extrinsic_ZXZ = gp_EulerSequence.gp_Extrinsic_ZXZ
gp_Intrinsic_XYX = gp_EulerSequence.gp_Intrinsic_XYX
gp_Intrinsic_XZX = gp_EulerSequence.gp_Intrinsic_XZX
gp_Intrinsic_YZY = gp_EulerSequence.gp_Intrinsic_YZY
gp_Intrinsic_YXY = gp_EulerSequence.gp_Intrinsic_YXY
gp_Intrinsic_ZXZ = gp_EulerSequence.gp_Intrinsic_ZXZ
gp_Intrinsic_ZYZ = gp_EulerSequence.gp_Intrinsic_ZYZ

class gp_TrsfForm(IntEnum):
	gp_Identity = 0
	gp_Rotation = 1
	gp_Translation = 2
	gp_PntMirror = 3
	gp_Ax1Mirror = 4
	gp_Ax2Mirror = 5
	gp_Scale = 6
	gp_CompoundTrsf = 7
	gp_Other = 8
gp_Identity = gp_TrsfForm.gp_Identity
gp_Rotation = gp_TrsfForm.gp_Rotation
gp_Translation = gp_TrsfForm.gp_Translation
gp_PntMirror = gp_TrsfForm.gp_PntMirror
gp_Ax1Mirror = gp_TrsfForm.gp_Ax1Mirror
gp_Ax2Mirror = gp_TrsfForm.gp_Ax2Mirror
gp_Scale = gp_TrsfForm.gp_Scale
gp_CompoundTrsf = gp_TrsfForm.gp_CompoundTrsf
gp_Other = gp_TrsfForm.gp_Other

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

    @staticmethod
    def Length():
        return _gp.gp_Vec2f_Length()

    def __init__(self, *args):
        _gp.gp_Vec2f_swiginit(self, _gp.new_gp_Vec2f(*args))

    def SetValues(self, theX, theY):
        return _gp.gp_Vec2f_SetValues(self, theX, theY)

    def xy(self):
        return _gp.gp_Vec2f_xy(self)

    def yx(self):
        return _gp.gp_Vec2f_yx(self)

    def x(self, *args):
        return _gp.gp_Vec2f_x(self, *args)

    def y(self, *args):
        return _gp.gp_Vec2f_y(self, *args)

    def IsEqual(self, theOther):
        return _gp.gp_Vec2f_IsEqual(self, theOther)

    def __eq__(self, theOther):
        return _gp.gp_Vec2f___eq__(self, theOther)

    def __ne__(self, theOther):
        return _gp.gp_Vec2f___ne__(self, theOther)

    def GetData(self):
        return _gp.gp_Vec2f_GetData(self)

    def ChangeData(self):
        return _gp.gp_Vec2f_ChangeData(self)

    def __iadd__(self, theAdd):
        return _gp.gp_Vec2f___iadd__(self, theAdd)

    def __isub__(self, theDec):
        return _gp.gp_Vec2f___isub__(self, theDec)

    def __neg__(self):
        return _gp.gp_Vec2f___neg__(self)

    def Multiply(self, theFactor):
        return _gp.gp_Vec2f_Multiply(self, theFactor)

    def Multiplied(self, theFactor):
        return _gp.gp_Vec2f_Multiplied(self, theFactor)

    def cwiseMin(self, theVec):
        return _gp.gp_Vec2f_cwiseMin(self, theVec)

    def cwiseMax(self, theVec):
        return _gp.gp_Vec2f_cwiseMax(self, theVec)

    def cwiseAbs(self):
        return _gp.gp_Vec2f_cwiseAbs(self)

    def maxComp(self):
        return _gp.gp_Vec2f_maxComp(self)

    def minComp(self):
        return _gp.gp_Vec2f_minComp(self)

    def __imul__(self, *args):
        return _gp.gp_Vec2f___imul__(self, *args)

    def __itruediv__(self, *args):
        return _gp.gp_Vec2f___itruediv__(self, *args)
    __idiv__ = __itruediv__



    def __mul__(self, theFactor):
        return _gp.gp_Vec2f___mul__(self, theFactor)

    def __truediv__(self, *args):
        return _gp.gp_Vec2f___truediv__(self, *args)
    __div__ = __truediv__



    def Dot(self, theOther):
        return _gp.gp_Vec2f_Dot(self, theOther)

    def Modulus(self):
        return _gp.gp_Vec2f_Modulus(self)

    def SquareModulus(self):
        return _gp.gp_Vec2f_SquareModulus(self)

    @staticmethod
    def DX():
        return _gp.gp_Vec2f_DX()

    @staticmethod
    def DY():
        return _gp.gp_Vec2f_DY()

    def DumpJson(self, theOStream, theDepth=-1):
        return _gp.gp_Vec2f_DumpJson(self, theOStream, theDepth)
    __swig_destroy__ = _gp.delete_gp_Vec2f

# Register gp_Vec2f in _gp:
_gp.gp_Vec2f_swigregister(gp_Vec2f)
class gp_Vec3f(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    @staticmethod
    def Length():
        return _gp.gp_Vec3f_Length()

    def __init__(self, *args):
        _gp.gp_Vec3f_swiginit(self, _gp.new_gp_Vec3f(*args))

    def SetValues(self, *args):
        return _gp.gp_Vec3f_SetValues(self, *args)

    def xy(self):
        return _gp.gp_Vec3f_xy(self)

    def yx(self):
        return _gp.gp_Vec3f_yx(self)

    def xz(self):
        return _gp.gp_Vec3f_xz(self)

    def zx(self):
        return _gp.gp_Vec3f_zx(self)

    def yz(self):
        return _gp.gp_Vec3f_yz(self)

    def zy(self):
        return _gp.gp_Vec3f_zy(self)

    def xyz(self):
        return _gp.gp_Vec3f_xyz(self)

    def xzy(self):
        return _gp.gp_Vec3f_xzy(self)

    def yxz(self):
        return _gp.gp_Vec3f_yxz(self)

    def yzx(self):
        return _gp.gp_Vec3f_yzx(self)

    def zyx(self):
        return _gp.gp_Vec3f_zyx(self)

    def zxy(self):
        return _gp.gp_Vec3f_zxy(self)

    def x(self, *args):
        return _gp.gp_Vec3f_x(self, *args)

    def r(self, *args):
        return _gp.gp_Vec3f_r(self, *args)

    def y(self, *args):
        return _gp.gp_Vec3f_y(self, *args)

    def g(self, *args):
        return _gp.gp_Vec3f_g(self, *args)

    def z(self, *args):
        return _gp.gp_Vec3f_z(self, *args)

    def b(self, *args):
        return _gp.gp_Vec3f_b(self, *args)

    def IsEqual(self, theOther):
        return _gp.gp_Vec3f_IsEqual(self, theOther)

    def __eq__(self, theOther):
        return _gp.gp_Vec3f___eq__(self, theOther)

    def __ne__(self, theOther):
        return _gp.gp_Vec3f___ne__(self, theOther)

    def GetData(self):
        return _gp.gp_Vec3f_GetData(self)

    def ChangeData(self):
        return _gp.gp_Vec3f_ChangeData(self)

    def __iadd__(self, theAdd):
        return _gp.gp_Vec3f___iadd__(self, theAdd)

    def __neg__(self):
        return _gp.gp_Vec3f___neg__(self)

    def __isub__(self, theDec):
        return _gp.gp_Vec3f___isub__(self, theDec)

    def Multiply(self, theFactor):
        return _gp.gp_Vec3f_Multiply(self, theFactor)

    def __imul__(self, *args):
        return _gp.gp_Vec3f___imul__(self, *args)

    def __mul__(self, theFactor):
        return _gp.gp_Vec3f___mul__(self, theFactor)

    def Multiplied(self, theFactor):
        return _gp.gp_Vec3f_Multiplied(self, theFactor)

    def cwiseMin(self, theVec):
        return _gp.gp_Vec3f_cwiseMin(self, theVec)

    def cwiseMax(self, theVec):
        return _gp.gp_Vec3f_cwiseMax(self, theVec)

    def cwiseAbs(self):
        return _gp.gp_Vec3f_cwiseAbs(self)

    def maxComp(self):
        return _gp.gp_Vec3f_maxComp(self)

    def minComp(self):
        return _gp.gp_Vec3f_minComp(self)

    def __itruediv__(self, *args):
        return _gp.gp_Vec3f___itruediv__(self, *args)
    __idiv__ = __itruediv__



    def __truediv__(self, *args):
        return _gp.gp_Vec3f___truediv__(self, *args)
    __div__ = __truediv__



    def Dot(self, theOther):
        return _gp.gp_Vec3f_Dot(self, theOther)

    def Modulus(self):
        return _gp.gp_Vec3f_Modulus(self)

    def SquareModulus(self):
        return _gp.gp_Vec3f_SquareModulus(self)

    def Normalize(self):
        return _gp.gp_Vec3f_Normalize(self)

    def Normalized(self):
        return _gp.gp_Vec3f_Normalized(self)

    @staticmethod
    def Cross(theVec1, theVec2):
        return _gp.gp_Vec3f_Cross(theVec1, theVec2)

    @staticmethod
    def GetLERP(theFrom, theTo, theT):
        return _gp.gp_Vec3f_GetLERP(theFrom, theTo, theT)

    @staticmethod
    def DX():
        return _gp.gp_Vec3f_DX()

    @staticmethod
    def DY():
        return _gp.gp_Vec3f_DY()

    @staticmethod
    def DZ():
        return _gp.gp_Vec3f_DZ()

    def DumpJson(self, theOStream, theDepth=-1):
        return _gp.gp_Vec3f_DumpJson(self, theOStream, theDepth)
    __swig_destroy__ = _gp.delete_gp_Vec3f

# Register gp_Vec3f in _gp:
_gp.gp_Vec3f_swigregister(gp_Vec3f)
class gp(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    @staticmethod
    def DX(*args):
        r"""
        Return
        -------
        gp_Dir

        Description
        -----------
        Returns a unit vector with the combination (1,0,0).

        """
        return _gp.gp_DX(*args)

    @staticmethod
    def DX2d(*args):
        r"""
        Return
        -------
        gp_Dir2d

        Description
        -----------
        Returns a unit vector with the combinations (1,0).

        """
        return _gp.gp_DX2d(*args)

    @staticmethod
    def DY(*args):
        r"""
        Return
        -------
        gp_Dir

        Description
        -----------
        Returns a unit vector with the combination (0,1,0).

        """
        return _gp.gp_DY(*args)

    @staticmethod
    def DY2d(*args):
        r"""
        Return
        -------
        gp_Dir2d

        Description
        -----------
        Returns a unit vector with the combinations (0,1).

        """
        return _gp.gp_DY2d(*args)

    @staticmethod
    def DZ(*args):
        r"""
        Return
        -------
        gp_Dir

        Description
        -----------
        Returns a unit vector with the combination (0,0,1).

        """
        return _gp.gp_DZ(*args)

    @staticmethod
    def OX(*args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Identifies an axis where its origin is Origin and its unit vector coordinates X = 1.0, Y = Z = 0.0.

        """
        return _gp.gp_OX(*args)

    @staticmethod
    def OX2d(*args):
        r"""
        Return
        -------
        gp_Ax2d

        Description
        -----------
        Identifies an axis where its origin is Origin2d and its unit vector coordinates are: X = 1.0, Y = 0.0.

        """
        return _gp.gp_OX2d(*args)

    @staticmethod
    def OY(*args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Identifies an axis where its origin is Origin and its unit vector coordinates Y = 1.0, X = Z = 0.0.

        """
        return _gp.gp_OY(*args)

    @staticmethod
    def OY2d(*args):
        r"""
        Return
        -------
        gp_Ax2d

        Description
        -----------
        Identifies an axis where its origin is Origin2d and its unit vector coordinates are Y = 1.0, X = 0.0.

        """
        return _gp.gp_OY2d(*args)

    @staticmethod
    def OZ(*args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Identifies an axis where its origin is Origin and its unit vector coordinates Z = 1.0, Y = X = 0.0.

        """
        return _gp.gp_OZ(*args)

    @staticmethod
    def Origin(*args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Identifies a Cartesian point with coordinates X = Y = Z = 0.0.0.

        """
        return _gp.gp_Origin(*args)

    @staticmethod
    def Origin2d(*args):
        r"""
        Return
        -------
        gp_Pnt2d

        Description
        -----------
        Identifies a Cartesian point with coordinates X = Y = 0.0.

        """
        return _gp.gp_Origin2d(*args)

    @staticmethod
    def Resolution(*args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Method of package gp //! In geometric computations, defines the tolerance criterion used to determine when two numbers can be considered equal. Many class functions use this tolerance criterion, for example, to avoid division by zero in geometric computations. In the documentation, tolerance criterion is always referred to as gp::Resolution().

        """
        return _gp.gp_Resolution(*args)

    @staticmethod
    def XOY(*args):
        r"""
        Return
        -------
        gp_Ax2

        Description
        -----------
        Identifies a coordinate system where its origin is Origin, and its 'main Direction' and 'X Direction' coordinates Z = 1.0, X = Y =0.0 and X direction coordinates X = 1.0, Y = Z = 0.0.

        """
        return _gp.gp_XOY(*args)

    @staticmethod
    def YOZ(*args):
        r"""
        Return
        -------
        gp_Ax2

        Description
        -----------
        Identifies a coordinate system where its origin is Origin, and its 'main Direction' and 'X Direction' coordinates X = 1.0, Z = Y =0.0 and X direction coordinates Y = 1.0, X = Z = 0.0 In 2D space.

        """
        return _gp.gp_YOZ(*args)

    @staticmethod
    def ZOX(*args):
        r"""
        Return
        -------
        gp_Ax2

        Description
        -----------
        Identifies a coordinate system where its origin is Origin, and its 'main Direction' and 'X Direction' coordinates Y = 1.0, X = Z =0.0 and X direction coordinates Z = 1.0, X = Y = 0.0.

        """
        return _gp.gp_ZOX(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _gp.gp_swiginit(self, _gp.new_gp())
    __swig_destroy__ = _gp.delete_gp

# Register gp in _gp:
_gp.gp_swigregister(gp)
class gp_Ax1(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"""
        Return
        -------
        None

        Description
        -----------
        Creates an axis object representing Z axis of the reference coordinate system.

        Parameters
        ----------
        theP: gp_Pnt
        theV: gp_Dir

        Return
        -------
        None

        Description
        -----------
        P is the location point and V is the direction of <self>.

        """
        _gp.gp_Ax1_swiginit(self, _gp.new_gp_Ax1(*args))

    def Angle(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Ax1

        Return
        -------
        float

        Description
        -----------
        Computes the angular value, in radians, between this.Direction() and theOther.Direction(). Returns the angle between 0 and 2*PI radians.

        """
        return _gp.gp_Ax1_Angle(self, *args)

    def Direction(self, *args):
        r"""
        Return
        -------
        gp_Dir

        Description
        -----------
        Returns the direction of <self>.

        """
        return _gp.gp_Ax1_Direction(self, *args)

    def DumpJson(self, depth=-1):
        r"""

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        """
        return _gp.gp_Ax1_DumpJson(self, depth)

    def InitFromJson(self, json_string):
        r"""

        Parameters
        ----------
        json_string: the string

        Return
        -------
        bool

        Description
        -----------
        Init the object from a JSON string.

        """
        return _gp.gp_Ax1_InitFromJson(self, json_string)

    def IsCoaxial(self, *args):
        r"""

        Parameters
        ----------
        Other: gp_Ax1
        AngularTolerance: float
        LinearTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if: . the angle between <self> and <Other> is lower or equal to <AngularTolerance> and . the distance between <self>.Location() and <Other> is lower or equal to <LinearTolerance> and . the distance between <Other>.Location() and <self> is lower or equal to LinearTolerance.

        """
        return _gp.gp_Ax1_IsCoaxial(self, *args)

    def IsNormal(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Ax1
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if the direction of this and another axis are normal to each other. That is, if the angle between the two axes is equal to Pi/2. Note: the tolerance criterion is given by theAngularTolerance.

        """
        return _gp.gp_Ax1_IsNormal(self, *args)

    def IsOpposite(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Ax1
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if the direction of this and another axis are parallel with opposite orientation. That is, if the angle between the two axes is equal to Pi. Note: the tolerance criterion is given by theAngularTolerance.

        """
        return _gp.gp_Ax1_IsOpposite(self, *args)

    def IsParallel(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Ax1
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if the direction of this and another axis are parallel with same orientation or opposite orientation. That is, if the angle between the two axes is equal to 0 or Pi. Note: the tolerance criterion is given by theAngularTolerance.

        """
        return _gp.gp_Ax1_IsParallel(self, *args)

    def Location(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the location point of <self>.

        """
        return _gp.gp_Ax1_Location(self, *args)

    def Mirror(self, *args):
        r"""

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

        Return
        -------
        None

        Description
        -----------
        Performs the symmetrical transformation of an axis placement with respect to the point P which is the center of the symmetry and assigns the result to this axis.

        Parameters
        ----------
        A1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        Performs the symmetrical transformation of an axis placement with respect to an axis placement which is the axis of the symmetry and assigns the result to this axis.

        Parameters
        ----------
        A2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        Performs the symmetrical transformation of an axis placement with respect to a plane. The axis placement <A2> locates the plane of the symmetry: (Location, XDirection, YDirection) and assigns the result to this axis.

        """
        return _gp.gp_Ax1_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

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

        Return
        -------
        gp_Ax1

        Description
        -----------
        Performs the symmetrical transformation of an axis placement with respect to the point P which is the center of the symmetry and creates a new axis.

        Parameters
        ----------
        A1: gp_Ax1

        Return
        -------
        gp_Ax1

        Description
        -----------
        Performs the symmetrical transformation of an axis placement with respect to an axis placement which is the axis of the symmetry and creates a new axis.

        Parameters
        ----------
        A2: gp_Ax2

        Return
        -------
        gp_Ax1

        Description
        -----------
        Performs the symmetrical transformation of an axis placement with respect to a plane. The axis placement <A2> locates the plane of the symmetry: (Location, XDirection, YDirection) and creates a new axis.

        """
        return _gp.gp_Ax1_Mirrored(self, *args)

    def Reverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Reverses the unit vector of this axis and assigns the result to this axis.

        """
        return _gp.gp_Ax1_Reverse(self, *args)

    def Reversed(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Reverses the unit vector of this axis and creates a new one.

        """
        return _gp.gp_Ax1_Reversed(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAngRad: float

        Return
        -------
        None

        Description
        -----------
        Rotates this axis at an angle theAngRad (in radians) about the axis theA1 and assigns the result to this axis.

        """
        return _gp.gp_Ax1_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAngRad: float

        Return
        -------
        gp_Ax1

        Description
        -----------
        Rotates this axis at an angle theAngRad (in radians) about the axis theA1 and creates a new one.

        """
        return _gp.gp_Ax1_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        None

        Description
        -----------
        Applies a scaling transformation to this axis with: - scale factor theS, and - center theP and assigns the result to this axis.

        """
        return _gp.gp_Ax1_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        gp_Ax1

        Description
        -----------
        Applies a scaling transformation to this axis with: - scale factor theS, and - center theP and creates a new axis.

        """
        return _gp.gp_Ax1_Scaled(self, *args)

    def SetDirection(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Dir

        Return
        -------
        None

        Description
        -----------
        Assigns V as the 'Direction' of this axis.

        """
        return _gp.gp_Ax1_SetDirection(self, *args)

    def SetLocation(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        Assigns P as the origin of this axis.

        """
        return _gp.gp_Ax1_SetLocation(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        Applies the transformation theT to this axis and assigns the result to this axis.

        """
        return _gp.gp_Ax1_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        gp_Ax1

        Description
        -----------
        Applies the transformation theT to this axis and creates a new one. //! Translates an axis plaxement in the direction of the vector <V>. The magnitude of the translation is the vector's magnitude.

        """
        return _gp.gp_Ax1_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        None

        Description
        -----------
        Translates this axis by the vector theV, and assigns the result to this axis.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        Translates this axis by: the vector (theP1, theP2) defined from point theP1 to point theP2. and assigns the result to this axis.

        """
        return _gp.gp_Ax1_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        gp_Ax1

        Description
        -----------
        Translates this axis by the vector theV, and creates a new one.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        gp_Ax1

        Description
        -----------
        Translates this axis by: the vector (theP1, theP2) defined from point theP1 to point theP2. and creates a new one.

        """
        return _gp.gp_Ax1_Translated(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Ax1()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Ax1')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Ax1

# Register gp_Ax1 in _gp:
_gp.gp_Ax1_swigregister(gp_Ax1)
class gp_Ax2(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"""
        Return
        -------
        None

        Description
        -----------
        Creates an object corresponding to the reference coordinate system (OXYZ).

        Parameters
        ----------
        P: gp_Pnt
        N: gp_Dir
        Vx: gp_Dir

        Return
        -------
        None

        Description
        -----------
        Creates an axis placement with an origin P such that: - N is the Direction, and - the 'X Direction' is normal to N, in the plane defined by the vectors (N, Vx): 'X Direction' = (N ^ Vx) ^ N, Exception: raises ConstructionError if N and Vx are parallel (same or opposite orientation).

        Parameters
        ----------
        P: gp_Pnt
        V: gp_Dir

        Return
        -------
        None

        Description
        -----------
        Creates - a coordinate system with an origin P, where V gives the 'main Direction' (here, 'X Direction' and 'Y Direction' are defined automatically).

        """
        _gp.gp_Ax2_swiginit(self, _gp.new_gp_Ax2(*args))

    def Angle(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Ax2

        Return
        -------
        float

        Description
        -----------
        Computes the angular value, in radians, between the main direction of <self> and the main direction of <theOther>. Returns the angle between 0 and PI in radians.

        """
        return _gp.gp_Ax2_Angle(self, *args)

    def Axis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the main axis of <self>. It is the 'Location' point and the main 'Direction'.

        """
        return _gp.gp_Ax2_Axis(self, *args)

    def Direction(self, *args):
        r"""
        Return
        -------
        gp_Dir

        Description
        -----------
        Returns the main direction of <self>.

        """
        return _gp.gp_Ax2_Direction(self, *args)

    def DumpJson(self, depth=-1):
        r"""

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        """
        return _gp.gp_Ax2_DumpJson(self, depth)

    def InitFromJson(self, json_string):
        r"""

        Parameters
        ----------
        json_string: the string

        Return
        -------
        bool

        Description
        -----------
        Init the object from a JSON string.

        """
        return _gp.gp_Ax2_InitFromJson(self, json_string)

    def IsCoplanar(self, *args):
        r"""

        Parameters
        ----------
        Other: gp_Ax2
        LinearTolerance: float
        AngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        A1: gp_Ax1
        LinearTolerance: float
        AngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if . the distance between <self> and the 'Location' point of A1 is lower of equal to LinearTolerance and . the main direction of <self> and the direction of A1 are normal. Note: the tolerance criterion for angular equality is given by AngularTolerance.

        """
        return _gp.gp_Ax2_IsCoplanar(self, *args)

    def Location(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the 'Location' point (origin) of <self>.

        """
        return _gp.gp_Ax2_Location(self, *args)

    def Mirror(self, *args):
        r"""

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

        Return
        -------
        None

        Description
        -----------
        Performs a symmetrical transformation of this coordinate system with respect to: - the point P, and assigns the result to this coordinate system. Warning This transformation is always performed on the origin. In case of a reflection with respect to a point: - the main direction of the coordinate system is not changed, and - the 'X Direction' and the 'Y Direction' are simply reversed In case of a reflection with respect to an axis or a plane: - the transformation is applied to the 'X Direction' and the 'Y Direction', then - the 'main Direction' is recomputed as the cross product 'X Direction' ^ 'Y Direction'. This maintains the right-handed property of the coordinate system.

        Parameters
        ----------
        A1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        Performs a symmetrical transformation of this coordinate system with respect to: - the axis A1, and assigns the result to this coordinate systeme. Warning This transformation is always performed on the origin. In case of a reflection with respect to a point: - the main direction of the coordinate system is not changed, and - the 'X Direction' and the 'Y Direction' are simply reversed In case of a reflection with respect to an axis or a plane: - the transformation is applied to the 'X Direction' and the 'Y Direction', then - the 'main Direction' is recomputed as the cross product 'X Direction' ^ 'Y Direction'. This maintains the right-handed property of the coordinate system.

        Parameters
        ----------
        A2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        Performs a symmetrical transformation of this coordinate system with respect to: - the plane defined by the origin, 'X Direction' and 'Y Direction' of coordinate system A2 and assigns the result to this coordinate systeme. Warning This transformation is always performed on the origin. In case of a reflection with respect to a point: - the main direction of the coordinate system is not changed, and - the 'X Direction' and the 'Y Direction' are simply reversed In case of a reflection with respect to an axis or a plane: - the transformation is applied to the 'X Direction' and the 'Y Direction', then - the 'main Direction' is recomputed as the cross product 'X Direction' ^ 'Y Direction'. This maintains the right-handed property of the coordinate system.

        """
        return _gp.gp_Ax2_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

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

        Return
        -------
        gp_Ax2

        Description
        -----------
        Performs a symmetrical transformation of this coordinate system with respect to: - the point P, and creates a new one. Warning This transformation is always performed on the origin. In case of a reflection with respect to a point: - the main direction of the coordinate system is not changed, and - the 'X Direction' and the 'Y Direction' are simply reversed In case of a reflection with respect to an axis or a plane: - the transformation is applied to the 'X Direction' and the 'Y Direction', then - the 'main Direction' is recomputed as the cross product 'X Direction' ^ 'Y Direction'. This maintains the right-handed property of the coordinate system.

        Parameters
        ----------
        A1: gp_Ax1

        Return
        -------
        gp_Ax2

        Description
        -----------
        Performs a symmetrical transformation of this coordinate system with respect to: - the axis A1, and creates a new one. Warning This transformation is always performed on the origin. In case of a reflection with respect to a point: - the main direction of the coordinate system is not changed, and - the 'X Direction' and the 'Y Direction' are simply reversed In case of a reflection with respect to an axis or a plane: - the transformation is applied to the 'X Direction' and the 'Y Direction', then - the 'main Direction' is recomputed as the cross product 'X Direction' ^ 'Y Direction'. This maintains the right-handed property of the coordinate system.

        Parameters
        ----------
        A2: gp_Ax2

        Return
        -------
        gp_Ax2

        Description
        -----------
        Performs a symmetrical transformation of this coordinate system with respect to: - the plane defined by the origin, 'X Direction' and 'Y Direction' of coordinate system A2 and creates a new one. Warning This transformation is always performed on the origin. In case of a reflection with respect to a point: - the main direction of the coordinate system is not changed, and - the 'X Direction' and the 'Y Direction' are simply reversed In case of a reflection with respect to an axis or a plane: - the transformation is applied to the 'X Direction' and the 'Y Direction', then - the 'main Direction' is recomputed as the cross product 'X Direction' ^ 'Y Direction'. This maintains the right-handed property of the coordinate system.

        """
        return _gp.gp_Ax2_Mirrored(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Ax2_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        gp_Ax2

        Description
        -----------
        Rotates an axis placement. <theA1> is the axis of the rotation. theAng is the angular value of the rotation in radians.

        """
        return _gp.gp_Ax2_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Ax2_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        gp_Ax2

        Description
        -----------
        Applies a scaling transformation on the axis placement. The 'Location' point of the axisplacement is modified. Warnings: If the scale <S> is negative: . the main direction of the axis placement is not changed. . The 'XDirection' and the 'YDirection' are reversed. So the axis placement stay right handed.

        """
        return _gp.gp_Ax2_Scaled(self, *args)

    def SetAxis(self, *args):
        r"""

        Parameters
        ----------
        A1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        Assigns the origin and 'main Direction' of the axis A1 to this coordinate system, then recomputes its 'X Direction' and 'Y Direction'. Note: The new 'X Direction' is computed as follows: new 'X Direction' = V1 ^(previous 'X Direction' ^ V) where V is the 'Direction' of A1. Exceptions Standard_ConstructionError if A1 is parallel to the 'X Direction' of this coordinate system.

        """
        return _gp.gp_Ax2_SetAxis(self, *args)

    def SetDirection(self, *args):
        r"""

        Parameters
        ----------
        V: gp_Dir

        Return
        -------
        None

        Description
        -----------
        Changes the 'main Direction' of this coordinate system, then recomputes its 'X Direction' and 'Y Direction'. Note: the new 'X Direction' is computed as follows: new 'X Direction' = V ^ (previous 'X Direction' ^ V) Exceptions Standard_ConstructionError if V is parallel to the 'X Direction' of this coordinate system.

        """
        return _gp.gp_Ax2_SetDirection(self, *args)

    def SetLocation(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        Changes the 'Location' point (origin) of <self>.

        """
        return _gp.gp_Ax2_SetLocation(self, *args)

    def SetXDirection(self, *args):
        r"""

        Parameters
        ----------
        theVx: gp_Dir

        Return
        -------
        None

        Description
        -----------
        Changes the 'Xdirection' of <self>. The main direction 'Direction' is not modified, the 'Ydirection' is modified. If <Vx> is not normal to the main direction then <XDirection> is computed as follows XDirection = Direction ^ (Vx ^ Direction). Exceptions Standard_ConstructionError if Vx or Vy is parallel to the 'main Direction' of this coordinate system.

        """
        return _gp.gp_Ax2_SetXDirection(self, *args)

    def SetYDirection(self, *args):
        r"""

        Parameters
        ----------
        theVy: gp_Dir

        Return
        -------
        None

        Description
        -----------
        Changes the 'Ydirection' of <self>. The main direction is not modified but the 'Xdirection' is changed. If <Vy> is not normal to the main direction then 'YDirection' is computed as follows YDirection = Direction ^ (<Vy> ^ Direction). Exceptions Standard_ConstructionError if Vx or Vy is parallel to the 'main Direction' of this coordinate system.

        """
        return _gp.gp_Ax2_SetYDirection(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Ax2_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        gp_Ax2

        Description
        -----------
        Transforms an axis placement with a Trsf. The 'Location' point, the 'XDirection' and the 'YDirection' are transformed with theT. The resulting main 'Direction' of <self> is the cross product between the 'XDirection' and the 'YDirection' after transformation.

        """
        return _gp.gp_Ax2_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Ax2_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        gp_Ax2

        Description
        -----------
        Translates an axis plaxement in the direction of the vector <theV>. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        gp_Ax2

        Description
        -----------
        Translates an axis placement from the point <theP1> to the point <theP2>.

        """
        return _gp.gp_Ax2_Translated(self, *args)

    def XDirection(self, *args):
        r"""
        Return
        -------
        gp_Dir

        Description
        -----------
        Returns the 'XDirection' of <self>.

        """
        return _gp.gp_Ax2_XDirection(self, *args)

    def YDirection(self, *args):
        r"""
        Return
        -------
        gp_Dir

        Description
        -----------
        Returns the 'YDirection' of <self>.

        """
        return _gp.gp_Ax2_YDirection(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Ax2()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Ax2')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Ax2

# Register gp_Ax2 in _gp:
_gp.gp_Ax2_swigregister(gp_Ax2)
class gp_Ax22d(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"""
        Return
        -------
        None

        Description
        -----------
        Creates an object representing the reference coordinate system (OXY).

        Parameters
        ----------
        theP: gp_Pnt2d
        theVx: gp_Dir2d
        theVy: gp_Dir2d

        Return
        -------
        None

        Description
        -----------
        Creates a coordinate system with origin theP and where: - theVx is the 'X Direction', and - the 'Y Direction' is orthogonal to theVx and oriented so that the cross products theVx^'Y Direction' and theVx^theVy have the same sign. Raises ConstructionError if theVx and theVy are parallel (same or opposite orientation).

        Parameters
        ----------
        theP: gp_Pnt2d
        theV: gp_Dir2d
        theIsSense: bool (optional, default to Standard_True)

        Return
        -------
        None

        Description
        -----------
        Creates - a coordinate system with origin theP and 'X Direction' theV, which is: - right-handed if theIsSense is true (default value), or - left-handed if theIsSense is false.

        Parameters
        ----------
        theA: gp_Ax2d
        theIsSense: bool (optional, default to Standard_True)

        Return
        -------
        None

        Description
        -----------
        Creates - a coordinate system where its origin is the origin of theA and its 'X Direction' is the unit vector of theA, which is: - right-handed if theIsSense is true (default value), or - left-handed if theIsSense is false.

        """
        _gp.gp_Ax22d_swiginit(self, _gp.new_gp_Ax22d(*args))

    def DumpJson(self, depth=-1):
        r"""

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        """
        return _gp.gp_Ax22d_DumpJson(self, depth)

    def Location(self, *args):
        r"""
        Return
        -------
        gp_Pnt2d

        Description
        -----------
        Returns the 'Location' point (origin) of <self>.

        """
        return _gp.gp_Ax22d_Location(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Ax22d_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        gp_Ax22d

        Description
        -----------
        Performs the symmetrical transformation of an axis placement with respect to the point theP which is the center of the symmetry. Warnings: The main direction of the axis placement is not changed. The 'XDirection' and the 'YDirection' are reversed. So the axis placement stay right handed.

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        gp_Ax22d

        Description
        -----------
        Performs the symmetrical transformation of an axis placement with respect to an axis placement which is the axis of the symmetry. The transformation is performed on the 'Location' point, on the 'XDirection' and 'YDirection'. The resulting main 'Direction' is the cross product between the 'XDirection' and the 'YDirection' after transformation.

        """
        return _gp.gp_Ax22d_Mirrored(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Ax22d_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theAng: float

        Return
        -------
        gp_Ax22d

        Description
        -----------
        Rotates an axis placement. <theA1> is the axis of the rotation . theAng is the angular value of the rotation in radians.

        """
        return _gp.gp_Ax22d_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theS: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Ax22d_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theS: float

        Return
        -------
        gp_Ax22d

        Description
        -----------
        Applies a scaling transformation on the axis placement. The 'Location' point of the axisplacement is modified. Warnings: If the scale <theS> is negative: . the main direction of the axis placement is not changed. . The 'XDirection' and the 'YDirection' are reversed. So the axis placement stay right handed.

        """
        return _gp.gp_Ax22d_Scaled(self, *args)

    def SetAxis(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax22d

        Return
        -------
        None

        Description
        -----------
        Assigns the origin and the two unit vectors of the coordinate system theA1 to this coordinate system.

        """
        return _gp.gp_Ax22d_SetAxis(self, *args)

    def SetLocation(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        Changes the 'Location' point (origin) of <self>.

        """
        return _gp.gp_Ax22d_SetLocation(self, *args)

    def SetXAxis(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        Changes the XAxis and YAxis ('Location' point and 'Direction') of <self>. The 'YDirection' is recomputed in the same sense as before.

        """
        return _gp.gp_Ax22d_SetXAxis(self, *args)

    def SetXDirection(self, *args):
        r"""

        Parameters
        ----------
        theVx: gp_Dir2d

        Return
        -------
        None

        Description
        -----------
        Assigns theVx to the 'X Direction' of this coordinate system. The other unit vector of this coordinate system is recomputed, normal to theVx , without modifying the orientation (right-handed or left-handed) of this coordinate system.

        """
        return _gp.gp_Ax22d_SetXDirection(self, *args)

    def SetYAxis(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        Changes the XAxis and YAxis ('Location' point and 'Direction') of <self>. The 'XDirection' is recomputed in the same sense as before.

        """
        return _gp.gp_Ax22d_SetYAxis(self, *args)

    def SetYDirection(self, *args):
        r"""

        Parameters
        ----------
        theVy: gp_Dir2d

        Return
        -------
        None

        Description
        -----------
        Assignsr theVy to the 'Y Direction' of this coordinate system. The other unit vector of this coordinate system is recomputed, normal to theVy, without modifying the orientation (right-handed or left-handed) of this coordinate system.

        """
        return _gp.gp_Ax22d_SetYDirection(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Ax22d_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        gp_Ax22d

        Description
        -----------
        Transforms an axis placement with a Trsf. The 'Location' point, the 'XDirection' and the 'YDirection' are transformed with theT. The resulting main 'Direction' of <self> is the cross product between the 'XDirection' and the 'YDirection' after transformation.

        """
        return _gp.gp_Ax22d_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt2d
        theP2: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Ax22d_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        gp_Ax22d

        Description
        -----------
        Translates an axis plaxement in the direction of the vector <theV>. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt2d
        theP2: gp_Pnt2d

        Return
        -------
        gp_Ax22d

        Description
        -----------
        Translates an axis placement from the point <theP1> to the point <theP2>.

        """
        return _gp.gp_Ax22d_Translated(self, *args)

    def XAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax2d

        Description
        -----------
        Returns an axis, for which - the origin is that of this coordinate system, and - the unit vector is either the 'X Direction' of this coordinate system. Note: the result is the 'X Axis' of this coordinate system.

        """
        return _gp.gp_Ax22d_XAxis(self, *args)

    def XDirection(self, *args):
        r"""
        Return
        -------
        gp_Dir2d

        Description
        -----------
        Returns the 'XDirection' of <self>.

        """
        return _gp.gp_Ax22d_XDirection(self, *args)

    def YAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax2d

        Description
        -----------
        Returns an axis, for which - the origin is that of this coordinate system, and - the unit vector is either the 'Y Direction' of this coordinate system. Note: the result is the 'Y Axis' of this coordinate system.

        """
        return _gp.gp_Ax22d_YAxis(self, *args)

    def YDirection(self, *args):
        r"""
        Return
        -------
        gp_Dir2d

        Description
        -----------
        Returns the 'YDirection' of <self>.

        """
        return _gp.gp_Ax22d_YDirection(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Ax22d()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Ax22d')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Ax22d

# Register gp_Ax22d in _gp:
_gp.gp_Ax22d_swigregister(gp_Ax22d)
class gp_Ax2d(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"""
        Return
        -------
        None

        Description
        -----------
        Creates an axis object representing X axis of the reference co-ordinate system.

        Parameters
        ----------
        theP: gp_Pnt2d
        theV: gp_Dir2d

        Return
        -------
        None

        Description
        -----------
        Creates an Ax2d. <theP> is the 'Location' point of the axis placement and theV is the 'Direction' of the axis placement.

        """
        _gp.gp_Ax2d_swiginit(self, _gp.new_gp_Ax2d(*args))

    def Angle(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Ax2d

        Return
        -------
        float

        Description
        -----------
        Computes the angle, in radians, between this axis and the axis theOther. The value of the angle is between -Pi and Pi.

        """
        return _gp.gp_Ax2d_Angle(self, *args)

    def Direction(self, *args):
        r"""
        Return
        -------
        gp_Dir2d

        Description
        -----------
        Returns the direction of <self>.

        """
        return _gp.gp_Ax2d_Direction(self, *args)

    def DumpJson(self, depth=-1):
        r"""

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        """
        return _gp.gp_Ax2d_DumpJson(self, depth)

    def IsCoaxial(self, *args):
        r"""

        Parameters
        ----------
        Other: gp_Ax2d
        AngularTolerance: float
        LinearTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if: . the angle between <self> and <Other> is lower or equal to <AngularTolerance> and . the distance between <self>.Location() and <Other> is lower or equal to <LinearTolerance> and . the distance between <Other>.Location() and <self> is lower or equal to LinearTolerance.

        """
        return _gp.gp_Ax2d_IsCoaxial(self, *args)

    def IsNormal(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Ax2d
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns true if this axis and the axis theOther are normal to each other. That is, if the angle between the two axes is equal to Pi/2 or -Pi/2. Note: the tolerance criterion is given by theAngularTolerance.

        """
        return _gp.gp_Ax2d_IsNormal(self, *args)

    def IsOpposite(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Ax2d
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns true if this axis and the axis theOther are parallel, and have opposite orientations. That is, if the angle between the two axes is equal to Pi or -Pi. Note: the tolerance criterion is given by theAngularTolerance.

        """
        return _gp.gp_Ax2d_IsOpposite(self, *args)

    def IsParallel(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Ax2d
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns true if this axis and the axis theOther are parallel, and have either the same or opposite orientations. That is, if the angle between the two axes is equal to 0, Pi or -Pi. Note: the tolerance criterion is given by theAngularTolerance.

        """
        return _gp.gp_Ax2d_IsParallel(self, *args)

    def Location(self, *args):
        r"""
        Return
        -------
        gp_Pnt2d

        Description
        -----------
        Returns the origin of <self>.

        """
        return _gp.gp_Ax2d_Location(self, *args)

    def Mirror(self, *args):
        r"""

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

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        A: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Ax2d_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

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

        Return
        -------
        gp_Ax2d

        Description
        -----------
        Performs the symmetrical transformation of an axis placement with respect to the point P which is the center of the symmetry.

        Parameters
        ----------
        A: gp_Ax2d

        Return
        -------
        gp_Ax2d

        Description
        -----------
        Performs the symmetrical transformation of an axis placement with respect to an axis placement which is the axis of the symmetry.

        """
        return _gp.gp_Ax2d_Mirrored(self, *args)

    def Reverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Reverses the direction of <self> and assigns the result to this axis.

        """
        return _gp.gp_Ax2d_Reverse(self, *args)

    def Reversed(self, *args):
        r"""
        Return
        -------
        gp_Ax2d

        Description
        -----------
        Computes a new axis placement with a direction opposite to the direction of <self>.

        """
        return _gp.gp_Ax2d_Reversed(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Ax2d_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theAng: float

        Return
        -------
        gp_Ax2d

        Description
        -----------
        Rotates an axis placement. <theP> is the center of the rotation. theAng is the angular value of the rotation in radians.

        """
        return _gp.gp_Ax2d_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        P: gp_Pnt2d
        S: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Ax2d_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theS: float

        Return
        -------
        gp_Ax2d

        Description
        -----------
        Applies a scaling transformation on the axis placement. The 'Location' point of the axisplacement is modified. The 'Direction' is reversed if the scale is negative.

        """
        return _gp.gp_Ax2d_Scaled(self, *args)

    def SetDirection(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Dir2d

        Return
        -------
        None

        Description
        -----------
        Changes the direction of <self>.

        """
        return _gp.gp_Ax2d_SetDirection(self, *args)

    def SetLocation(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        Changes the 'Location' point (origin) of <self>.

        """
        return _gp.gp_Ax2d_SetLocation(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Ax2d_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        gp_Ax2d

        Description
        -----------
        Transforms an axis placement with a Trsf.

        """
        return _gp.gp_Ax2d_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt2d
        theP2: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Ax2d_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        gp_Ax2d

        Description
        -----------
        Translates an axis placement in the direction of the vector theV. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt2d
        theP2: gp_Pnt2d

        Return
        -------
        gp_Ax2d

        Description
        -----------
        Translates an axis placement from the point theP1 to the point theP2.

        """
        return _gp.gp_Ax2d_Translated(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Ax2d()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Ax2d')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Ax2d

# Register gp_Ax2d in _gp:
_gp.gp_Ax2d_swigregister(gp_Ax2d)
class gp_Ax3(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"""
        Return
        -------
        None

        Description
        -----------
        Creates an object corresponding to the reference coordinate system (OXYZ).

        Parameters
        ----------
        theA: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        Creates a coordinate system from a right-handed coordinate system.

        Parameters
        ----------
        theP: gp_Pnt
        theN: gp_Dir
        theVx: gp_Dir

        Return
        -------
        None

        Description
        -----------
        Creates a right handed axis placement with the 'Location' point theP and two directions, theN gives the 'Direction' and theVx gives the 'XDirection'. Raises ConstructionError if theN and theVx are parallel (same or opposite orientation).

        Parameters
        ----------
        theP: gp_Pnt
        theV: gp_Dir

        Return
        -------
        None

        Description
        -----------
        Creates an axis placement with the 'Location' point <theP> and the normal direction <theV>.

        """
        _gp.gp_Ax3_swiginit(self, _gp.new_gp_Ax3(*args))

    def Angle(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Ax3

        Return
        -------
        float

        Description
        -----------
        Computes the angular value between the main direction of <self> and the main direction of <theOther>. Returns the angle between 0 and PI in radians.

        """
        return _gp.gp_Ax3_Angle(self, *args)

    def Ax2(self, *args):
        r"""
        Return
        -------
        gp_Ax2

        Description
        -----------
        Computes a right-handed coordinate system with the same 'X Direction' and 'Y Direction' as those of this coordinate system, then recomputes the 'main Direction'. If this coordinate system is right-handed, the result returned is the same coordinate system. If this coordinate system is left-handed, the result is reversed.

        """
        return _gp.gp_Ax3_Ax2(self, *args)

    def Axis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the main axis of <self>. It is the 'Location' point and the main 'Direction'.

        """
        return _gp.gp_Ax3_Axis(self, *args)

    def Direct(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Returns True if the coordinate system is right-handed. i.e. XDirection().Crossed(YDirection()).Dot(Direction()) > 0.

        """
        return _gp.gp_Ax3_Direct(self, *args)

    def Direction(self, *args):
        r"""
        Return
        -------
        gp_Dir

        Description
        -----------
        Returns the main direction of <self>.

        """
        return _gp.gp_Ax3_Direction(self, *args)

    def DumpJson(self, depth=-1):
        r"""

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        """
        return _gp.gp_Ax3_DumpJson(self, depth)

    def InitFromJson(self, json_string):
        r"""

        Parameters
        ----------
        json_string: the string

        Return
        -------
        bool

        Description
        -----------
        Init the object from a JSON string.

        """
        return _gp.gp_Ax3_InitFromJson(self, json_string)

    def IsCoplanar(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Ax3
        theLinearTolerance: float
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if . the distance between the 'Location' point of <self> and <theOther> is lower or equal to theLinearTolerance and . the distance between the 'Location' point of <theOther> and <self> is lower or equal to theLinearTolerance and . the main direction of <self> and the main direction of <theOther> are parallel (same or opposite orientation).

        Parameters
        ----------
        theA1: gp_Ax1
        theLinearTolerance: float
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if . the distance between <self> and the 'Location' point of theA1 is lower of equal to theLinearTolerance and . the distance between theA1 and the 'Location' point of <self> is lower or equal to theLinearTolerance and . the main direction of <self> and the direction of theA1 are normal.

        """
        return _gp.gp_Ax3_IsCoplanar(self, *args)

    def Location(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the 'Location' point (origin) of <self>.

        """
        return _gp.gp_Ax3_Location(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Ax3_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        gp_Ax3

        Description
        -----------
        Performs the symmetrical transformation of an axis placement with respect to the point theP which is the center of the symmetry. Warnings: The main direction of the axis placement is not changed. The 'XDirection' and the 'YDirection' are reversed. So the axis placement stay right handed.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        gp_Ax3

        Description
        -----------
        Performs the symmetrical transformation of an axis placement with respect to an axis placement which is the axis of the symmetry. The transformation is performed on the 'Location' point, on the 'XDirection' and 'YDirection'. The resulting main 'Direction' is the cross product between the 'XDirection' and the 'YDirection' after transformation.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        gp_Ax3

        Description
        -----------
        Performs the symmetrical transformation of an axis placement with respect to a plane. The axis placement <theA2> locates the plane of the symmetry: (Location, XDirection, YDirection). The transformation is performed on the 'Location' point, on the 'XDirection' and 'YDirection'. The resulting main 'Direction' is the cross product between the 'XDirection' and the 'YDirection' after transformation.

        """
        return _gp.gp_Ax3_Mirrored(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Ax3_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        gp_Ax3

        Description
        -----------
        Rotates an axis placement. <theA1> is the axis of the rotation . theAng is the angular value of the rotation in radians.

        """
        return _gp.gp_Ax3_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Ax3_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        gp_Ax3

        Description
        -----------
        Applies a scaling transformation on the axis placement. The 'Location' point of the axisplacement is modified. Warnings: If the scale <theS> is negative: . the main direction of the axis placement is not changed. . The 'XDirection' and the 'YDirection' are reversed. So the axis placement stay right handed.

        """
        return _gp.gp_Ax3_Scaled(self, *args)

    def SetAxis(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        Assigns the origin and 'main Direction' of the axis theA1 to this coordinate system, then recomputes its 'X Direction' and 'Y Direction'. Note: - The new 'X Direction' is computed as follows: new 'X Direction' = V1 ^(previous 'X Direction' ^ V) where V is the 'Direction' of theA1. - The orientation of this coordinate system (right-handed or left-handed) is not modified. Raises ConstructionError if the 'Direction' of <theA1> and the 'XDirection' of <self> are parallel (same or opposite orientation) because it is impossible to calculate the new 'XDirection' and the new 'YDirection'.

        """
        return _gp.gp_Ax3_SetAxis(self, *args)

    def SetDirection(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Dir

        Return
        -------
        None

        Description
        -----------
        Changes the main direction of this coordinate system, then recomputes its 'X Direction' and 'Y Direction'. Note: - The new 'X Direction' is computed as follows: new 'X Direction' = theV ^ (previous 'X Direction' ^ theV). - The orientation of this coordinate system (left- or right-handed) is not modified. Raises ConstructionError if <theV> and the previous 'XDirection' are parallel because it is impossible to calculate the new 'XDirection' and the new 'YDirection'.

        """
        return _gp.gp_Ax3_SetDirection(self, *args)

    def SetLocation(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        Changes the 'Location' point (origin) of <self>.

        """
        return _gp.gp_Ax3_SetLocation(self, *args)

    def SetXDirection(self, *args):
        r"""

        Parameters
        ----------
        theVx: gp_Dir

        Return
        -------
        None

        Description
        -----------
        Changes the 'Xdirection' of <self>. The main direction 'Direction' is not modified, the 'Ydirection' is modified. If <theVx> is not normal to the main direction then <XDirection> is computed as follows XDirection = Direction ^ (theVx ^ Direction). Raises ConstructionError if <theVx> is parallel (same or opposite orientation) to the main direction of <self>.

        """
        return _gp.gp_Ax3_SetXDirection(self, *args)

    def SetYDirection(self, *args):
        r"""

        Parameters
        ----------
        theVy: gp_Dir

        Return
        -------
        None

        Description
        -----------
        Changes the 'Ydirection' of <self>. The main direction is not modified but the 'Xdirection' is changed. If <theVy> is not normal to the main direction then 'YDirection' is computed as follows YDirection = Direction ^ (<theVy> ^ Direction). Raises ConstructionError if <theVy> is parallel to the main direction of <self>.

        """
        return _gp.gp_Ax3_SetYDirection(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Ax3_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        gp_Ax3

        Description
        -----------
        Transforms an axis placement with a Trsf. The 'Location' point, the 'XDirection' and the 'YDirection' are transformed with theT. The resulting main 'Direction' of <self> is the cross product between the 'XDirection' and the 'YDirection' after transformation.

        """
        return _gp.gp_Ax3_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Ax3_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        gp_Ax3

        Description
        -----------
        Translates an axis plaxement in the direction of the vector <theV>. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        gp_Ax3

        Description
        -----------
        Translates an axis placement from the point <theP1> to the point <theP2>.

        """
        return _gp.gp_Ax3_Translated(self, *args)

    def XDirection(self, *args):
        r"""
        Return
        -------
        gp_Dir

        Description
        -----------
        Returns the 'XDirection' of <self>.

        """
        return _gp.gp_Ax3_XDirection(self, *args)

    def XReverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Reverses the X direction of <self>.

        """
        return _gp.gp_Ax3_XReverse(self, *args)

    def YDirection(self, *args):
        r"""
        Return
        -------
        gp_Dir

        Description
        -----------
        Returns the 'YDirection' of <self>.

        """
        return _gp.gp_Ax3_YDirection(self, *args)

    def YReverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Reverses the Y direction of <self>.

        """
        return _gp.gp_Ax3_YReverse(self, *args)

    def ZReverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Reverses the Z direction of <self>.

        """
        return _gp.gp_Ax3_ZReverse(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Ax3()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Ax3')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Ax3

# Register gp_Ax3 in _gp:
_gp.gp_Ax3_swigregister(gp_Ax3)
class gp_Circ(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"""
        Return
        -------
        None

        Description
        -----------
        Creates an indefinite circle.

        Parameters
        ----------
        theA2: gp_Ax2
        theRadius: float

        Return
        -------
        None

        Description
        -----------
        A2 locates the circle and gives its orientation in 3D space. Warnings: It is not forbidden to create a circle with theRadius = 0.0 Raises ConstructionError if theRadius < 0.0.

        """
        _gp.gp_Circ_swiginit(self, _gp.new_gp_Circ(*args))

    def Area(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the area of the circle.

        """
        return _gp.gp_Circ_Area(self, *args)

    def Axis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the main axis of the circle. It is the axis perpendicular to the plane of the circle, passing through the 'Location' point (center) of the circle.

        """
        return _gp.gp_Circ_Axis(self, *args)

    def Contains(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theLinearTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if the point theP is on the circumference. The distance between <self> and <theP> must be lower or equal to theLinearTolerance.

        """
        return _gp.gp_Circ_Contains(self, *args)

    def Distance(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        float

        Description
        -----------
        Computes the minimum of distance between the point theP and any point on the circumference of the circle.

        """
        return _gp.gp_Circ_Distance(self, *args)

    def Length(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the circumference of the circle.

        """
        return _gp.gp_Circ_Length(self, *args)

    def Location(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the center of the circle. It is the 'Location' point of the local coordinate system of the circle.

        """
        return _gp.gp_Circ_Location(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Circ_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        gp_Circ

        Description
        -----------
        Performs the symmetrical transformation of a circle with respect to the point theP which is the center of the symmetry.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        gp_Circ

        Description
        -----------
        Performs the symmetrical transformation of a circle with respect to an axis placement which is the axis of the symmetry.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        gp_Circ

        Description
        -----------
        Performs the symmetrical transformation of a circle with respect to a plane. The axis placement theA2 locates the plane of the of the symmetry: (Location, XDirection, YDirection).

        """
        return _gp.gp_Circ_Mirrored(self, *args)

    def Position(self, *args):
        r"""
        Return
        -------
        gp_Ax2

        Description
        -----------
        Returns the position of the circle. It is the local coordinate system of the circle.

        """
        return _gp.gp_Circ_Position(self, *args)

    def Radius(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the radius of this circle.

        """
        return _gp.gp_Circ_Radius(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Circ_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        gp_Circ

        Description
        -----------
        Rotates a circle. theA1 is the axis of the rotation. theAng is the angular value of the rotation in radians.

        """
        return _gp.gp_Circ_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Circ_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        gp_Circ

        Description
        -----------
        Scales a circle. theS is the scaling value. Warnings: If theS is negative the radius stay positive but the 'XAxis' and the 'YAxis' are reversed as for an ellipse.

        """
        return _gp.gp_Circ_Scaled(self, *args)

    def SetAxis(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        Changes the main axis of the circle. It is the axis perpendicular to the plane of the circle. Raises ConstructionError if the direction of theA1 is parallel to the 'XAxis' of the circle.

        """
        return _gp.gp_Circ_SetAxis(self, *args)

    def SetLocation(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        Changes the 'Location' point (center) of the circle.

        """
        return _gp.gp_Circ_SetLocation(self, *args)

    def SetPosition(self, *args):
        r"""

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        Changes the position of the circle.

        """
        return _gp.gp_Circ_SetPosition(self, *args)

    def SetRadius(self, *args):
        r"""

        Parameters
        ----------
        theRadius: float

        Return
        -------
        None

        Description
        -----------
        Modifies the radius of this circle. Warning. This class does not prevent the creation of a circle where theRadius is null. Exceptions Standard_ConstructionError if theRadius is negative.

        """
        return _gp.gp_Circ_SetRadius(self, *args)

    def SquareDistance(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        float

        Description
        -----------
        Computes the square distance between <self> and the point theP.

        """
        return _gp.gp_Circ_SquareDistance(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Circ_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        gp_Circ

        Description
        -----------
        Transforms a circle with the transformation theT from class Trsf.

        """
        return _gp.gp_Circ_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Circ_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        gp_Circ

        Description
        -----------
        Translates a circle in the direction of the vector theV. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        gp_Circ

        Description
        -----------
        Translates a circle from the point theP1 to the point theP2.

        """
        return _gp.gp_Circ_Translated(self, *args)

    def XAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the 'XAxis' of the circle. This axis is perpendicular to the axis of the conic. This axis and the 'Yaxis' define the plane of the conic.

        """
        return _gp.gp_Circ_XAxis(self, *args)

    def YAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the 'YAxis' of the circle. This axis and the 'Xaxis' define the plane of the conic. The 'YAxis' is perpendicular to the 'Xaxis'.

        """
        return _gp.gp_Circ_YAxis(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Circ()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Circ')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Circ

# Register gp_Circ in _gp:
_gp.gp_Circ_swigregister(gp_Circ)
class gp_Circ2d(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"""
        Return
        -------
        None

        Description
        -----------
        creates an indefinite circle.

        Parameters
        ----------
        theXAxis: gp_Ax2d
        theRadius: float
        theIsSense: bool (optional, default to Standard_True)

        Return
        -------
        None

        Description
        -----------
        The location point of theXAxis is the center of the circle. Warnings: It is not forbidden to create a circle with theRadius = 0.0 Raises ConstructionError if theRadius < 0.0. Raised if theRadius < 0.0.

        Parameters
        ----------
        theAxis: gp_Ax22d
        theRadius: float

        Return
        -------
        None

        Description
        -----------
        theAxis defines the Xaxis and Yaxis of the circle which defines the origin and the sense of parametrization. The location point of theAxis is the center of the circle. Warnings: It is not forbidden to create a circle with theRadius = 0.0 Raises ConstructionError if theRadius < 0.0. Raised if theRadius < 0.0.

        """
        _gp.gp_Circ2d_swiginit(self, _gp.new_gp_Circ2d(*args))

    def Area(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the area of the circle.

        """
        return _gp.gp_Circ2d_Area(self, *args)

    def Axis(self, *args):
        r"""
        Return
        -------
        gp_Ax22d

        Description
        -----------
        returns the position of the circle.

        """
        return _gp.gp_Circ2d_Axis(self, *args)

    def Coefficients(self, *args):
        r"""

        Parameters
        ----------

        Return
        -------
        theA: float
        theB: float
        theC: float
        theD: float
        theE: float
        theF: float

        Description
        -----------
        Returns the normalized coefficients from the implicit equation of the circle: theA * (X**2) + theB * (Y**2) + 2*theC*(X*Y) + 2*theD*X + 2*theE*Y + theF = 0.0.

        """
        return _gp.gp_Circ2d_Coefficients(self, *args)

    def Contains(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theLinearTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Does <self> contain theP ? Returns True if the distance between theP and any point on the circumference of the circle is lower of equal to <theLinearTolerance>.

        """
        return _gp.gp_Circ2d_Contains(self, *args)

    def Distance(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        float

        Description
        -----------
        Computes the minimum of distance between the point theP and any point on the circumference of the circle.

        """
        return _gp.gp_Circ2d_Distance(self, *args)

    def IsDirect(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Returns true if the local coordinate system is direct and false in the other case.

        """
        return _gp.gp_Circ2d_IsDirect(self, *args)

    def Length(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        computes the circumference of the circle.

        """
        return _gp.gp_Circ2d_Length(self, *args)

    def Location(self, *args):
        r"""
        Return
        -------
        gp_Pnt2d

        Description
        -----------
        Returns the location point (center) of the circle.

        """
        return _gp.gp_Circ2d_Location(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Circ2d_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        gp_Circ2d

        Description
        -----------
        Performs the symmetrical transformation of a circle with respect to the point theP which is the center of the symmetry.

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        gp_Circ2d

        Description
        -----------
        Performs the symmetrical transformation of a circle with respect to an axis placement which is the axis of the symmetry.

        """
        return _gp.gp_Circ2d_Mirrored(self, *args)

    def Position(self, *args):
        r"""
        Return
        -------
        gp_Ax22d

        Description
        -----------
        returns the position of the circle. Idem Axis(me).

        """
        return _gp.gp_Circ2d_Position(self, *args)

    def Radius(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the radius value of the circle.

        """
        return _gp.gp_Circ2d_Radius(self, *args)

    def Reverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Reverses the orientation of the local coordinate system of this circle (the 'Y Direction' is reversed) and therefore changes the implicit orientation of this circle. Reverse assigns the result to this circle,.

        """
        return _gp.gp_Circ2d_Reverse(self, *args)

    def Reversed(self, *args):
        r"""
        Return
        -------
        gp_Circ2d

        Description
        -----------
        Reverses the orientation of the local coordinate system of this circle (the 'Y Direction' is reversed) and therefore changes the implicit orientation of this circle. Reversed creates a new circle.

        """
        return _gp.gp_Circ2d_Reversed(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Circ2d_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theAng: float

        Return
        -------
        gp_Circ2d

        Description
        -----------
        Rotates a circle. theP is the center of the rotation. Ang is the angular value of the rotation in radians.

        """
        return _gp.gp_Circ2d_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theS: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Circ2d_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theS: float

        Return
        -------
        gp_Circ2d

        Description
        -----------
        Scales a circle. theS is the scaling value. Warnings: If theS is negative the radius stay positive but the 'XAxis' and the 'YAxis' are reversed as for an ellipse.

        """
        return _gp.gp_Circ2d_Scaled(self, *args)

    def SetAxis(self, *args):
        r"""

        Parameters
        ----------
        theA: gp_Ax22d

        Return
        -------
        None

        Description
        -----------
        Changes the X axis of the circle.

        """
        return _gp.gp_Circ2d_SetAxis(self, *args)

    def SetLocation(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        Changes the location point (center) of the circle.

        """
        return _gp.gp_Circ2d_SetLocation(self, *args)

    def SetRadius(self, *args):
        r"""

        Parameters
        ----------
        theRadius: float

        Return
        -------
        None

        Description
        -----------
        Modifies the radius of this circle. This class does not prevent the creation of a circle where theRadius is null. Exceptions Standard_ConstructionError if theRadius is negative.

        """
        return _gp.gp_Circ2d_SetRadius(self, *args)

    def SetXAxis(self, *args):
        r"""

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        Changes the X axis of the circle.

        """
        return _gp.gp_Circ2d_SetXAxis(self, *args)

    def SetYAxis(self, *args):
        r"""

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        Changes the Y axis of the circle.

        """
        return _gp.gp_Circ2d_SetYAxis(self, *args)

    def SquareDistance(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        float

        Description
        -----------
        Computes the square distance between <self> and the point theP.

        """
        return _gp.gp_Circ2d_SquareDistance(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Circ2d_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        gp_Circ2d

        Description
        -----------
        Transforms a circle with the transformation theT from class Trsf2d.

        """
        return _gp.gp_Circ2d_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt2d
        theP2: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Circ2d_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        gp_Circ2d

        Description
        -----------
        Translates a circle in the direction of the vector theV. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt2d
        theP2: gp_Pnt2d

        Return
        -------
        gp_Circ2d

        Description
        -----------
        Translates a circle from the point theP1 to the point theP2.

        """
        return _gp.gp_Circ2d_Translated(self, *args)

    def XAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax2d

        Description
        -----------
        returns the X axis of the circle.

        """
        return _gp.gp_Circ2d_XAxis(self, *args)

    def YAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax2d

        Description
        -----------
        Returns the Y axis of the circle. Reverses the direction of the circle.

        """
        return _gp.gp_Circ2d_YAxis(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Circ2d()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Circ2d')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Circ2d

# Register gp_Circ2d in _gp:
_gp.gp_Circ2d_swigregister(gp_Circ2d)
class gp_Cone(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"""
        Return
        -------
        None

        Description
        -----------
        Creates an indefinite Cone.

        Parameters
        ----------
        theA3: gp_Ax3
        theAng: float
        theRadius: float

        Return
        -------
        None

        Description
        -----------
        Creates an infinite conical surface. theA3 locates the cone in the space and defines the reference plane of the surface. Ang is the conical surface semi-angle. Its absolute value is in range ]0, PI/2[. theRadius is the radius of the circle in the reference plane of the cone. theRaises ConstructionError * if theRadius is lower than 0.0 * Abs(theAng) < Resolution from gp or Abs(theAng) >= (PI/2) - Resolution.

        """
        _gp.gp_Cone_swiginit(self, _gp.new_gp_Cone(*args))

    def Apex(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Computes the cone's top. The Apex of the cone is on the negative side of the symmetry axis of the cone.

        """
        return _gp.gp_Cone_Apex(self, *args)

    def Axis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        returns the symmetry axis of the cone.

        """
        return _gp.gp_Cone_Axis(self, *args)

    def Coefficients(self, *args):
        r"""

        Parameters
        ----------

        Return
        -------
        theA1: float
        theA2: float
        theA3: float
        theB1: float
        theB2: float
        theB3: float
        theC1: float
        theC2: float
        theC3: float
        theD: float

        Description
        -----------
        Computes the coefficients of the implicit equation of the quadric in the absolute cartesian coordinates system: theA1.X**2 + theA2.Y**2 + theA3.Z**2 + 2.(theB1.X.Y + theB2.X.Z + theB3.Y.Z) + 2.(theC1.X + theC2.Y + theC3.Z) + theD = 0.0.

        """
        return _gp.gp_Cone_Coefficients(self, *args)

    def Direct(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Returns true if the local coordinate system of this cone is right-handed.

        """
        return _gp.gp_Cone_Direct(self, *args)

    def Location(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        returns the 'Location' point of the cone.

        """
        return _gp.gp_Cone_Location(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Cone_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        gp_Cone

        Description
        -----------
        Performs the symmetrical transformation of a cone with respect to the point theP which is the center of the symmetry.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        gp_Cone

        Description
        -----------
        Performs the symmetrical transformation of a cone with respect to an axis placement which is the axis of the symmetry.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        gp_Cone

        Description
        -----------
        Performs the symmetrical transformation of a cone with respect to a plane. The axis placement theA2 locates the plane of the of the symmetry: (Location, XDirection, YDirection).

        """
        return _gp.gp_Cone_Mirrored(self, *args)

    def Position(self, *args):
        r"""
        Return
        -------
        gp_Ax3

        Description
        -----------
        Returns the local coordinates system of the cone.

        """
        return _gp.gp_Cone_Position(self, *args)

    def RefRadius(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the radius of the cone in the reference plane.

        """
        return _gp.gp_Cone_RefRadius(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Cone_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        gp_Cone

        Description
        -----------
        Rotates a cone. theA1 is the axis of the rotation. Ang is the angular value of the rotation in radians.

        """
        return _gp.gp_Cone_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Cone_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        gp_Cone

        Description
        -----------
        Scales a cone. theS is the scaling value. The absolute value of theS is used to scale the cone.

        """
        return _gp.gp_Cone_Scaled(self, *args)

    def SemiAngle(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the half-angle at the apex of this cone. Attention! Semi-angle can be negative.

        """
        return _gp.gp_Cone_SemiAngle(self, *args)

    def SetAxis(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        Changes the symmetry axis of the cone. Raises ConstructionError the direction of theA1 is parallel to the 'XDirection' of the coordinate system of the cone.

        """
        return _gp.gp_Cone_SetAxis(self, *args)

    def SetLocation(self, *args):
        r"""

        Parameters
        ----------
        theLoc: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        Changes the location of the cone.

        """
        return _gp.gp_Cone_SetLocation(self, *args)

    def SetPosition(self, *args):
        r"""

        Parameters
        ----------
        theA3: gp_Ax3

        Return
        -------
        None

        Description
        -----------
        Changes the local coordinate system of the cone. This coordinate system defines the reference plane of the cone.

        """
        return _gp.gp_Cone_SetPosition(self, *args)

    def SetRadius(self, *args):
        r"""

        Parameters
        ----------
        theR: float

        Return
        -------
        None

        Description
        -----------
        Changes the radius of the cone in the reference plane of the cone. Raised if theR < 0.0.

        """
        return _gp.gp_Cone_SetRadius(self, *args)

    def SetSemiAngle(self, *args):
        r"""

        Parameters
        ----------
        theAng: float

        Return
        -------
        None

        Description
        -----------
        Changes the semi-angle of the cone. Semi-angle can be negative. Its absolute value Abs(theAng) is in range ]0,PI/2[. Raises ConstructionError if Abs(theAng) < Resolution from gp or Abs(theAng) >= PI/2 - Resolution.

        """
        return _gp.gp_Cone_SetSemiAngle(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Cone_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        gp_Cone

        Description
        -----------
        Transforms a cone with the transformation theT from class Trsf.

        """
        return _gp.gp_Cone_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Cone_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        gp_Cone

        Description
        -----------
        Translates a cone in the direction of the vector theV. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        gp_Cone

        Description
        -----------
        Translates a cone from the point P1 to the point P2.

        """
        return _gp.gp_Cone_Translated(self, *args)

    def UReverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Reverses the U parametrization of the cone reversing the YAxis.

        """
        return _gp.gp_Cone_UReverse(self, *args)

    def VReverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Reverses the V parametrization of the cone reversing the ZAxis.

        """
        return _gp.gp_Cone_VReverse(self, *args)

    def XAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the XAxis of the reference plane.

        """
        return _gp.gp_Cone_XAxis(self, *args)

    def YAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the YAxis of the reference plane.

        """
        return _gp.gp_Cone_YAxis(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Cone()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Cone')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Cone

# Register gp_Cone in _gp:
_gp.gp_Cone_swigregister(gp_Cone)
class gp_Cylinder(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"""
        Return
        -------
        None

        Description
        -----------
        Creates a indefinite cylinder.

        Parameters
        ----------
        theA3: gp_Ax3
        theRadius: float

        Return
        -------
        None

        Description
        -----------
        Creates a cylinder of radius Radius, whose axis is the 'main Axis' of theA3. theA3 is the local coordinate system of the cylinder. Raises ConstructionErrord if theRadius < 0.0.

        """
        _gp.gp_Cylinder_swiginit(self, _gp.new_gp_Cylinder(*args))

    def Axis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the symmetry axis of the cylinder.

        """
        return _gp.gp_Cylinder_Axis(self, *args)

    def Coefficients(self, *args):
        r"""

        Parameters
        ----------

        Return
        -------
        theA1: float
        theA2: float
        theA3: float
        theB1: float
        theB2: float
        theB3: float
        theC1: float
        theC2: float
        theC3: float
        theD: float

        Description
        -----------
        Computes the coefficients of the implicit equation of the quadric in the absolute cartesian coordinate system: theA1.X**2 + theA2.Y**2 + theA3.Z**2 + 2.(theB1.X.Y + theB2.X.Z + theB3.Y.Z) + 2.(theC1.X + theC2.Y + theC3.Z) + theD = 0.0.

        """
        return _gp.gp_Cylinder_Coefficients(self, *args)

    def Direct(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Returns true if the local coordinate system of this cylinder is right-handed.

        """
        return _gp.gp_Cylinder_Direct(self, *args)

    def Location(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the 'Location' point of the cylinder.

        """
        return _gp.gp_Cylinder_Location(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Cylinder_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        gp_Cylinder

        Description
        -----------
        Performs the symmetrical transformation of a cylinder with respect to the point theP which is the center of the symmetry.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        gp_Cylinder

        Description
        -----------
        Performs the symmetrical transformation of a cylinder with respect to an axis placement which is the axis of the symmetry.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        gp_Cylinder

        Description
        -----------
        Performs the symmetrical transformation of a cylinder with respect to a plane. The axis placement theA2 locates the plane of the of the symmetry: (Location, XDirection, YDirection).

        """
        return _gp.gp_Cylinder_Mirrored(self, *args)

    def Position(self, *args):
        r"""
        Return
        -------
        gp_Ax3

        Description
        -----------
        Returns the local coordinate system of the cylinder.

        """
        return _gp.gp_Cylinder_Position(self, *args)

    def Radius(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the radius of the cylinder.

        """
        return _gp.gp_Cylinder_Radius(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Cylinder_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        gp_Cylinder

        Description
        -----------
        Rotates a cylinder. theA1 is the axis of the rotation. theAng is the angular value of the rotation in radians.

        """
        return _gp.gp_Cylinder_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Cylinder_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        gp_Cylinder

        Description
        -----------
        Scales a cylinder. theS is the scaling value. The absolute value of theS is used to scale the cylinder.

        """
        return _gp.gp_Cylinder_Scaled(self, *args)

    def SetAxis(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        Changes the symmetry axis of the cylinder. Raises ConstructionError if the direction of theA1 is parallel to the 'XDirection' of the coordinate system of the cylinder.

        """
        return _gp.gp_Cylinder_SetAxis(self, *args)

    def SetLocation(self, *args):
        r"""

        Parameters
        ----------
        theLoc: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        Changes the location of the surface.

        """
        return _gp.gp_Cylinder_SetLocation(self, *args)

    def SetPosition(self, *args):
        r"""

        Parameters
        ----------
        theA3: gp_Ax3

        Return
        -------
        None

        Description
        -----------
        Change the local coordinate system of the surface.

        """
        return _gp.gp_Cylinder_SetPosition(self, *args)

    def SetRadius(self, *args):
        r"""

        Parameters
        ----------
        theR: float

        Return
        -------
        None

        Description
        -----------
        Modifies the radius of this cylinder. Exceptions Standard_ConstructionError if theR is negative.

        """
        return _gp.gp_Cylinder_SetRadius(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Cylinder_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        gp_Cylinder

        Description
        -----------
        Transforms a cylinder with the transformation theT from class Trsf.

        """
        return _gp.gp_Cylinder_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Cylinder_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        gp_Cylinder

        Description
        -----------
        Translates a cylinder in the direction of the vector theV. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        gp_Cylinder

        Description
        -----------
        Translates a cylinder from the point theP1 to the point theP2.

        """
        return _gp.gp_Cylinder_Translated(self, *args)

    def UReverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Reverses the U parametrization of the cylinder reversing the YAxis.

        """
        return _gp.gp_Cylinder_UReverse(self, *args)

    def VReverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Reverses the V parametrization of the plane reversing the Axis.

        """
        return _gp.gp_Cylinder_VReverse(self, *args)

    def XAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the axis X of the cylinder.

        """
        return _gp.gp_Cylinder_XAxis(self, *args)

    def YAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the axis Y of the cylinder.

        """
        return _gp.gp_Cylinder_YAxis(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Cylinder()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Cylinder')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Cylinder

# Register gp_Cylinder in _gp:
_gp.gp_Cylinder_swigregister(gp_Cylinder)
class gp_Dir(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"""
        Return
        -------
        None

        Description
        -----------
        Creates a direction corresponding to X axis.

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        None

        Description
        -----------
        Normalizes the vector theV and creates a direction. Raises ConstructionError if theV.Magnitude() <= Resolution.

        Parameters
        ----------
        theCoord: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        Creates a direction from a triplet of coordinates. Raises ConstructionError if theCoord.Modulus() <= Resolution from gp.

        Parameters
        ----------
        theXv: float
        theYv: float
        theZv: float

        Return
        -------
        None

        Description
        -----------
        Creates a direction with its 3 cartesian coordinates. Raises ConstructionError if Sqrt(theXv*theXv + theYv*theYv + theZv*theZv) <= Resolution Modification of the direction's coordinates If Sqrt (theXv*theXv + theYv*theYv + theZv*theZv) <= Resolution from gp where theXv, theYv ,theZv are the new coordinates it is not possible to construct the direction and the method raises the exception ConstructionError.

        """
        _gp.gp_Dir_swiginit(self, _gp.new_gp_Dir(*args))

    def Angle(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Dir

        Return
        -------
        float

        Description
        -----------
        Computes the angular value in radians between <self> and <theOther>. This value is always positive in 3D space. Returns the angle in the range [0, PI].

        """
        return _gp.gp_Dir_Angle(self, *args)

    def AngleWithRef(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Dir
        theVRef: gp_Dir

        Return
        -------
        float

        Description
        -----------
        Computes the angular value between <self> and <theOther>. <theVRef> is the direction of reference normal to <self> and <theOther> and its orientation gives the positive sense of rotation. If the cross product <self> ^ <theOther> has the same orientation as <theVRef> the angular value is positive else negative. Returns the angular value in the range -PI and PI (in radians). Raises DomainError if <self> and <theOther> are not parallel this exception is raised when <theVRef> is in the same plane as <self> and <theOther> The tolerance criterion is Resolution from package gp.

        """
        return _gp.gp_Dir_AngleWithRef(self, *args)

    def Coord(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int

        Return
        -------
        float

        Description
        -----------
        Returns the coordinate of range theIndex: theIndex = 1 => X is returned Ithendex = 2 => Y is returned theIndex = 3 => Z is returned Exceptions Standard_OutOfRange if theIndex is not 1, 2, or 3.

        Parameters
        ----------

        Return
        -------
        theXv: float
        theYv: float
        theZv: float

        Description
        -----------
        Returns for the unit vector its three coordinates theXv, theYv, and theZv.

        """
        return _gp.gp_Dir_Coord(self, *args)

    def Cross(self, *args):
        r"""

        Parameters
        ----------
        theRight: gp_Dir

        Return
        -------
        None

        Description
        -----------
        Computes the cross product between two directions Raises the exception ConstructionError if the two directions are parallel because the computed vector cannot be normalized to create a direction.

        """
        return _gp.gp_Dir_Cross(self, *args)

    def CrossCross(self, *args):
        r"""

        Parameters
        ----------
        theV1: gp_Dir
        theV2: gp_Dir

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Dir_CrossCross(self, *args)

    def CrossCrossed(self, *args):
        r"""

        Parameters
        ----------
        theV1: gp_Dir
        theV2: gp_Dir

        Return
        -------
        gp_Dir

        Description
        -----------
        Computes the double vector product this ^ (theV1 ^ theV2). - CrossCrossed creates a new unit vector. Exceptions Standard_ConstructionError if: - theV1 and theV2 are parallel, or - this unit vector and (theV1 ^ theV2) are parallel. This is because, in these conditions, the computed vector is null and cannot be normalized.

        """
        return _gp.gp_Dir_CrossCrossed(self, *args)

    def Crossed(self, *args):
        r"""

        Parameters
        ----------
        theRight: gp_Dir

        Return
        -------
        gp_Dir

        Description
        -----------
        Computes the triple vector product. <self> ^ (V1 ^ V2) Raises the exception ConstructionError if V1 and V2 are parallel or <self> and (V1^V2) are parallel because the computed vector can't be normalized to create a direction.

        """
        return _gp.gp_Dir_Crossed(self, *args)

    def Dot(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Dir

        Return
        -------
        float

        Description
        -----------
        Computes the scalar product.

        """
        return _gp.gp_Dir_Dot(self, *args)

    def DotCross(self, *args):
        r"""

        Parameters
        ----------
        theV1: gp_Dir
        theV2: gp_Dir

        Return
        -------
        float

        Description
        -----------
        Computes the triple scalar product <self> * (theV1 ^ theV2). Warnings: The computed vector theV1' = theV1 ^ theV2 is not normalized to create a unitary vector. So this method never raises an exception even if theV1 and theV2 are parallel.

        """
        return _gp.gp_Dir_DotCross(self, *args)

    def DumpJson(self, depth=-1):
        r"""

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        """
        return _gp.gp_Dir_DumpJson(self, depth)

    def InitFromJson(self, json_string):
        r"""

        Parameters
        ----------
        json_string: the string

        Return
        -------
        bool

        Description
        -----------
        Init the object from a JSON string.

        """
        return _gp.gp_Dir_InitFromJson(self, json_string)

    def IsEqual(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Dir
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if the angle between the two directions is lower or equal to theAngularTolerance.

        """
        return _gp.gp_Dir_IsEqual(self, *args)

    def IsNormal(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Dir
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if the angle between this unit vector and the unit vector theOther is equal to Pi/2 (normal).

        """
        return _gp.gp_Dir_IsNormal(self, *args)

    def IsOpposite(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Dir
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if the angle between this unit vector and the unit vector theOther is equal to Pi (opposite).

        """
        return _gp.gp_Dir_IsOpposite(self, *args)

    def IsParallel(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Dir
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns true if the angle between this unit vector and the unit vector theOther is equal to 0 or to Pi. Note: the tolerance criterion is given by theAngularTolerance.

        """
        return _gp.gp_Dir_IsParallel(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Dir

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Dir_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Dir

        Return
        -------
        gp_Dir

        Description
        -----------
        Performs the symmetrical transformation of a direction with respect to the direction theV which is the center of the symmetry.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        gp_Dir

        Description
        -----------
        Performs the symmetrical transformation of a direction with respect to an axis placement which is the axis of the symmetry.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        gp_Dir

        Description
        -----------
        Performs the symmetrical transformation of a direction with respect to a plane. The axis placement theA2 locates the plane of the symmetry: (Location, XDirection, YDirection).

        """
        return _gp.gp_Dir_Mirrored(self, *args)

    def Reverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Dir_Reverse(self, *args)

    def Reversed(self, *args):
        r"""
        Return
        -------
        gp_Dir

        Description
        -----------
        Reverses the orientation of a direction geometric transformations Performs the symmetrical transformation of a direction with respect to the direction V which is the center of the symmetry.].

        """
        return _gp.gp_Dir_Reversed(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Dir_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        gp_Dir

        Description
        -----------
        Rotates a direction. theA1 is the axis of the rotation. theAng is the angular value of the rotation in radians.

        """
        return _gp.gp_Dir_Rotated(self, *args)

    def SetCoord(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int
        theXi: float

        Return
        -------
        None

        Description
        -----------
        For this unit vector, assigns the value Xi to: - the X coordinate if theIndex is 1, or - the Y coordinate if theIndex is 2, or - the Z coordinate if theIndex is 3, and then normalizes it. Warning Remember that all the coordinates of a unit vector are implicitly modified when any single one is changed directly. Exceptions Standard_OutOfRange if theIndex is not 1, 2, or 3. Standard_ConstructionError if either of the following is less than or equal to gp::Resolution(): - Sqrt(Xv*Xv + Yv*Yv + Zv*Zv), or - the modulus of the number triple formed by the new value theXi and the two other coordinates of this vector that were not directly modified.

        Parameters
        ----------
        theXv: float
        theYv: float
        theZv: float

        Return
        -------
        None

        Description
        -----------
        For this unit vector, assigns the values theXv, theYv and theZv to its three coordinates. Remember that all the coordinates of a unit vector are implicitly modified when any single one is changed directly.

        """
        return _gp.gp_Dir_SetCoord(self, *args)

    def SetX(self, *args):
        r"""

        Parameters
        ----------
        theX: float

        Return
        -------
        None

        Description
        -----------
        Assigns the given value to the X coordinate of this unit vector.

        """
        return _gp.gp_Dir_SetX(self, *args)

    def SetXYZ(self, *args):
        r"""

        Parameters
        ----------
        theCoord: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        Assigns the three coordinates of theCoord to this unit vector.

        """
        return _gp.gp_Dir_SetXYZ(self, *args)

    def SetY(self, *args):
        r"""

        Parameters
        ----------
        theY: float

        Return
        -------
        None

        Description
        -----------
        Assigns the given value to the Y coordinate of this unit vector.

        """
        return _gp.gp_Dir_SetY(self, *args)

    def SetZ(self, *args):
        r"""

        Parameters
        ----------
        theZ: float

        Return
        -------
        None

        Description
        -----------
        Assigns the given value to the Z coordinate of this unit vector.

        """
        return _gp.gp_Dir_SetZ(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Dir_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        gp_Dir

        Description
        -----------
        Transforms a direction with a 'Trsf' from gp. Warnings: If the scale factor of the 'Trsf' theT is negative then the direction <self> is reversed.

        """
        return _gp.gp_Dir_Transformed(self, *args)

    def X(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the X coordinate for a unit vector.

        """
        return _gp.gp_Dir_X(self, *args)

    def XYZ(self, *args):
        r"""
        Return
        -------
        gp_XYZ

        Description
        -----------
        for this unit vector, returns its three coordinates as a number triplea.

        """
        return _gp.gp_Dir_XYZ(self, *args)

    def Y(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the Y coordinate for a unit vector.

        """
        return _gp.gp_Dir_Y(self, *args)

    def Z(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the Z coordinate for a unit vector.

        """
        return _gp.gp_Dir_Z(self, *args)

    def __mul__(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Dir

        Return
        -------
        float

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Dir___mul__(self, *args)

    def __neg__(self, *args):
        r"""
        Return
        -------
        gp_Dir

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Dir___neg__(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Dir()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Dir')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Dir

# Register gp_Dir in _gp:
_gp.gp_Dir_swigregister(gp_Dir)
class gp_Dir2d(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"""
        Return
        -------
        None

        Description
        -----------
        Creates a direction corresponding to X axis.

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        None

        Description
        -----------
        Normalizes the vector theV and creates a Direction. Raises ConstructionError if theV.Magnitude() <= Resolution from gp.

        Parameters
        ----------
        theCoord: gp_XY

        Return
        -------
        None

        Description
        -----------
        Creates a Direction from a doublet of coordinates. Raises ConstructionError if theCoord.Modulus() <= Resolution from gp.

        Parameters
        ----------
        theXv: float
        theYv: float

        Return
        -------
        None

        Description
        -----------
        Creates a Direction with its 2 cartesian coordinates. Raises ConstructionError if Sqrt(theXv*theXv + theYv*theYv) <= Resolution from gp.

        """
        _gp.gp_Dir2d_swiginit(self, _gp.new_gp_Dir2d(*args))

    def Angle(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Dir2d

        Return
        -------
        float

        Description
        -----------
        Computes the angular value in radians between <self> and <theOther>. Returns the angle in the range [-PI, PI].

        """
        return _gp.gp_Dir2d_Angle(self, *args)

    def Coord(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int

        Return
        -------
        float

        Description
        -----------
        For this unit vector returns the coordinate of range theIndex: theIndex = 1 => X is returned theIndex = 2 => Y is returned Raises OutOfRange if theIndex != {1, 2}.

        Parameters
        ----------

        Return
        -------
        theXv: float
        theYv: float

        Description
        -----------
        For this unit vector returns its two coordinates theXv and theYv. Raises OutOfRange if theIndex != {1, 2}.

        """
        return _gp.gp_Dir2d_Coord(self, *args)

    def Crossed(self, *args):
        r"""

        Parameters
        ----------
        theRight: gp_Dir2d

        Return
        -------
        float

        Description
        -----------
        Computes the cross product between two directions.

        """
        return _gp.gp_Dir2d_Crossed(self, *args)

    def Dot(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Dir2d

        Return
        -------
        float

        Description
        -----------
        Computes the scalar product.

        """
        return _gp.gp_Dir2d_Dot(self, *args)

    def DumpJson(self, depth=-1):
        r"""

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        """
        return _gp.gp_Dir2d_DumpJson(self, depth)

    def IsEqual(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Dir2d
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if the two vectors have the same direction i.e. the angle between this unit vector and the unit vector theOther is less than or equal to theAngularTolerance.

        """
        return _gp.gp_Dir2d_IsEqual(self, *args)

    def IsNormal(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Dir2d
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if the angle between this unit vector and the unit vector theOther is equal to Pi/2 or -Pi/2 (normal) i.e. Abs(Abs(<self>.Angle(theOther)) - PI/2.) <= theAngularTolerance.

        """
        return _gp.gp_Dir2d_IsNormal(self, *args)

    def IsOpposite(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Dir2d
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if the angle between this unit vector and the unit vector theOther is equal to Pi or -Pi (opposite). i.e. PI - Abs(<self>.Angle(theOther)) <= theAngularTolerance.

        """
        return _gp.gp_Dir2d_IsOpposite(self, *args)

    def IsParallel(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Dir2d
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        returns true if the angle between this unit vector and unit vector theOther is equal to 0, Pi or -Pi. i.e. Abs(Angle(<self>, theOther)) <= theAngularTolerance or PI - Abs(Angle(<self>, theOther)) <= theAngularTolerance.

        """
        return _gp.gp_Dir2d_IsParallel(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Dir2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Dir2d_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Dir2d

        Return
        -------
        gp_Dir2d

        Description
        -----------
        Performs the symmetrical transformation of a direction with respect to the direction theV which is the center of the symmetry.

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        gp_Dir2d

        Description
        -----------
        Performs the symmetrical transformation of a direction with respect to an axis placement which is the axis of the symmetry.

        """
        return _gp.gp_Dir2d_Mirrored(self, *args)

    def Reverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Dir2d_Reverse(self, *args)

    def Reversed(self, *args):
        r"""
        Return
        -------
        gp_Dir2d

        Description
        -----------
        Reverses the orientation of a direction.

        """
        return _gp.gp_Dir2d_Reversed(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        Ang: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Dir2d_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theAng: float

        Return
        -------
        gp_Dir2d

        Description
        -----------
        Rotates a direction. theAng is the angular value of the rotation in radians.

        """
        return _gp.gp_Dir2d_Rotated(self, *args)

    def SetCoord(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int
        theXi: float

        Return
        -------
        None

        Description
        -----------
        For this unit vector, assigns: the value theXi to: - the X coordinate if theIndex is 1, or - the Y coordinate if theIndex is 2, and then normalizes it. Warning Remember that all the coordinates of a unit vector are implicitly modified when any single one is changed directly. Exceptions Standard_OutOfRange if theIndex is not 1 or 2. Standard_ConstructionError if either of the following is less than or equal to gp::Resolution(): - Sqrt(theXv*theXv + theYv*theYv), or - the modulus of the number pair formed by the new value theXi and the other coordinate of this vector that was not directly modified. Raises OutOfRange if theIndex != {1, 2}.

        Parameters
        ----------
        theXv: float
        theYv: float

        Return
        -------
        None

        Description
        -----------
        For this unit vector, assigns: - the values theXv and theYv to its two coordinates, Warning Remember that all the coordinates of a unit vector are implicitly modified when any single one is changed directly. Exceptions Standard_OutOfRange if theIndex is not 1 or 2. Standard_ConstructionError if either of the following is less than or equal to gp::Resolution(): - Sqrt(theXv*theXv + theYv*theYv), or - the modulus of the number pair formed by the new value Xi and the other coordinate of this vector that was not directly modified. Raises OutOfRange if theIndex != {1, 2}.

        """
        return _gp.gp_Dir2d_SetCoord(self, *args)

    def SetX(self, *args):
        r"""

        Parameters
        ----------
        theX: float

        Return
        -------
        None

        Description
        -----------
        Assigns the given value to the X coordinate of this unit vector, and then normalizes it. Warning Remember that all the coordinates of a unit vector are implicitly modified when any single one is changed directly. Exceptions Standard_ConstructionError if either of the following is less than or equal to gp::Resolution(): - the modulus of Coord, or - the modulus of the number pair formed from the new X or Y coordinate and the other coordinate of this vector that was not directly modified.

        """
        return _gp.gp_Dir2d_SetX(self, *args)

    def SetXY(self, *args):
        r"""

        Parameters
        ----------
        theCoord: gp_XY

        Return
        -------
        None

        Description
        -----------
        Assigns: - the two coordinates of theCoord to this unit vector, and then normalizes it. Warning Remember that all the coordinates of a unit vector are implicitly modified when any single one is changed directly. Exceptions Standard_ConstructionError if either of the following is less than or equal to gp::Resolution(): - the modulus of theCoord, or - the modulus of the number pair formed from the new X or Y coordinate and the other coordinate of this vector that was not directly modified.

        """
        return _gp.gp_Dir2d_SetXY(self, *args)

    def SetY(self, *args):
        r"""

        Parameters
        ----------
        theY: float

        Return
        -------
        None

        Description
        -----------
        Assigns the given value to the Y coordinate of this unit vector, and then normalizes it. Warning Remember that all the coordinates of a unit vector are implicitly modified when any single one is changed directly. Exceptions Standard_ConstructionError if either of the following is less than or equal to gp::Resolution(): - the modulus of Coord, or - the modulus of the number pair formed from the new X or Y coordinate and the other coordinate of this vector that was not directly modified.

        """
        return _gp.gp_Dir2d_SetY(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Dir2d_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        gp_Dir2d

        Description
        -----------
        Transforms a direction with the 'Trsf' theT. Warnings: If the scale factor of the 'Trsf' theT is negative then the direction <self> is reversed.

        """
        return _gp.gp_Dir2d_Transformed(self, *args)

    def X(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        For this unit vector, returns its X coordinate.

        """
        return _gp.gp_Dir2d_X(self, *args)

    def XY(self, *args):
        r"""
        Return
        -------
        gp_XY

        Description
        -----------
        For this unit vector, returns its two coordinates as a number pair. Comparison between Directions The precision value is an input data.

        """
        return _gp.gp_Dir2d_XY(self, *args)

    def Y(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        For this unit vector, returns its Y coordinate.

        """
        return _gp.gp_Dir2d_Y(self, *args)

    def __mul__(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Dir2d

        Return
        -------
        float

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Dir2d___mul__(self, *args)

    def __neg__(self, *args):
        r"""
        Return
        -------
        gp_Dir2d

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Dir2d___neg__(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Dir2d()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Dir2d')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Dir2d

# Register gp_Dir2d in _gp:
_gp.gp_Dir2d_swigregister(gp_Dir2d)
class gp_Elips(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"""
        Return
        -------
        None

        Description
        -----------
        Creates an indefinite ellipse.

        Parameters
        ----------
        theA2: gp_Ax2
        theMajorRadius: float
        theMinorRadius: float

        Return
        -------
        None

        Description
        -----------
        The major radius of the ellipse is on the 'XAxis' and the minor radius is on the 'YAxis' of the ellipse. The 'XAxis' is defined with the 'XDirection' of theA2 and the 'YAxis' is defined with the 'YDirection' of theA2. Warnings: It is not forbidden to create an ellipse with theMajorRadius = theMinorRadius. Raises ConstructionError if theMajorRadius < theMinorRadius or theMinorRadius < 0.

        """
        _gp.gp_Elips_swiginit(self, _gp.new_gp_Elips(*args))

    def Area(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the area of the Ellipse.

        """
        return _gp.gp_Elips_Area(self, *args)

    def Axis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Computes the axis normal to the plane of the ellipse.

        """
        return _gp.gp_Elips_Axis(self, *args)

    def Directrix1(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Computes the first or second directrix of this ellipse. These are the lines, in the plane of the ellipse, normal to the major axis, at a distance equal to MajorRadius/e from the center of the ellipse, where e is the eccentricity of the ellipse. The first directrix (Directrix1) is on the positive side of the major axis. The second directrix (Directrix2) is on the negative side. The directrix is returned as an axis (gp_Ax1 object), the origin of which is situated on the 'X Axis' of the local coordinate system of this ellipse. Exceptions Standard_ConstructionError if the eccentricity is null (the ellipse has degenerated into a circle).

        """
        return _gp.gp_Elips_Directrix1(self, *args)

    def Directrix2(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        This line is obtained by the symmetrical transformation of 'Directrix1' with respect to the 'YAxis' of the ellipse. Exceptions Standard_ConstructionError if the eccentricity is null (the ellipse has degenerated into a circle).

        """
        return _gp.gp_Elips_Directrix2(self, *args)

    def Eccentricity(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the eccentricity of the ellipse between 0.0 and 1.0 If f is the distance between the center of the ellipse and the Focus1 then the eccentricity e = f / MajorRadius. Raises ConstructionError if MajorRadius = 0.0.

        """
        return _gp.gp_Elips_Eccentricity(self, *args)

    def Focal(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the focal distance. It is the distance between the two focus focus1 and focus2 of the ellipse.

        """
        return _gp.gp_Elips_Focal(self, *args)

    def Focus1(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the first focus of the ellipse. This focus is on the positive side of the 'XAxis' of the ellipse.

        """
        return _gp.gp_Elips_Focus1(self, *args)

    def Focus2(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the second focus of the ellipse. This focus is on the negative side of the 'XAxis' of the ellipse.

        """
        return _gp.gp_Elips_Focus2(self, *args)

    def Location(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the center of the ellipse. It is the 'Location' point of the coordinate system of the ellipse.

        """
        return _gp.gp_Elips_Location(self, *args)

    def MajorRadius(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the major radius of the ellipse.

        """
        return _gp.gp_Elips_MajorRadius(self, *args)

    def MinorRadius(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the minor radius of the ellipse.

        """
        return _gp.gp_Elips_MinorRadius(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Elips_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        gp_Elips

        Description
        -----------
        Performs the symmetrical transformation of an ellipse with respect to the point theP which is the center of the symmetry.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        gp_Elips

        Description
        -----------
        Performs the symmetrical transformation of an ellipse with respect to an axis placement which is the axis of the symmetry.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        gp_Elips

        Description
        -----------
        Performs the symmetrical transformation of an ellipse with respect to a plane. The axis placement theA2 locates the plane of the symmetry (Location, XDirection, YDirection).

        """
        return _gp.gp_Elips_Mirrored(self, *args)

    def Parameter(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns p = (1 - e * e) * MajorRadius where e is the eccentricity of the ellipse. Returns 0 if MajorRadius = 0.

        """
        return _gp.gp_Elips_Parameter(self, *args)

    def Position(self, *args):
        r"""
        Return
        -------
        gp_Ax2

        Description
        -----------
        Returns the coordinate system of the ellipse.

        """
        return _gp.gp_Elips_Position(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Elips_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        gp_Elips

        Description
        -----------
        Rotates an ellipse. theA1 is the axis of the rotation. theAng is the angular value of the rotation in radians.

        """
        return _gp.gp_Elips_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Elips_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        gp_Elips

        Description
        -----------
        Scales an ellipse. theS is the scaling value.

        """
        return _gp.gp_Elips_Scaled(self, *args)

    def SetAxis(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        Changes the axis normal to the plane of the ellipse. It modifies the definition of this plane. The 'XAxis' and the 'YAxis' are recomputed. The local coordinate system is redefined so that: - its origin and 'main Direction' become those of the axis theA1 (the 'X Direction' and 'Y Direction' are then recomputed in the same way as for any gp_Ax2), or Raises ConstructionError if the direction of theA1 is parallel to the direction of the 'XAxis' of the ellipse.

        """
        return _gp.gp_Elips_SetAxis(self, *args)

    def SetLocation(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        Modifies this ellipse, by redefining its local coordinate so that its origin becomes theP.

        """
        return _gp.gp_Elips_SetLocation(self, *args)

    def SetMajorRadius(self, *args):
        r"""

        Parameters
        ----------
        theMajorRadius: float

        Return
        -------
        None

        Description
        -----------
        The major radius of the ellipse is on the 'XAxis' (major axis) of the ellipse. Raises ConstructionError if theMajorRadius < MinorRadius.

        """
        return _gp.gp_Elips_SetMajorRadius(self, *args)

    def SetMinorRadius(self, *args):
        r"""

        Parameters
        ----------
        theMinorRadius: float

        Return
        -------
        None

        Description
        -----------
        The minor radius of the ellipse is on the 'YAxis' (minor axis) of the ellipse. Raises ConstructionError if theMinorRadius > MajorRadius or MinorRadius < 0.

        """
        return _gp.gp_Elips_SetMinorRadius(self, *args)

    def SetPosition(self, *args):
        r"""

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        Modifies this ellipse, by redefining its local coordinate so that it becomes theA2.

        """
        return _gp.gp_Elips_SetPosition(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Elips_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        gp_Elips

        Description
        -----------
        Transforms an ellipse with the transformation theT from class Trsf.

        """
        return _gp.gp_Elips_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Elips_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        gp_Elips

        Description
        -----------
        Translates an ellipse in the direction of the vector theV. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        gp_Elips

        Description
        -----------
        Translates an ellipse from the point theP1 to the point theP2.

        """
        return _gp.gp_Elips_Translated(self, *args)

    def XAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the 'XAxis' of the ellipse whose origin is the center of this ellipse. It is the major axis of the ellipse.

        """
        return _gp.gp_Elips_XAxis(self, *args)

    def YAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the 'YAxis' of the ellipse whose unit vector is the 'X Direction' or the 'Y Direction' of the local coordinate system of this ellipse. This is the minor axis of the ellipse.

        """
        return _gp.gp_Elips_YAxis(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Elips()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Elips')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Elips

# Register gp_Elips in _gp:
_gp.gp_Elips_swigregister(gp_Elips)
class gp_Elips2d(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"""
        Return
        -------
        None

        Description
        -----------
        Creates an indefinite ellipse.

        Parameters
        ----------
        theMajorAxis: gp_Ax2d
        theMajorRadius: float
        theMinorRadius: float
        theIsSense: bool (optional, default to Standard_True)

        Return
        -------
        None

        Description
        -----------
        Creates an ellipse with the major axis, the major and the minor radius. The location of the theMajorAxis is the center of the ellipse. The sense of parametrization is given by theIsSense. Warnings: It is possible to create an ellipse with theMajorRadius = theMinorRadius. Raises ConstructionError if theMajorRadius < theMinorRadius or theMinorRadius < 0.0.

        Parameters
        ----------
        theA: gp_Ax22d
        theMajorRadius: float
        theMinorRadius: float

        Return
        -------
        None

        Description
        -----------
        Creates an ellipse with radii MajorRadius and MinorRadius, positioned in the plane by coordinate system theA where: - the origin of theA is the center of the ellipse, - the 'X Direction' of theA defines the major axis of the ellipse, that is, the major radius MajorRadius is measured along this axis, and - the 'Y Direction' of theA defines the minor axis of the ellipse, that is, the minor radius theMinorRadius is measured along this axis, and - the orientation (direct or indirect sense) of theA gives the orientation of the ellipse. Warnings: It is possible to create an ellipse with theMajorRadius = theMinorRadius. Raises ConstructionError if theMajorRadius < theMinorRadius or theMinorRadius < 0.0.

        """
        _gp.gp_Elips2d_swiginit(self, _gp.new_gp_Elips2d(*args))

    def Area(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the area of the ellipse.

        """
        return _gp.gp_Elips2d_Area(self, *args)

    def Axis(self, *args):
        r"""
        Return
        -------
        gp_Ax22d

        Description
        -----------
        Returns the major axis of the ellipse.

        """
        return _gp.gp_Elips2d_Axis(self, *args)

    def Coefficients(self, *args):
        r"""

        Parameters
        ----------

        Return
        -------
        theA: float
        theB: float
        theC: float
        theD: float
        theE: float
        theF: float

        Description
        -----------
        Returns the coefficients of the implicit equation of the ellipse. theA * (X**2) + theB * (Y**2) + 2*theC*(X*Y) + 2*theD*X + 2*theE*Y + theF = 0.

        """
        return _gp.gp_Elips2d_Coefficients(self, *args)

    def Directrix1(self, *args):
        r"""
        Return
        -------
        gp_Ax2d

        Description
        -----------
        This directrix is the line normal to the XAxis of the ellipse in the local plane (Z = 0) at a distance d = MajorRadius / e from the center of the ellipse, where e is the eccentricity of the ellipse. This line is parallel to the 'YAxis'. The intersection point between directrix1 and the 'XAxis' is the location point of the directrix1. This point is on the positive side of the 'XAxis'. //! Raised if Eccentricity = 0.0. (The ellipse degenerates into a circle).

        """
        return _gp.gp_Elips2d_Directrix1(self, *args)

    def Directrix2(self, *args):
        r"""
        Return
        -------
        gp_Ax2d

        Description
        -----------
        This line is obtained by the symmetrical transformation of 'Directrix1' with respect to the minor axis of the ellipse. //! Raised if Eccentricity = 0.0. (The ellipse degenerates into a circle).

        """
        return _gp.gp_Elips2d_Directrix2(self, *args)

    def Eccentricity(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the eccentricity of the ellipse between 0.0 and 1.0 If f is the distance between the center of the ellipse and the Focus1 then the eccentricity e = f / MajorRadius. Returns 0 if MajorRadius = 0.

        """
        return _gp.gp_Elips2d_Eccentricity(self, *args)

    def Focal(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the distance between the center of the ellipse and focus1 or focus2.

        """
        return _gp.gp_Elips2d_Focal(self, *args)

    def Focus1(self, *args):
        r"""
        Return
        -------
        gp_Pnt2d

        Description
        -----------
        Returns the first focus of the ellipse. This focus is on the positive side of the major axis of the ellipse.

        """
        return _gp.gp_Elips2d_Focus1(self, *args)

    def Focus2(self, *args):
        r"""
        Return
        -------
        gp_Pnt2d

        Description
        -----------
        Returns the second focus of the ellipse. This focus is on the negative side of the major axis of the ellipse.

        """
        return _gp.gp_Elips2d_Focus2(self, *args)

    def IsDirect(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Returns true if the local coordinate system is direct and false in the other case.

        """
        return _gp.gp_Elips2d_IsDirect(self, *args)

    def Location(self, *args):
        r"""
        Return
        -------
        gp_Pnt2d

        Description
        -----------
        Returns the center of the ellipse.

        """
        return _gp.gp_Elips2d_Location(self, *args)

    def MajorRadius(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the major radius of the Ellipse.

        """
        return _gp.gp_Elips2d_MajorRadius(self, *args)

    def MinorRadius(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the minor radius of the Ellipse.

        """
        return _gp.gp_Elips2d_MinorRadius(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Elips2d_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        gp_Elips2d

        Description
        -----------
        Performs the symmetrical transformation of a ellipse with respect to the point theP which is the center of the symmetry.

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        gp_Elips2d

        Description
        -----------
        Performs the symmetrical transformation of a ellipse with respect to an axis placement which is the axis of the symmetry.

        """
        return _gp.gp_Elips2d_Mirrored(self, *args)

    def Parameter(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns p = (1 - e * e) * MajorRadius where e is the eccentricity of the ellipse. Returns 0 if MajorRadius = 0.

        """
        return _gp.gp_Elips2d_Parameter(self, *args)

    def Reverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Elips2d_Reverse(self, *args)

    def Reversed(self, *args):
        r"""
        Return
        -------
        gp_Elips2d

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Elips2d_Reversed(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Elips2d_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theAng: float

        Return
        -------
        gp_Elips2d

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Elips2d_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theS: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Elips2d_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theS: float

        Return
        -------
        gp_Elips2d

        Description
        -----------
        Scales a ellipse. theS is the scaling value.

        """
        return _gp.gp_Elips2d_Scaled(self, *args)

    def SetAxis(self, *args):
        r"""

        Parameters
        ----------
        theA: gp_Ax22d

        Return
        -------
        None

        Description
        -----------
        Modifies this ellipse, by redefining its local coordinate system so that it becomes theA.

        """
        return _gp.gp_Elips2d_SetAxis(self, *args)

    def SetLocation(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        Modifies this ellipse, by redefining its local coordinate system so that - its origin becomes theP.

        """
        return _gp.gp_Elips2d_SetLocation(self, *args)

    def SetMajorRadius(self, *args):
        r"""

        Parameters
        ----------
        theMajorRadius: float

        Return
        -------
        None

        Description
        -----------
        Changes the value of the major radius. Raises ConstructionError if theMajorRadius < MinorRadius.

        """
        return _gp.gp_Elips2d_SetMajorRadius(self, *args)

    def SetMinorRadius(self, *args):
        r"""

        Parameters
        ----------
        theMinorRadius: float

        Return
        -------
        None

        Description
        -----------
        Changes the value of the minor radius. Raises ConstructionError if MajorRadius < theMinorRadius or MinorRadius < 0.0.

        """
        return _gp.gp_Elips2d_SetMinorRadius(self, *args)

    def SetXAxis(self, *args):
        r"""

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        Modifies this ellipse, by redefining its local coordinate system so that its origin and its 'X Direction' become those of the axis theA. The 'Y Direction' is then recomputed. The orientation of the local coordinate system is not modified.

        """
        return _gp.gp_Elips2d_SetXAxis(self, *args)

    def SetYAxis(self, *args):
        r"""

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        Modifies this ellipse, by redefining its local coordinate system so that its origin and its 'Y Direction' become those of the axis theA. The 'X Direction' is then recomputed. The orientation of the local coordinate system is not modified.

        """
        return _gp.gp_Elips2d_SetYAxis(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Elips2d_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        gp_Elips2d

        Description
        -----------
        Transforms an ellipse with the transformation theT from class Trsf2d.

        """
        return _gp.gp_Elips2d_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt2d
        theP2: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Elips2d_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        gp_Elips2d

        Description
        -----------
        Translates a ellipse in the direction of the vector theV. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt2d
        theP2: gp_Pnt2d

        Return
        -------
        gp_Elips2d

        Description
        -----------
        Translates a ellipse from the point theP1 to the point theP2.

        """
        return _gp.gp_Elips2d_Translated(self, *args)

    def XAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax2d

        Description
        -----------
        Returns the major axis of the ellipse.

        """
        return _gp.gp_Elips2d_XAxis(self, *args)

    def YAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax2d

        Description
        -----------
        Returns the minor axis of the ellipse. Reverses the direction of the circle.

        """
        return _gp.gp_Elips2d_YAxis(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Elips2d()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Elips2d')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Elips2d

# Register gp_Elips2d in _gp:
_gp.gp_Elips2d_swigregister(gp_Elips2d)
class gp_GTrsf(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"""
        Return
        -------
        None

        Description
        -----------
        Returns the Identity transformation.

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        Converts the gp_Trsf transformation theT into a general transformation, i.e. Returns a GTrsf with the same matrix of coefficients as the Trsf theT.

        Parameters
        ----------
        theM: gp_Mat
        theV: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        Creates a transformation based on the matrix theM and the vector theV where theM defines the vectorial part of the transformation, and V the translation part, or.

        """
        _gp.gp_GTrsf_swiginit(self, _gp.new_gp_GTrsf(*args))

    def DumpJson(self, depth=-1):
        r"""

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        """
        return _gp.gp_GTrsf_DumpJson(self, depth)

    def Form(self, *args):
        r"""
        Return
        -------
        gp_TrsfForm

        Description
        -----------
        Returns the nature of the transformation. It can be an identity transformation, a rotation, a translation, a mirror transformation (relative to a point, an axis or a plane), a scaling transformation, a compound transformation or some other type of transformation.

        """
        return _gp.gp_GTrsf_Form(self, *args)

    def Invert(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_GTrsf_Invert(self, *args)

    def Inverted(self, *args):
        r"""
        Return
        -------
        gp_GTrsf

        Description
        -----------
        Computes the reverse transformation. Raises an exception if the matrix of the transformation is not inversible.

        """
        return _gp.gp_GTrsf_Inverted(self, *args)

    def IsNegative(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Returns true if the determinant of the vectorial part of this transformation is negative.

        """
        return _gp.gp_GTrsf_IsNegative(self, *args)

    def IsSingular(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Returns true if this transformation is singular (and therefore, cannot be inverted). Note: The Gauss LU decomposition is used to invert the transformation matrix. Consequently, the transformation is considered as singular if the largest pivot found is less than or equal to gp::Resolution(). Warning If this transformation is singular, it cannot be inverted.

        """
        return _gp.gp_GTrsf_IsSingular(self, *args)

    def Multiplied(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_GTrsf

        Return
        -------
        gp_GTrsf

        Description
        -----------
        Computes the transformation composed from theT and <self>. In a C++ implementation you can also write Tcomposed = <self> * theT. Example: @code gp_GTrsf T1, T2, Tcomp; ............... //composition: Tcomp = T2.Multiplied(T1); // or (Tcomp = T2 * T1) // transformation of a point gp_XYZ P(10.,3.,4.); gp_XYZ P1(P); Tcomp.Transforms(P1); //using Tcomp gp_XYZ P2(P); T1.Transforms(P2); //using T1 then T2 T2.Transforms(P2); // P1 = P2 !!! @endcode.

        """
        return _gp.gp_GTrsf_Multiplied(self, *args)

    def Multiply(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_GTrsf

        Return
        -------
        None

        Description
        -----------
        Computes the transformation composed with <self> and theT. <self> = <self> * theT.

        """
        return _gp.gp_GTrsf_Multiply(self, *args)

    def Power(self, *args):
        r"""

        Parameters
        ----------
        theN: int

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_GTrsf_Power(self, *args)

    def Powered(self, *args):
        r"""

        Parameters
        ----------
        theN: int

        Return
        -------
        gp_GTrsf

        Description
        -----------
        Computes: - the product of this transformation multiplied by itself theN times, if theN is positive, or - the product of the inverse of this transformation multiplied by itself |theN| times, if theN is negative. If theN equals zero, the result is equal to the Identity transformation. I.e.: <self> * <self> * .......* <self>, theN time. if theN =0 <self> = Identity if theN < 0 <self> = <self>.Inverse() *...........* <self>.Inverse(). //! Raises an exception if N < 0 and if the matrix of the transformation not inversible.

        """
        return _gp.gp_GTrsf_Powered(self, *args)

    def PreMultiply(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_GTrsf

        Return
        -------
        None

        Description
        -----------
        Computes the product of the transformation theT and this transformation and assigns the result to this transformation. this = theT * this.

        """
        return _gp.gp_GTrsf_PreMultiply(self, *args)

    def SetAffinity(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theRatio: float

        Return
        -------
        None

        Description
        -----------
        Changes this transformation into an affinity of ratio theRatio with respect to the axis theA1. Note: an affinity is a point-by-point transformation that transforms any point P into a point P' such that if H is the orthogonal projection of P on the axis theA1 or the plane A2, the vectors HP and HP' satisfy: HP' = theRatio * HP.

        Parameters
        ----------
        theA2: gp_Ax2
        theRatio: float

        Return
        -------
        None

        Description
        -----------
        Changes this transformation into an affinity of ratio theRatio with respect to the plane defined by the origin, the 'X Direction' and the 'Y Direction' of coordinate system theA2. Note: an affinity is a point-by-point transformation that transforms any point P into a point P' such that if H is the orthogonal projection of P on the axis A1 or the plane theA2, the vectors HP and HP' satisfy: HP' = theRatio * HP.

        """
        return _gp.gp_GTrsf_SetAffinity(self, *args)

    def SetForm(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        verify and set the shape of the GTrsf Other or CompoundTrsf Ex: @code myGTrsf.SetValue(row1,col1,val1); myGTrsf.SetValue(row2,col2,val2); ... myGTrsf.SetForm(); @endcode.

        """
        return _gp.gp_GTrsf_SetForm(self, *args)

    def SetTranslationPart(self, *args):
        r"""

        Parameters
        ----------
        theCoord: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        Replaces the translation part of this transformation by the coordinates of the number triple theCoord.

        """
        return _gp.gp_GTrsf_SetTranslationPart(self, *args)

    def SetTrsf(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        Assigns the vectorial and translation parts of theT to this transformation.

        """
        return _gp.gp_GTrsf_SetTrsf(self, *args)

    def SetValue(self, *args):
        r"""

        Parameters
        ----------
        theRow: int
        theCol: int
        theValue: float

        Return
        -------
        None

        Description
        -----------
        Replaces the coefficient (theRow, theCol) of the matrix representing this transformation by theValue. Raises OutOfRange if theRow < 1 or theRow > 3 or theCol < 1 or theCol > 4.

        """
        return _gp.gp_GTrsf_SetValue(self, *args)

    def SetVectorialPart(self, *args):
        r"""

        Parameters
        ----------
        theMatrix: gp_Mat

        Return
        -------
        None

        Description
        -----------
        Replaces the vectorial part of this transformation by theMatrix.

        """
        return _gp.gp_GTrsf_SetVectorialPart(self, *args)

    def Transforms(self, *args):
        r"""

        Parameters
        ----------
        theCoord: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------

        Return
        -------
        theX: float
        theY: float
        theZ: float

        Description
        -----------
        Transforms a triplet XYZ with a GTrsf.

        """
        return _gp.gp_GTrsf_Transforms(self, *args)

    def TranslationPart(self, *args):
        r"""
        Return
        -------
        gp_XYZ

        Description
        -----------
        Returns the translation part of the GTrsf.

        """
        return _gp.gp_GTrsf_TranslationPart(self, *args)

    def Trsf(self, *args):
        r"""
        Return
        -------
        gp_Trsf

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_GTrsf_Trsf(self, *args)

    def Value(self, *args):
        r"""

        Parameters
        ----------
        theRow: int
        theCol: int

        Return
        -------
        float

        Description
        -----------
        Returns the coefficients of the global matrix of transformation. Raises OutOfRange if theRow < 1 or theRow > 3 or theCol < 1 or theCol > 4.

        """
        return _gp.gp_GTrsf_Value(self, *args)

    def VectorialPart(self, *args):
        r"""
        Return
        -------
        gp_Mat

        Description
        -----------
        Computes the vectorial part of the GTrsf. The returned Matrix is a 3*3 matrix.

        """
        return _gp.gp_GTrsf_VectorialPart(self, *args)

    def __mul__(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_GTrsf

        Return
        -------
        gp_GTrsf

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_GTrsf___mul__(self, *args)

    def __imul_wrapper__(self, other):
        return _gp.gp_GTrsf___imul_wrapper__(self, other)

    def __imul__(self, right):
        self.__imul_wrapper__(right)
        return self


    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_GTrsf()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_GTrsf')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_GTrsf

# Register gp_GTrsf in _gp:
_gp.gp_GTrsf_swigregister(gp_GTrsf)
class gp_GTrsf2d(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"""
        Return
        -------
        None

        Description
        -----------
        returns identity transformation.

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        None

        Description
        -----------
        Converts the gp_Trsf2d transformation theT into a general transformation.

        Parameters
        ----------
        theM: gp_Mat2d
        theV: gp_XY

        Return
        -------
        None

        Description
        -----------
        Creates a transformation based on the matrix theM and the vector theV where theM defines the vectorial part of the transformation, and theV the translation part.

        """
        _gp.gp_GTrsf2d_swiginit(self, _gp.new_gp_GTrsf2d(*args))

    def Form(self, *args):
        r"""
        Return
        -------
        gp_TrsfForm

        Description
        -----------
        Returns the nature of the transformation. It can be an identity transformation, a rotation, a translation, a mirror transformation (relative to a point or axis), a scaling transformation, a compound transformation or some other type of transformation.

        """
        return _gp.gp_GTrsf2d_Form(self, *args)

    def Invert(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_GTrsf2d_Invert(self, *args)

    def Inverted(self, *args):
        r"""
        Return
        -------
        gp_GTrsf2d

        Description
        -----------
        Computes the reverse transformation. Raised an exception if the matrix of the transformation is not inversible.

        """
        return _gp.gp_GTrsf2d_Inverted(self, *args)

    def IsNegative(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Returns true if the determinant of the vectorial part of this transformation is negative.

        """
        return _gp.gp_GTrsf2d_IsNegative(self, *args)

    def IsSingular(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Returns true if this transformation is singular (and therefore, cannot be inverted). Note: The Gauss LU decomposition is used to invert the transformation matrix. Consequently, the transformation is considered as singular if the largest pivot found is less than or equal to gp::Resolution(). Warning If this transformation is singular, it cannot be inverted.

        """
        return _gp.gp_GTrsf2d_IsSingular(self, *args)

    def Multiplied(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_GTrsf2d

        Return
        -------
        gp_GTrsf2d

        Description
        -----------
        Computes the transformation composed with theT and <self>. In a C++ implementation you can also write Tcomposed = <self> * theT. Example: @code gp_GTrsf2d T1, T2, Tcomp; ............... //composition: Tcomp = T2.Multiplied(T1); // or (Tcomp = T2 * T1) // transformation of a point gp_XY P(10.,3.); gp_XY P1(P); Tcomp.Transforms(P1); //using Tcomp gp_XY P2(P); T1.Transforms(P2); //using T1 then T2 T2.Transforms(P2); // P1 = P2 !!! @endcode.

        """
        return _gp.gp_GTrsf2d_Multiplied(self, *args)

    def Multiply(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_GTrsf2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_GTrsf2d_Multiply(self, *args)

    def Power(self, *args):
        r"""

        Parameters
        ----------
        theN: int

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_GTrsf2d_Power(self, *args)

    def Powered(self, *args):
        r"""

        Parameters
        ----------
        theN: int

        Return
        -------
        gp_GTrsf2d

        Description
        -----------
        Computes the following composition of transformations <self> * <self> * .......* <self>, theN time. if theN = 0 <self> = Identity if theN < 0 <self> = <self>.Inverse() *...........* <self>.Inverse(). //! Raises an exception if theN < 0 and if the matrix of the transformation is not inversible.

        """
        return _gp.gp_GTrsf2d_Powered(self, *args)

    def PreMultiply(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_GTrsf2d

        Return
        -------
        None

        Description
        -----------
        Computes the product of the transformation theT and this transformation, and assigns the result to this transformation: this = theT * this.

        """
        return _gp.gp_GTrsf2d_PreMultiply(self, *args)

    def SetAffinity(self, *args):
        r"""

        Parameters
        ----------
        theA: gp_Ax2d
        theRatio: float

        Return
        -------
        None

        Description
        -----------
        Changes this transformation into an affinity of ratio theRatio with respect to the axis theA. Note: An affinity is a point-by-point transformation that transforms any point P into a point P' such that if H is the orthogonal projection of P on the axis theA, the vectors HP and HP' satisfy: HP' = theRatio * HP.

        """
        return _gp.gp_GTrsf2d_SetAffinity(self, *args)

    def SetTranslationPart(self, *args):
        r"""

        Parameters
        ----------
        theCoord: gp_XY

        Return
        -------
        None

        Description
        -----------
        Replaces the translation part of this transformation by the coordinates of the number pair theCoord.

        """
        return _gp.gp_GTrsf2d_SetTranslationPart(self, *args)

    def SetTrsf2d(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        None

        Description
        -----------
        Assigns the vectorial and translation parts of theT to this transformation.

        """
        return _gp.gp_GTrsf2d_SetTrsf2d(self, *args)

    def SetValue(self, *args):
        r"""

        Parameters
        ----------
        theRow: int
        theCol: int
        theValue: float

        Return
        -------
        None

        Description
        -----------
        Replaces the coefficient (theRow, theCol) of the matrix representing this transformation by theValue, Raises OutOfRange if theRow < 1 or theRow > 2 or theCol < 1 or theCol > 3.

        """
        return _gp.gp_GTrsf2d_SetValue(self, *args)

    def SetVectorialPart(self, *args):
        r"""

        Parameters
        ----------
        theMatrix: gp_Mat2d

        Return
        -------
        None

        Description
        -----------
        Replaces the vectorial part of this transformation by theMatrix.

        """
        return _gp.gp_GTrsf2d_SetVectorialPart(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theCoord: gp_XY

        Return
        -------
        gp_XY

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_GTrsf2d_Transformed(self, *args)

    def Transforms(self, *args):
        r"""

        Parameters
        ----------
        theCoord: gp_XY

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------

        Return
        -------
        theX: float
        theY: float

        Description
        -----------
        Applies this transformation to the coordinates: - of the number pair Coord, or - X and Y. //! Note: - Transforms modifies theX, theY, or the coordinate pair Coord, while - Transformed creates a new coordinate pair.

        """
        return _gp.gp_GTrsf2d_Transforms(self, *args)

    def TranslationPart(self, *args):
        r"""
        Return
        -------
        gp_XY

        Description
        -----------
        Returns the translation part of the GTrsf2d.

        """
        return _gp.gp_GTrsf2d_TranslationPart(self, *args)

    def Trsf2d(self, *args):
        r"""
        Return
        -------
        gp_Trsf2d

        Description
        -----------
        Converts this transformation into a gp_Trsf2d transformation. Exceptions Standard_ConstructionError if this transformation cannot be converted, i.e. if its form is gp_Other.

        """
        return _gp.gp_GTrsf2d_Trsf2d(self, *args)

    def Value(self, *args):
        r"""

        Parameters
        ----------
        theRow: int
        theCol: int

        Return
        -------
        float

        Description
        -----------
        Returns the coefficients of the global matrix of transformation. Raised OutOfRange if theRow < 1 or theRow > 2 or theCol < 1 or theCol > 3.

        """
        return _gp.gp_GTrsf2d_Value(self, *args)

    def VectorialPart(self, *args):
        r"""
        Return
        -------
        gp_Mat2d

        Description
        -----------
        Computes the vectorial part of the GTrsf2d. The returned Matrix is a 2*2 matrix.

        """
        return _gp.gp_GTrsf2d_VectorialPart(self, *args)

    def __mul__(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_GTrsf2d

        Return
        -------
        gp_GTrsf2d

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_GTrsf2d___mul__(self, *args)

    def __imul_wrapper__(self, other):
        return _gp.gp_GTrsf2d___imul_wrapper__(self, other)

    def __imul__(self, right):
        self.__imul_wrapper__(right)
        return self


    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_GTrsf2d()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_GTrsf2d')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_GTrsf2d

# Register gp_GTrsf2d in _gp:
_gp.gp_GTrsf2d_swigregister(gp_GTrsf2d)
class gp_Hypr(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"""
        Return
        -------
        None

        Description
        -----------
        Creates of an indefinite hyperbola.

        Parameters
        ----------
        theA2: gp_Ax2
        theMajorRadius: float
        theMinorRadius: float

        Return
        -------
        None

        Description
        -----------
        Creates a hyperbola with radius theMajorRadius and theMinorRadius, positioned in the space by the coordinate system theA2 such that: - the origin of theA2 is the center of the hyperbola, - the 'X Direction' of theA2 defines the major axis of the hyperbola, that is, the major radius theMajorRadius is measured along this axis, and - the 'Y Direction' of theA2 defines the minor axis of the hyperbola, that is, the minor radius theMinorRadius is measured along this axis. Note: This class does not prevent the creation of a hyperbola where: - theMajorAxis is equal to theMinorAxis, or - theMajorAxis is less than theMinorAxis. Exceptions Standard_ConstructionError if theMajorAxis or theMinorAxis is negative. Raises ConstructionError if theMajorRadius < 0.0 or theMinorRadius < 0.0 Raised if theMajorRadius < 0.0 or theMinorRadius < 0.0.

        """
        _gp.gp_Hypr_swiginit(self, _gp.new_gp_Hypr(*args))

    def Asymptote1(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        In the local coordinate system of the hyperbola the equation of the hyperbola is (X*X)/(A*A) - (Y*Y)/(B*B) = 1.0 and the equation of the first asymptote is Y = (B/A)*X where A is the major radius and B is the minor radius. Raises ConstructionError if MajorRadius = 0.0.

        """
        return _gp.gp_Hypr_Asymptote1(self, *args)

    def Asymptote2(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        In the local coordinate system of the hyperbola the equation of the hyperbola is (X*X)/(A*A) - (Y*Y)/(B*B) = 1.0 and the equation of the first asymptote is Y = -(B/A)*X. where A is the major radius and B is the minor radius. Raises ConstructionError if MajorRadius = 0.0.

        """
        return _gp.gp_Hypr_Asymptote2(self, *args)

    def Axis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the axis passing through the center, and normal to the plane of this hyperbola.

        """
        return _gp.gp_Hypr_Axis(self, *args)

    def ConjugateBranch1(self, *args):
        r"""
        Return
        -------
        gp_Hypr

        Description
        -----------
        Computes the branch of hyperbola which is on the positive side of the 'YAxis' of <self>.

        """
        return _gp.gp_Hypr_ConjugateBranch1(self, *args)

    def ConjugateBranch2(self, *args):
        r"""
        Return
        -------
        gp_Hypr

        Description
        -----------
        Computes the branch of hyperbola which is on the negative side of the 'YAxis' of <self>.

        """
        return _gp.gp_Hypr_ConjugateBranch2(self, *args)

    def Directrix1(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        This directrix is the line normal to the XAxis of the hyperbola in the local plane (Z = 0) at a distance d = MajorRadius / e from the center of the hyperbola, where e is the eccentricity of the hyperbola. This line is parallel to the 'YAxis'. The intersection point between the directrix1 and the 'XAxis' is the 'Location' point of the directrix1. This point is on the positive side of the 'XAxis'.

        """
        return _gp.gp_Hypr_Directrix1(self, *args)

    def Directrix2(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        This line is obtained by the symmetrical transformation of 'Directrix1' with respect to the 'YAxis' of the hyperbola.

        """
        return _gp.gp_Hypr_Directrix2(self, *args)

    def Eccentricity(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the eccentricity of the hyperbola (e > 1). If f is the distance between the location of the hyperbola and the Focus1 then the eccentricity e = f / MajorRadius. Raises DomainError if MajorRadius = 0.0.

        """
        return _gp.gp_Hypr_Eccentricity(self, *args)

    def Focal(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the focal distance. It is the distance between the the two focus of the hyperbola.

        """
        return _gp.gp_Hypr_Focal(self, *args)

    def Focus1(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the first focus of the hyperbola. This focus is on the positive side of the 'XAxis' of the hyperbola.

        """
        return _gp.gp_Hypr_Focus1(self, *args)

    def Focus2(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the second focus of the hyperbola. This focus is on the negative side of the 'XAxis' of the hyperbola.

        """
        return _gp.gp_Hypr_Focus2(self, *args)

    def Location(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the location point of the hyperbola. It is the intersection point between the 'XAxis' and the 'YAxis'.

        """
        return _gp.gp_Hypr_Location(self, *args)

    def MajorRadius(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the major radius of the hyperbola. It is the radius on the 'XAxis' of the hyperbola.

        """
        return _gp.gp_Hypr_MajorRadius(self, *args)

    def MinorRadius(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the minor radius of the hyperbola. It is the radius on the 'YAxis' of the hyperbola.

        """
        return _gp.gp_Hypr_MinorRadius(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Hypr_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        gp_Hypr

        Description
        -----------
        Performs the symmetrical transformation of an hyperbola with respect to the point theP which is the center of the symmetry.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        gp_Hypr

        Description
        -----------
        Performs the symmetrical transformation of an hyperbola with respect to an axis placement which is the axis of the symmetry.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        gp_Hypr

        Description
        -----------
        Performs the symmetrical transformation of an hyperbola with respect to a plane. The axis placement theA2 locates the plane of the symmetry (Location, XDirection, YDirection).

        """
        return _gp.gp_Hypr_Mirrored(self, *args)

    def OtherBranch(self, *args):
        r"""
        Return
        -------
        gp_Hypr

        Description
        -----------
        Returns the branch of hyperbola obtained by doing the symmetrical transformation of <self> with respect to the 'YAxis' of <self>.

        """
        return _gp.gp_Hypr_OtherBranch(self, *args)

    def Parameter(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns p = (e * e - 1) * MajorRadius where e is the eccentricity of the hyperbola. Raises DomainError if MajorRadius = 0.0.

        """
        return _gp.gp_Hypr_Parameter(self, *args)

    def Position(self, *args):
        r"""
        Return
        -------
        gp_Ax2

        Description
        -----------
        Returns the coordinate system of the hyperbola.

        """
        return _gp.gp_Hypr_Position(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Hypr_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        gp_Hypr

        Description
        -----------
        Rotates an hyperbola. theA1 is the axis of the rotation. theAng is the angular value of the rotation in radians.

        """
        return _gp.gp_Hypr_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Hypr_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        gp_Hypr

        Description
        -----------
        Scales an hyperbola. theS is the scaling value.

        """
        return _gp.gp_Hypr_Scaled(self, *args)

    def SetAxis(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        Modifies this hyperbola, by redefining its local coordinate system so that: - its origin and 'main Direction' become those of the axis theA1 (the 'X Direction' and 'Y Direction' are then recomputed in the same way as for any gp_Ax2). Raises ConstructionError if the direction of theA1 is parallel to the direction of the 'XAxis' of the hyperbola.

        """
        return _gp.gp_Hypr_SetAxis(self, *args)

    def SetLocation(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        Modifies this hyperbola, by redefining its local coordinate system so that its origin becomes theP.

        """
        return _gp.gp_Hypr_SetLocation(self, *args)

    def SetMajorRadius(self, *args):
        r"""

        Parameters
        ----------
        theMajorRadius: float

        Return
        -------
        None

        Description
        -----------
        Modifies the major radius of this hyperbola. Exceptions Standard_ConstructionError if theMajorRadius is negative.

        """
        return _gp.gp_Hypr_SetMajorRadius(self, *args)

    def SetMinorRadius(self, *args):
        r"""

        Parameters
        ----------
        theMinorRadius: float

        Return
        -------
        None

        Description
        -----------
        Modifies the minor radius of this hyperbola. Exceptions Standard_ConstructionError if theMinorRadius is negative.

        """
        return _gp.gp_Hypr_SetMinorRadius(self, *args)

    def SetPosition(self, *args):
        r"""

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        Modifies this hyperbola, by redefining its local coordinate system so that it becomes A2.

        """
        return _gp.gp_Hypr_SetPosition(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Hypr_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        gp_Hypr

        Description
        -----------
        Transforms an hyperbola with the transformation theT from class Trsf.

        """
        return _gp.gp_Hypr_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Hypr_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        gp_Hypr

        Description
        -----------
        Translates an hyperbola in the direction of the vector theV. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        gp_Hypr

        Description
        -----------
        Translates an hyperbola from the point theP1 to the point theP2.

        """
        return _gp.gp_Hypr_Translated(self, *args)

    def XAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Computes an axis, whose - the origin is the center of this hyperbola, and - the unit vector is the 'X Direction' of the local coordinate system of this hyperbola. These axes are, the major axis (the 'X Axis') and of this hyperboReturns the 'XAxis' of the hyperbola.

        """
        return _gp.gp_Hypr_XAxis(self, *args)

    def YAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Computes an axis, whose - the origin is the center of this hyperbola, and - the unit vector is the 'Y Direction' of the local coordinate system of this hyperbola. These axes are the minor axis (the 'Y Axis') of this hyperbola.

        """
        return _gp.gp_Hypr_YAxis(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Hypr()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Hypr')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Hypr

# Register gp_Hypr in _gp:
_gp.gp_Hypr_swigregister(gp_Hypr)
class gp_Hypr2d(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"""
        Return
        -------
        None

        Description
        -----------
        Creates of an indefinite hyperbola.

        Parameters
        ----------
        theMajorAxis: gp_Ax2d
        theMajorRadius: float
        theMinorRadius: float
        theIsSense: bool (optional, default to Standard_True)

        Return
        -------
        None

        Description
        -----------
        Creates a hyperbola with radii theMajorRadius and theMinorRadius, centered on the origin of theMajorAxis and where the unit vector of theMajorAxis is the 'X Direction' of the local coordinate system of the hyperbola. This coordinate system is direct if theIsSense is true (the default value), and indirect if theIsSense is false. Warnings: It is yet possible to create an Hyperbola with theMajorRadius <= theMinorRadius. Raises ConstructionError if theMajorRadius < 0.0 or theMinorRadius < 0.0.

        Parameters
        ----------
        theA: gp_Ax22d
        theMajorRadius: float
        theMinorRadius: float

        Return
        -------
        None

        Description
        -----------
        a hyperbola with radii theMajorRadius and theMinorRadius, positioned in the plane by coordinate system theA where: - the origin of theA is the center of the hyperbola, - the 'X Direction' of theA defines the major axis of the hyperbola, that is, the major radius theMajorRadius is measured along this axis, and - the 'Y Direction' of theA defines the minor axis of the hyperbola, that is, the minor radius theMinorRadius is measured along this axis, and - the orientation (direct or indirect sense) of theA gives the implicit orientation of the hyperbola. Warnings: It is yet possible to create an Hyperbola with theMajorRadius <= theMinorRadius. Raises ConstructionError if theMajorRadius < 0.0 or theMinorRadius < 0.0.

        """
        _gp.gp_Hypr2d_swiginit(self, _gp.new_gp_Hypr2d(*args))

    def Asymptote1(self, *args):
        r"""
        Return
        -------
        gp_Ax2d

        Description
        -----------
        In the local coordinate system of the hyperbola the equation of the hyperbola is (X*X)/(A*A) - (Y*Y)/(B*B) = 1.0 and the equation of the first asymptote is Y = (B/A)*X where A is the major radius of the hyperbola and B the minor radius of the hyperbola. Raises ConstructionError if MajorRadius = 0.0.

        """
        return _gp.gp_Hypr2d_Asymptote1(self, *args)

    def Asymptote2(self, *args):
        r"""
        Return
        -------
        gp_Ax2d

        Description
        -----------
        In the local coordinate system of the hyperbola the equation of the hyperbola is (X*X)/(A*A) - (Y*Y)/(B*B) = 1.0 and the equation of the first asymptote is Y = -(B/A)*X where A is the major radius of the hyperbola and B the minor radius of the hyperbola. Raises ConstructionError if MajorRadius = 0.0.

        """
        return _gp.gp_Hypr2d_Asymptote2(self, *args)

    def Axis(self, *args):
        r"""
        Return
        -------
        gp_Ax22d

        Description
        -----------
        Returns the axisplacement of the hyperbola.

        """
        return _gp.gp_Hypr2d_Axis(self, *args)

    def Coefficients(self, *args):
        r"""

        Parameters
        ----------

        Return
        -------
        theA: float
        theB: float
        theC: float
        theD: float
        theE: float
        theF: float

        Description
        -----------
        Computes the coefficients of the implicit equation of the hyperbola: theA * (X**2) + theB * (Y**2) + 2*theC*(X*Y) + 2*theD*X + 2*theE*Y + theF = 0.

        """
        return _gp.gp_Hypr2d_Coefficients(self, *args)

    def ConjugateBranch1(self, *args):
        r"""
        Return
        -------
        gp_Hypr2d

        Description
        -----------
        Computes the branch of hyperbola which is on the positive side of the 'YAxis' of <self>.

        """
        return _gp.gp_Hypr2d_ConjugateBranch1(self, *args)

    def ConjugateBranch2(self, *args):
        r"""
        Return
        -------
        gp_Hypr2d

        Description
        -----------
        Computes the branch of hyperbola which is on the negative side of the 'YAxis' of <self>.

        """
        return _gp.gp_Hypr2d_ConjugateBranch2(self, *args)

    def Directrix1(self, *args):
        r"""
        Return
        -------
        gp_Ax2d

        Description
        -----------
        Computes the directrix which is the line normal to the XAxis of the hyperbola in the local plane (Z = 0) at a distance d = MajorRadius / e from the center of the hyperbola, where e is the eccentricity of the hyperbola. This line is parallel to the 'YAxis'. The intersection point between the 'Directrix1' and the 'XAxis' is the 'Location' point of the 'Directrix1'. This point is on the positive side of the 'XAxis'.

        """
        return _gp.gp_Hypr2d_Directrix1(self, *args)

    def Directrix2(self, *args):
        r"""
        Return
        -------
        gp_Ax2d

        Description
        -----------
        This line is obtained by the symmetrical transformation of 'Directrix1' with respect to the 'YAxis' of the hyperbola.

        """
        return _gp.gp_Hypr2d_Directrix2(self, *args)

    def Eccentricity(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the eccentricity of the hyperbola (e > 1). If f is the distance between the location of the hyperbola and the Focus1 then the eccentricity e = f / MajorRadius. Raises DomainError if MajorRadius = 0.0.

        """
        return _gp.gp_Hypr2d_Eccentricity(self, *args)

    def Focal(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the focal distance. It is the distance between the 'Location' of the hyperbola and 'Focus1' or 'Focus2'.

        """
        return _gp.gp_Hypr2d_Focal(self, *args)

    def Focus1(self, *args):
        r"""
        Return
        -------
        gp_Pnt2d

        Description
        -----------
        Returns the first focus of the hyperbola. This focus is on the positive side of the 'XAxis' of the hyperbola.

        """
        return _gp.gp_Hypr2d_Focus1(self, *args)

    def Focus2(self, *args):
        r"""
        Return
        -------
        gp_Pnt2d

        Description
        -----------
        Returns the second focus of the hyperbola. This focus is on the negative side of the 'XAxis' of the hyperbola.

        """
        return _gp.gp_Hypr2d_Focus2(self, *args)

    def IsDirect(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Returns true if the local coordinate system is direct and false in the other case.

        """
        return _gp.gp_Hypr2d_IsDirect(self, *args)

    def Location(self, *args):
        r"""
        Return
        -------
        gp_Pnt2d

        Description
        -----------
        Returns the location point of the hyperbola. It is the intersection point between the 'XAxis' and the 'YAxis'.

        """
        return _gp.gp_Hypr2d_Location(self, *args)

    def MajorRadius(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the major radius of the hyperbola (it is the radius corresponding to the 'XAxis' of the hyperbola).

        """
        return _gp.gp_Hypr2d_MajorRadius(self, *args)

    def MinorRadius(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the minor radius of the hyperbola (it is the radius corresponding to the 'YAxis' of the hyperbola).

        """
        return _gp.gp_Hypr2d_MinorRadius(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Hypr2d_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        gp_Hypr2d

        Description
        -----------
        Performs the symmetrical transformation of an hyperbola with respect to the point theP which is the center of the symmetry.

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        gp_Hypr2d

        Description
        -----------
        Performs the symmetrical transformation of an hyperbola with respect to an axis placement which is the axis of the symmetry.

        """
        return _gp.gp_Hypr2d_Mirrored(self, *args)

    def OtherBranch(self, *args):
        r"""
        Return
        -------
        gp_Hypr2d

        Description
        -----------
        Returns the branch of hyperbola obtained by doing the symmetrical transformation of <self> with respect to the 'YAxis' of <self>.

        """
        return _gp.gp_Hypr2d_OtherBranch(self, *args)

    def Parameter(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns p = (e * e - 1) * MajorRadius where e is the eccentricity of the hyperbola. Raises DomainError if MajorRadius = 0.0.

        """
        return _gp.gp_Hypr2d_Parameter(self, *args)

    def Reverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Hypr2d_Reverse(self, *args)

    def Reversed(self, *args):
        r"""
        Return
        -------
        gp_Hypr2d

        Description
        -----------
        Reverses the orientation of the local coordinate system of this hyperbola (the 'Y Axis' is reversed). Therefore, the implicit orientation of this hyperbola is reversed. Note: - Reverse assigns the result to this hyperbola, while - Reversed creates a new one.

        """
        return _gp.gp_Hypr2d_Reversed(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Hypr2d_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theAng: float

        Return
        -------
        gp_Hypr2d

        Description
        -----------
        Rotates an hyperbola. theP is the center of the rotation. theAng is the angular value of the rotation in radians.

        """
        return _gp.gp_Hypr2d_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theS: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Hypr2d_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theS: float

        Return
        -------
        gp_Hypr2d

        Description
        -----------
        Scales an hyperbola. <theS> is the scaling value. If <theS> is positive only the location point is modified. But if <theS> is negative the 'XAxis' is reversed and the 'YAxis' too.

        """
        return _gp.gp_Hypr2d_Scaled(self, *args)

    def SetAxis(self, *args):
        r"""

        Parameters
        ----------
        theA: gp_Ax22d

        Return
        -------
        None

        Description
        -----------
        Modifies this hyperbola, by redefining its local coordinate system so that it becomes theA.

        """
        return _gp.gp_Hypr2d_SetAxis(self, *args)

    def SetLocation(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        Modifies this hyperbola, by redefining its local coordinate system so that its origin becomes theP.

        """
        return _gp.gp_Hypr2d_SetLocation(self, *args)

    def SetMajorRadius(self, *args):
        r"""

        Parameters
        ----------
        theMajorRadius: float

        Return
        -------
        None

        Description
        -----------
        Modifies the major or minor radius of this hyperbola. Exceptions Standard_ConstructionError if theMajorRadius or MinorRadius is negative.

        """
        return _gp.gp_Hypr2d_SetMajorRadius(self, *args)

    def SetMinorRadius(self, *args):
        r"""

        Parameters
        ----------
        theMinorRadius: float

        Return
        -------
        None

        Description
        -----------
        Modifies the major or minor radius of this hyperbola. Exceptions Standard_ConstructionError if MajorRadius or theMinorRadius is negative.

        """
        return _gp.gp_Hypr2d_SetMinorRadius(self, *args)

    def SetXAxis(self, *args):
        r"""

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        Changes the major axis of the hyperbola. The minor axis is recomputed and the location of the hyperbola too.

        """
        return _gp.gp_Hypr2d_SetXAxis(self, *args)

    def SetYAxis(self, *args):
        r"""

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        Changes the minor axis of the hyperbola.The minor axis is recomputed and the location of the hyperbola too.

        """
        return _gp.gp_Hypr2d_SetYAxis(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Hypr2d_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        gp_Hypr2d

        Description
        -----------
        Transforms an hyperbola with the transformation theT from class Trsf2d.

        """
        return _gp.gp_Hypr2d_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt2d
        theP2: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Hypr2d_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        gp_Hypr2d

        Description
        -----------
        Translates an hyperbola in the direction of the vector theV. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt2d
        theP2: gp_Pnt2d

        Return
        -------
        gp_Hypr2d

        Description
        -----------
        Translates an hyperbola from the point theP1 to the point theP2.

        """
        return _gp.gp_Hypr2d_Translated(self, *args)

    def XAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax2d

        Description
        -----------
        Computes an axis whose - the origin is the center of this hyperbola, and - the unit vector is the 'X Direction' or 'Y Direction' respectively of the local coordinate system of this hyperbola Returns the major axis of the hyperbola.

        """
        return _gp.gp_Hypr2d_XAxis(self, *args)

    def YAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax2d

        Description
        -----------
        Computes an axis whose - the origin is the center of this hyperbola, and - the unit vector is the 'X Direction' or 'Y Direction' respectively of the local coordinate system of this hyperbola Returns the minor axis of the hyperbola.

        """
        return _gp.gp_Hypr2d_YAxis(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Hypr2d()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Hypr2d')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Hypr2d

# Register gp_Hypr2d in _gp:
_gp.gp_Hypr2d_swigregister(gp_Hypr2d)
class gp_Lin(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"""
        Return
        -------
        None

        Description
        -----------
        Creates a Line corresponding to Z axis of the reference coordinate system.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        Creates a line defined by axis theA1.

        Parameters
        ----------
        theP: gp_Pnt
        theV: gp_Dir

        Return
        -------
        None

        Description
        -----------
        Creates a line passing through point theP and parallel to vector theV (theP and theV are, respectively, the origin and the unit vector of the positioning axis of the line).

        """
        _gp.gp_Lin_swiginit(self, _gp.new_gp_Lin(*args))

    def Angle(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Lin

        Return
        -------
        float

        Description
        -----------
        Computes the angle between two lines in radians.

        """
        return _gp.gp_Lin_Angle(self, *args)

    def Contains(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theLinearTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns true if this line contains the point theP, that is, if the distance between point theP and this line is less than or equal to theLinearTolerance..

        """
        return _gp.gp_Lin_Contains(self, *args)

    def Direction(self, *args):
        r"""
        Return
        -------
        gp_Dir

        Description
        -----------
        Returns the direction of the line.

        """
        return _gp.gp_Lin_Direction(self, *args)

    def Distance(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        float

        Description
        -----------
        Computes the distance between <self> and the point theP.

        Parameters
        ----------
        theOther: gp_Lin

        Return
        -------
        float

        Description
        -----------
        Computes the distance between two lines.

        """
        return _gp.gp_Lin_Distance(self, *args)

    def Location(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the location point (origin) of the line.

        """
        return _gp.gp_Lin_Location(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Lin_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        gp_Lin

        Description
        -----------
        Performs the symmetrical transformation of a line with respect to the point theP which is the center of the symmetry.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        gp_Lin

        Description
        -----------
        Performs the symmetrical transformation of a line with respect to an axis placement which is the axis of the symmetry.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        gp_Lin

        Description
        -----------
        Performs the symmetrical transformation of a line with respect to a plane. The axis placement <theA2> locates the plane of the symmetry: (Location, XDirection, YDirection).

        """
        return _gp.gp_Lin_Mirrored(self, *args)

    def Normal(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        gp_Lin

        Description
        -----------
        Computes the line normal to the direction of <self>, passing through the point theP. Raises ConstructionError if the distance between <self> and the point theP is lower or equal to Resolution from gp because there is an infinity of solutions in 3D space.

        """
        return _gp.gp_Lin_Normal(self, *args)

    def Position(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the axis placement one axis with the same location and direction as <self>.

        """
        return _gp.gp_Lin_Position(self, *args)

    def Reverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Lin_Reverse(self, *args)

    def Reversed(self, *args):
        r"""
        Return
        -------
        gp_Lin

        Description
        -----------
        Reverses the direction of the line. Note: - Reverse assigns the result to this line, while - Reversed creates a new one.

        """
        return _gp.gp_Lin_Reversed(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Lin_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        gp_Lin

        Description
        -----------
        Rotates a line. A1 is the axis of the rotation. Ang is the angular value of the rotation in radians.

        """
        return _gp.gp_Lin_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Lin_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        gp_Lin

        Description
        -----------
        Scales a line. theS is the scaling value. The 'Location' point (origin) of the line is modified. The 'Direction' is reversed if the scale is negative.

        """
        return _gp.gp_Lin_Scaled(self, *args)

    def SetDirection(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Dir

        Return
        -------
        None

        Description
        -----------
        Changes the direction of the line.

        """
        return _gp.gp_Lin_SetDirection(self, *args)

    def SetLocation(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        Changes the location point (origin) of the line.

        """
        return _gp.gp_Lin_SetLocation(self, *args)

    def SetPosition(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        Complete redefinition of the line. The 'Location' point of <theA1> is the origin of the line. The 'Direction' of <theA1> is the direction of the line.

        """
        return _gp.gp_Lin_SetPosition(self, *args)

    def SquareDistance(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        float

        Description
        -----------
        Computes the square distance between <self> and the point theP.

        Parameters
        ----------
        theOther: gp_Lin

        Return
        -------
        float

        Description
        -----------
        Computes the square distance between two lines.

        """
        return _gp.gp_Lin_SquareDistance(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Lin_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        gp_Lin

        Description
        -----------
        Transforms a line with the transformation theT from class Trsf.

        """
        return _gp.gp_Lin_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Lin_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        gp_Lin

        Description
        -----------
        Translates a line in the direction of the vector theV. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        gp_Lin

        Description
        -----------
        Translates a line from the point theP1 to the point theP2.

        """
        return _gp.gp_Lin_Translated(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Lin()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Lin')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Lin

# Register gp_Lin in _gp:
_gp.gp_Lin_swigregister(gp_Lin)
class gp_Lin2d(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"""
        Return
        -------
        None

        Description
        -----------
        Creates a Line corresponding to X axis of the reference coordinate system.

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        Creates a line located with theA.

        Parameters
        ----------
        theP: gp_Pnt2d
        theV: gp_Dir2d

        Return
        -------
        None

        Description
        -----------
        <theP> is the location point (origin) of the line and <theV> is the direction of the line.

        Parameters
        ----------
        theA: float
        theB: float
        theC: float

        Return
        -------
        None

        Description
        -----------
        Creates the line from the equation theA*X + theB*Y + theC = 0.0 Raises ConstructionError if Sqrt(theA*theA + theB*theB) <= Resolution from gp. Raised if Sqrt(theA*theA + theB*theB) <= Resolution from gp.

        """
        _gp.gp_Lin2d_swiginit(self, _gp.new_gp_Lin2d(*args))

    def Angle(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Lin2d

        Return
        -------
        float

        Description
        -----------
        Computes the angle between two lines in radians.

        """
        return _gp.gp_Lin2d_Angle(self, *args)

    def Coefficients(self, *args):
        r"""

        Parameters
        ----------

        Return
        -------
        theA: float
        theB: float
        theC: float

        Description
        -----------
        Returns the normalized coefficients of the line: theA * X + theB * Y + theC = 0.

        """
        return _gp.gp_Lin2d_Coefficients(self, *args)

    def Contains(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theLinearTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns true if this line contains the point theP, that is, if the distance between point theP and this line is less than or equal to theLinearTolerance.

        """
        return _gp.gp_Lin2d_Contains(self, *args)

    def Direction(self, *args):
        r"""
        Return
        -------
        gp_Dir2d

        Description
        -----------
        Returns the direction of the line.

        """
        return _gp.gp_Lin2d_Direction(self, *args)

    def Distance(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        float

        Description
        -----------
        Computes the distance between <self> and the point <theP>.

        Parameters
        ----------
        theOther: gp_Lin2d

        Return
        -------
        float

        Description
        -----------
        Computes the distance between two lines.

        """
        return _gp.gp_Lin2d_Distance(self, *args)

    def Location(self, *args):
        r"""
        Return
        -------
        gp_Pnt2d

        Description
        -----------
        Returns the location point (origin) of the line.

        """
        return _gp.gp_Lin2d_Location(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Lin2d_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        gp_Lin2d

        Description
        -----------
        Performs the symmetrical transformation of a line with respect to the point <theP> which is the center of the symmetry.

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        gp_Lin2d

        Description
        -----------
        Performs the symmetrical transformation of a line with respect to an axis placement which is the axis of the symmetry.

        """
        return _gp.gp_Lin2d_Mirrored(self, *args)

    def Normal(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        gp_Lin2d

        Description
        -----------
        Computes the line normal to the direction of <self>, passing through the point <theP>.

        """
        return _gp.gp_Lin2d_Normal(self, *args)

    def Position(self, *args):
        r"""
        Return
        -------
        gp_Ax2d

        Description
        -----------
        Returns the axis placement one axis with the same location and direction as <self>.

        """
        return _gp.gp_Lin2d_Position(self, *args)

    def Reverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Lin2d_Reverse(self, *args)

    def Reversed(self, *args):
        r"""
        Return
        -------
        gp_Lin2d

        Description
        -----------
        Reverses the positioning axis of this line. Note: - Reverse assigns the result to this line, while - Reversed creates a new one.

        """
        return _gp.gp_Lin2d_Reversed(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Lin2d_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theAng: float

        Return
        -------
        gp_Lin2d

        Description
        -----------
        Rotates a line. theP is the center of the rotation. theAng is the angular value of the rotation in radians.

        """
        return _gp.gp_Lin2d_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theS: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Lin2d_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theS: float

        Return
        -------
        gp_Lin2d

        Description
        -----------
        Scales a line. theS is the scaling value. Only the origin of the line is modified.

        """
        return _gp.gp_Lin2d_Scaled(self, *args)

    def SetDirection(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Dir2d

        Return
        -------
        None

        Description
        -----------
        Changes the direction of the line.

        """
        return _gp.gp_Lin2d_SetDirection(self, *args)

    def SetLocation(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        Changes the origin of the line.

        """
        return _gp.gp_Lin2d_SetLocation(self, *args)

    def SetPosition(self, *args):
        r"""

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        Complete redefinition of the line. The 'Location' point of <theA> is the origin of the line. The 'Direction' of <theA> is the direction of the line.

        """
        return _gp.gp_Lin2d_SetPosition(self, *args)

    def SquareDistance(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        float

        Description
        -----------
        Computes the square distance between <self> and the point <theP>.

        Parameters
        ----------
        theOther: gp_Lin2d

        Return
        -------
        float

        Description
        -----------
        Computes the square distance between two lines.

        """
        return _gp.gp_Lin2d_SquareDistance(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Lin2d_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        gp_Lin2d

        Description
        -----------
        Transforms a line with the transformation theT from class Trsf2d.

        """
        return _gp.gp_Lin2d_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt2d
        theP2: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Lin2d_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        gp_Lin2d

        Description
        -----------
        Translates a line in the direction of the vector theV. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt2d
        theP2: gp_Pnt2d

        Return
        -------
        gp_Lin2d

        Description
        -----------
        Translates a line from the point theP1 to the point theP2.

        """
        return _gp.gp_Lin2d_Translated(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Lin2d()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Lin2d')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Lin2d

# Register gp_Lin2d in _gp:
_gp.gp_Lin2d_swigregister(gp_Lin2d)
class gp_Mat(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"""
        Return
        -------
        None

        Description
        -----------
        creates a matrix with null coefficients.

        Parameters
        ----------
        theA11: float
        theA12: float
        theA13: float
        theA21: float
        theA22: float
        theA23: float
        theA31: float
        theA32: float
        theA33: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theCol1: gp_XYZ
        theCol2: gp_XYZ
        theCol3: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        Creates a matrix. theCol1, theCol2, theCol3 are the 3 columns of the matrix.

        """
        _gp.gp_Mat_swiginit(self, _gp.new_gp_Mat(*args))

    def Add(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Mat

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat_Add(self, *args)

    def Added(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Mat

        Return
        -------
        gp_Mat

        Description
        -----------
        Computes the sum of this matrix and the matrix theOther for each coefficient of the matrix: <self>.Coef(i,j) + <theOther>.Coef(i,j).

        """
        return _gp.gp_Mat_Added(self, *args)

    def GetChangeValue(self, theRow, theCol):
        r"""GetChangeValue(gp_Mat self, Standard_Integer const theRow, Standard_Integer const theCol) -> Standard_Real"""
        return _gp.gp_Mat_GetChangeValue(self, theRow, theCol)

    def SetChangeValue(self, theRow, theCol, value):
        r"""SetChangeValue(gp_Mat self, Standard_Integer const theRow, Standard_Integer const theCol, Standard_Real value)"""
        return _gp.gp_Mat_SetChangeValue(self, theRow, theCol, value)

    def Column(self, *args):
        r"""

        Parameters
        ----------
        theCol: int

        Return
        -------
        gp_XYZ

        Description
        -----------
        Returns the column of theCol index. Raises OutOfRange if theCol < 1 or theCol > 3.

        """
        return _gp.gp_Mat_Column(self, *args)

    def Determinant(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the determinant of the matrix.

        """
        return _gp.gp_Mat_Determinant(self, *args)

    def Diagonal(self, *args):
        r"""
        Return
        -------
        gp_XYZ

        Description
        -----------
        Returns the main diagonal of the matrix.

        """
        return _gp.gp_Mat_Diagonal(self, *args)

    def Divide(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat_Divide(self, *args)

    def Divided(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        gp_Mat

        Description
        -----------
        Divides all the coefficients of the matrix by Scalar.

        """
        return _gp.gp_Mat_Divided(self, *args)

    def DumpJson(self, depth=-1):
        r"""

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        """
        return _gp.gp_Mat_DumpJson(self, depth)

    def Invert(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat_Invert(self, *args)

    def Inverted(self, *args):
        r"""
        Return
        -------
        gp_Mat

        Description
        -----------
        Inverses the matrix and raises if the matrix is singular. - Invert assigns the result to this matrix, while - Inverted creates a new one. Warning The Gauss LU decomposition is used to invert the matrix. Consequently, the matrix is considered as singular if the largest pivot found is less than or equal to gp::Resolution(). Exceptions Standard_ConstructionError if this matrix is singular, and therefore cannot be inverted.

        """
        return _gp.gp_Mat_Inverted(self, *args)

    def IsSingular(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        The Gauss LU decomposition is used to invert the matrix (see Math package) so the matrix is considered as singular if the largest pivot found is lower or equal to Resolution from gp.

        """
        return _gp.gp_Mat_IsSingular(self, *args)

    def Multiplied(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Mat

        Return
        -------
        gp_Mat

        Description
        -----------
        Computes the product of two matrices <self> * <Other>.

        Parameters
        ----------
        theScalar: float

        Return
        -------
        gp_Mat

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat_Multiplied(self, *args)

    def Multiply(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Mat

        Return
        -------
        None

        Description
        -----------
        Computes the product of two matrices <self> = <Other> * <self>.

        Parameters
        ----------
        theScalar: float

        Return
        -------
        None

        Description
        -----------
        Multiplies all the coefficients of the matrix by Scalar.

        """
        return _gp.gp_Mat_Multiply(self, *args)

    def Power(self, *args):
        r"""

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

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat_Power(self, *args)

    def Powered(self, *args):
        r"""

        Parameters
        ----------
        theN: int

        Return
        -------
        gp_Mat

        Description
        -----------
        Computes <self> = <self> * <self> * .......* <self>, theN time. if theN = 0 <self> = Identity if theN < 0 <self> = <self>.Invert() *...........* <self>.Invert(). If theN < 0 an exception will be raised if the matrix is not inversible.

        """
        return _gp.gp_Mat_Powered(self, *args)

    def PreMultiply(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Mat

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat_PreMultiply(self, *args)

    def Row(self, *args):
        r"""

        Parameters
        ----------
        theRow: int

        Return
        -------
        gp_XYZ

        Description
        -----------
        returns the row of theRow index. Raises OutOfRange if theRow < 1 or theRow > 3.

        """
        return _gp.gp_Mat_Row(self, *args)

    def SetCol(self, *args):
        r"""

        Parameters
        ----------
        theCol: int
        theValue: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        Assigns the three coordinates of theValue to the column of index theCol of this matrix. Raises OutOfRange if theCol < 1 or theCol > 3.

        """
        return _gp.gp_Mat_SetCol(self, *args)

    def SetCols(self, *args):
        r"""

        Parameters
        ----------
        theCol1: gp_XYZ
        theCol2: gp_XYZ
        theCol3: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        Assigns the number triples theCol1, theCol2, theCol3 to the three columns of this matrix.

        """
        return _gp.gp_Mat_SetCols(self, *args)

    def SetCross(self, *args):
        r"""

        Parameters
        ----------
        theRef: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        Modifies the matrix M so that applying it to any number triple (X, Y, Z) produces the same result as the cross product of theRef and the number triple (X, Y, Z): i.e.: M * {X,Y,Z}t = theRef.Cross({X, Y ,Z}) this matrix is anti symmetric. To apply this matrix to the triplet {XYZ} is the same as to do the cross product between the triplet theRef and the triplet {XYZ}. Note: this matrix is anti-symmetric.

        """
        return _gp.gp_Mat_SetCross(self, *args)

    def SetDiagonal(self, *args):
        r"""

        Parameters
        ----------
        theX1: float
        theX2: float
        theX3: float

        Return
        -------
        None

        Description
        -----------
        Modifies the main diagonal of the matrix. @code <self>.Value (1, 1) = theX1 <self>.Value (2, 2) = theX2 <self>.Value (3, 3) = theX3 @endcode The other coefficients of the matrix are not modified.

        """
        return _gp.gp_Mat_SetDiagonal(self, *args)

    def SetDot(self, *args):
        r"""

        Parameters
        ----------
        theRef: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        Modifies this matrix so that applying it to any number triple (X, Y, Z) produces the same result as the scalar product of theRef and the number triple (X, Y, Z): this * (X,Y,Z) = theRef.(X,Y,Z) Note: this matrix is symmetric.

        """
        return _gp.gp_Mat_SetDot(self, *args)

    def SetIdentity(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Modifies this matrix so that it represents the Identity matrix.

        """
        return _gp.gp_Mat_SetIdentity(self, *args)

    def SetRotation(self, *args):
        r"""

        Parameters
        ----------
        theAxis: gp_XYZ
        theAng: float

        Return
        -------
        None

        Description
        -----------
        Modifies this matrix so that it represents a rotation. theAng is the angular value in radians and the XYZ axis gives the direction of the rotation. Raises ConstructionError if XYZ.Modulus() <= Resolution().

        """
        return _gp.gp_Mat_SetRotation(self, *args)

    def SetRow(self, *args):
        r"""

        Parameters
        ----------
        theRow: int
        theValue: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        Assigns the three coordinates of Value to the row of index theRow of this matrix. Raises OutOfRange if theRow < 1 or theRow > 3.

        """
        return _gp.gp_Mat_SetRow(self, *args)

    def SetRows(self, *args):
        r"""

        Parameters
        ----------
        theRow1: gp_XYZ
        theRow2: gp_XYZ
        theRow3: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        Assigns the number triples theRow1, theRow2, theRow3 to the three rows of this matrix.

        """
        return _gp.gp_Mat_SetRows(self, *args)

    def SetScale(self, *args):
        r"""

        Parameters
        ----------
        theS: float

        Return
        -------
        None

        Description
        -----------
        Modifies the matrix so that it represents a scaling transformation, where theS is the scale factor.: @code | theS 0.0 0.0 | <self> = | 0.0 theS 0.0 | | 0.0 0.0 theS | @endcode.

        """
        return _gp.gp_Mat_SetScale(self, *args)

    def SetValue(self, *args):
        r"""

        Parameters
        ----------
        theRow: int
        theCol: int
        theValue: float

        Return
        -------
        None

        Description
        -----------
        Assigns <theValue> to the coefficient of row theRow, column theCol of this matrix. Raises OutOfRange if theRow < 1 or theRow > 3 or theCol < 1 or theCol > 3.

        """
        return _gp.gp_Mat_SetValue(self, *args)

    def Subtract(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Mat

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat_Subtract(self, *args)

    def Subtracted(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Mat

        Return
        -------
        gp_Mat

        Description
        -----------
        cOmputes for each coefficient of the matrix: <self>.Coef(i,j) - <theOther>.Coef(i,j).

        """
        return _gp.gp_Mat_Subtracted(self, *args)

    def Transpose(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat_Transpose(self, *args)

    def Transposed(self, *args):
        r"""
        Return
        -------
        gp_Mat

        Description
        -----------
        Transposes the matrix. A(j, i) -> A (i, j).

        """
        return _gp.gp_Mat_Transposed(self, *args)

    def Value(self, *args):
        r"""

        Parameters
        ----------
        theRow: int
        theCol: int

        Return
        -------
        float

        Description
        -----------
        Returns the coefficient of range (theRow, theCol) Raises OutOfRange if theRow < 1 or theRow > 3 or theCol < 1 or theCol > 3.

        """
        return _gp.gp_Mat_Value(self, *args)

    def __mul__(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Mat

        Return
        -------
        gp_Mat

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theScalar: float

        Return
        -------
        gp_Mat

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat___mul__(self, *args)

    def __imul__(self, right):
        self.__imul_wrapper__(right)
        return self


    def __imul_wrapper__(self, *args):
        r"""
        __imul_wrapper__(gp_Mat self, gp_Mat other)
        __imul_wrapper__(gp_Mat self, Standard_Real const other)
        """
        return _gp.gp_Mat___imul_wrapper__(self, *args)

    def __imul__(self, right):
        self.__imul_wrapper__(right)
        return self


    def __add__(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Mat

        Return
        -------
        gp_Mat

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat___add__(self, *args)

    def __iadd_wrapper__(self, other):
        r"""__iadd_wrapper__(gp_Mat self, gp_Mat other)"""
        return _gp.gp_Mat___iadd_wrapper__(self, other)

    def __iadd__(self, right):
        self.__iadd_wrapper__(right)
        return self


    def __sub__(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Mat

        Return
        -------
        gp_Mat

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat___sub__(self, *args)

    def __isub_wrapper__(self, other):
        r"""__isub_wrapper__(gp_Mat self, gp_Mat other)"""
        return _gp.gp_Mat___isub_wrapper__(self, other)

    def __isub__(self, right):
        self.__isub_wrapper__(right)
        return self


    def __truediv__(self, *args):
        return _gp.gp_Mat___truediv__(self, *args)
    __div__ = __truediv__



    def __itruediv_wrapper__(self, other):
        r"""__itruediv_wrapper__(gp_Mat self, Standard_Real const other)"""
        return _gp.gp_Mat___itruediv_wrapper__(self, other)

    def __itruediv__(self, right):
        self.__itruediv_wrapper__(right)
        return self


    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Mat()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Mat')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Mat

# Register gp_Mat in _gp:
_gp.gp_Mat_swigregister(gp_Mat)
class gp_Mat2d(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"""
        Return
        -------
        None

        Description
        -----------
        Creates a matrix with null coefficients.

        Parameters
        ----------
        theCol1: gp_XY
        theCol2: gp_XY

        Return
        -------
        None

        Description
        -----------
        theCol1, theCol2 are the 2 columns of the matrix.

        """
        _gp.gp_Mat2d_swiginit(self, _gp.new_gp_Mat2d(*args))

    def Add(self, *args):
        r"""

        Parameters
        ----------
        Other: gp_Mat2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat2d_Add(self, *args)

    def Added(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Mat2d

        Return
        -------
        gp_Mat2d

        Description
        -----------
        Computes the sum of this matrix and the matrix theOther.for each coefficient of the matrix: @code <self>.Coef(i,j) + <theOther>.Coef(i,j) @endcode Note: - operator += assigns the result to this matrix, while - operator + creates a new one.

        """
        return _gp.gp_Mat2d_Added(self, *args)

    def GetChangeValue(self, theRow, theCol):
        r"""GetChangeValue(gp_Mat2d self, Standard_Integer const theRow, Standard_Integer const theCol) -> Standard_Real"""
        return _gp.gp_Mat2d_GetChangeValue(self, theRow, theCol)

    def SetChangeValue(self, theRow, theCol, value):
        r"""SetChangeValue(gp_Mat2d self, Standard_Integer const theRow, Standard_Integer const theCol, Standard_Real value)"""
        return _gp.gp_Mat2d_SetChangeValue(self, theRow, theCol, value)

    def Column(self, *args):
        r"""

        Parameters
        ----------
        theCol: int

        Return
        -------
        gp_XY

        Description
        -----------
        Returns the column of theCol index. Raises OutOfRange if theCol < 1 or theCol > 2.

        """
        return _gp.gp_Mat2d_Column(self, *args)

    def Determinant(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the determinant of the matrix.

        """
        return _gp.gp_Mat2d_Determinant(self, *args)

    def Diagonal(self, *args):
        r"""
        Return
        -------
        gp_XY

        Description
        -----------
        Returns the main diagonal of the matrix.

        """
        return _gp.gp_Mat2d_Diagonal(self, *args)

    def Divide(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat2d_Divide(self, *args)

    def Divided(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        gp_Mat2d

        Description
        -----------
        Divides all the coefficients of the matrix by a scalar.

        """
        return _gp.gp_Mat2d_Divided(self, *args)

    def Invert(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat2d_Invert(self, *args)

    def Inverted(self, *args):
        r"""
        Return
        -------
        gp_Mat2d

        Description
        -----------
        Inverses the matrix and raises exception if the matrix is singular.

        """
        return _gp.gp_Mat2d_Inverted(self, *args)

    def IsSingular(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Returns true if this matrix is singular (and therefore, cannot be inverted). The Gauss LU decomposition is used to invert the matrix so the matrix is considered as singular if the largest pivot found is lower or equal to Resolution from gp.

        """
        return _gp.gp_Mat2d_IsSingular(self, *args)

    def Multiplied(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Mat2d

        Return
        -------
        gp_Mat2d

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theScalar: float

        Return
        -------
        gp_Mat2d

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat2d_Multiplied(self, *args)

    def Multiply(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Mat2d

        Return
        -------
        None

        Description
        -----------
        Computes the product of two matrices <self> * <theOther>.

        Parameters
        ----------
        theScalar: float

        Return
        -------
        None

        Description
        -----------
        Multiplies all the coefficients of the matrix by a scalar.

        """
        return _gp.gp_Mat2d_Multiply(self, *args)

    def Power(self, *args):
        r"""

        Parameters
        ----------
        theN: int

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat2d_Power(self, *args)

    def Powered(self, *args):
        r"""

        Parameters
        ----------
        theN: int

        Return
        -------
        gp_Mat2d

        Description
        -----------
        computes <self> = <self> * <self> * .......* <self>, theN time. if theN = 0 <self> = Identity if theN < 0 <self> = <self>.Invert() *...........* <self>.Invert(). If theN < 0 an exception can be raised if the matrix is not inversible.

        """
        return _gp.gp_Mat2d_Powered(self, *args)

    def PreMultiply(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Mat2d

        Return
        -------
        None

        Description
        -----------
        Modifies this matrix by premultiplying it by the matrix Other <self> = theOther * <self>.

        """
        return _gp.gp_Mat2d_PreMultiply(self, *args)

    def Row(self, *args):
        r"""

        Parameters
        ----------
        theRow: int

        Return
        -------
        gp_XY

        Description
        -----------
        Returns the row of index theRow. Raised if theRow < 1 or theRow > 2.

        """
        return _gp.gp_Mat2d_Row(self, *args)

    def SetCol(self, *args):
        r"""

        Parameters
        ----------
        theCol: int
        theValue: gp_XY

        Return
        -------
        None

        Description
        -----------
        Assigns the two coordinates of theValue to the column of range theCol of this matrix Raises OutOfRange if theCol < 1 or theCol > 2.

        """
        return _gp.gp_Mat2d_SetCol(self, *args)

    def SetCols(self, *args):
        r"""

        Parameters
        ----------
        theCol1: gp_XY
        theCol2: gp_XY

        Return
        -------
        None

        Description
        -----------
        Assigns the number pairs theCol1, theCol2 to the two columns of this matrix.

        """
        return _gp.gp_Mat2d_SetCols(self, *args)

    def SetDiagonal(self, *args):
        r"""

        Parameters
        ----------
        theX1: float
        theX2: float

        Return
        -------
        None

        Description
        -----------
        Modifies the main diagonal of the matrix. @code <self>.Value (1, 1) = theX1 <self>.Value (2, 2) = theX2 @endcode The other coefficients of the matrix are not modified.

        """
        return _gp.gp_Mat2d_SetDiagonal(self, *args)

    def SetIdentity(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Modifies this matrix, so that it represents the Identity matrix.

        """
        return _gp.gp_Mat2d_SetIdentity(self, *args)

    def SetRotation(self, *args):
        r"""

        Parameters
        ----------
        theAng: float

        Return
        -------
        None

        Description
        -----------
        Modifies this matrix, so that it represents a rotation. theAng is the angular value in radian of the rotation.

        """
        return _gp.gp_Mat2d_SetRotation(self, *args)

    def SetRow(self, *args):
        r"""

        Parameters
        ----------
        theRow: int
        theValue: gp_XY

        Return
        -------
        None

        Description
        -----------
        Assigns the two coordinates of theValue to the row of index theRow of this matrix. Raises OutOfRange if theRow < 1 or theRow > 2.

        """
        return _gp.gp_Mat2d_SetRow(self, *args)

    def SetRows(self, *args):
        r"""

        Parameters
        ----------
        theRow1: gp_XY
        theRow2: gp_XY

        Return
        -------
        None

        Description
        -----------
        Assigns the number pairs theRow1, theRow2 to the two rows of this matrix.

        """
        return _gp.gp_Mat2d_SetRows(self, *args)

    def SetScale(self, *args):
        r"""

        Parameters
        ----------
        theS: float

        Return
        -------
        None

        Description
        -----------
        Modifies the matrix such that it represents a scaling transformation, where theS is the scale factor: @code | theS 0.0 | <self> = | 0.0 theS | @endcode.

        """
        return _gp.gp_Mat2d_SetScale(self, *args)

    def SetValue(self, *args):
        r"""

        Parameters
        ----------
        theRow: int
        theCol: int
        theValue: float

        Return
        -------
        None

        Description
        -----------
        Assigns <theValue> to the coefficient of row theRow, column theCol of this matrix. Raises OutOfRange if theRow < 1 or theRow > 2 or theCol < 1 or theCol > 2.

        """
        return _gp.gp_Mat2d_SetValue(self, *args)

    def Subtract(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Mat2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat2d_Subtract(self, *args)

    def Subtracted(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Mat2d

        Return
        -------
        gp_Mat2d

        Description
        -----------
        Computes for each coefficient of the matrix: @code <self>.Coef(i,j) - <theOther>.Coef(i,j) @endcode.

        """
        return _gp.gp_Mat2d_Subtracted(self, *args)

    def Transpose(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat2d_Transpose(self, *args)

    def Transposed(self, *args):
        r"""
        Return
        -------
        gp_Mat2d

        Description
        -----------
        Transposes the matrix. A(j, i) -> A (i, j).

        """
        return _gp.gp_Mat2d_Transposed(self, *args)

    def Value(self, *args):
        r"""

        Parameters
        ----------
        theRow: int
        theCol: int

        Return
        -------
        float

        Description
        -----------
        Returns the coefficient of range (ttheheRow, theCol) Raises OutOfRange if theRow < 1 or theRow > 2 or theCol < 1 or theCol > 2.

        """
        return _gp.gp_Mat2d_Value(self, *args)

    def __mul__(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Mat2d

        Return
        -------
        gp_Mat2d

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theScalar: float

        Return
        -------
        gp_Mat2d

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat2d___mul__(self, *args)

    def __imul_wrapper__(self, other):
        r"""__imul_wrapper__(gp_Mat2d self, Standard_Real const other)"""
        return _gp.gp_Mat2d___imul_wrapper__(self, other)

    def __imul__(self, right):
        self.__imul_wrapper__(right)
        return self


    def __add__(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Mat2d

        Return
        -------
        gp_Mat2d

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat2d___add__(self, *args)

    def __iadd_wrapper__(self, other):
        r"""__iadd_wrapper__(gp_Mat2d self, gp_Mat2d other)"""
        return _gp.gp_Mat2d___iadd_wrapper__(self, other)

    def __iadd__(self, right):
        self.__iadd_wrapper__(right)
        return self


    def __sub__(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Mat2d

        Return
        -------
        gp_Mat2d

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Mat2d___sub__(self, *args)

    def __isub_wrapper__(self, other):
        r"""__isub_wrapper__(gp_Mat2d self, gp_Mat2d other)"""
        return _gp.gp_Mat2d___isub_wrapper__(self, other)

    def __isub__(self, right):
        self.__isub_wrapper__(right)
        return self


    def __truediv__(self, *args):
        return _gp.gp_Mat2d___truediv__(self, *args)
    __div__ = __truediv__



    def __itruediv_wrapper__(self, other):
        r"""__itruediv_wrapper__(gp_Mat2d self, Standard_Real const other)"""
        return _gp.gp_Mat2d___itruediv_wrapper__(self, other)

    def __itruediv__(self, right):
        self.__itruediv_wrapper__(right)
        return self


    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Mat2d()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Mat2d')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Mat2d

# Register gp_Mat2d in _gp:
_gp.gp_Mat2d_swigregister(gp_Mat2d)
class gp_Parab(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"""
        Return
        -------
        None

        Description
        -----------
        Creates an indefinite Parabola.

        Parameters
        ----------
        theA2: gp_Ax2
        theFocal: float

        Return
        -------
        None

        Description
        -----------
        Creates a parabola with its local coordinate system 'theA2' and it's focal length 'Focal'. The XDirection of theA2 defines the axis of symmetry of the parabola. The YDirection of theA2 is parallel to the directrix of the parabola. The Location point of theA2 is the vertex of the parabola Raises ConstructionError if theFocal < 0.0 Raised if theFocal < 0.0.

        Parameters
        ----------
        theD: gp_Ax1
        theF: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        theD is the directrix of the parabola and theF the focus point. The symmetry axis (XAxis) of the parabola is normal to the directrix and pass through the focus point theF, but its location point is the vertex of the parabola. The YAxis of the parabola is parallel to theD and its location point is the vertex of the parabola. The normal to the plane of the parabola is the cross product between the XAxis and the YAxis.

        """
        _gp.gp_Parab_swiginit(self, _gp.new_gp_Parab(*args))

    def Axis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the main axis of the parabola. It is the axis normal to the plane of the parabola passing through the vertex of the parabola.

        """
        return _gp.gp_Parab_Axis(self, *args)

    def Directrix(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Computes the directrix of this parabola. The directrix is: - a line parallel to the 'Y Direction' of the local coordinate system of this parabola, and - located on the negative side of the axis of symmetry, at a distance from the apex which is equal to the focal length of this parabola. The directrix is returned as an axis (a gp_Ax1 object), the origin of which is situated on the 'X Axis' of this parabola.

        """
        return _gp.gp_Parab_Directrix(self, *args)

    def Focal(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the distance between the vertex and the focus of the parabola.

        """
        return _gp.gp_Parab_Focal(self, *args)

    def Focus(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        - Computes the focus of the parabola.

        """
        return _gp.gp_Parab_Focus(self, *args)

    def Location(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the vertex of the parabola. It is the 'Location' point of the coordinate system of the parabola.

        """
        return _gp.gp_Parab_Location(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Parab_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        gp_Parab

        Description
        -----------
        Performs the symmetrical transformation of a parabola with respect to the point theP which is the center of the symmetry.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        gp_Parab

        Description
        -----------
        Performs the symmetrical transformation of a parabola with respect to an axis placement which is the axis of the symmetry.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        gp_Parab

        Description
        -----------
        Performs the symmetrical transformation of a parabola with respect to a plane. The axis placement theA2 locates the plane of the symmetry (Location, XDirection, YDirection).

        """
        return _gp.gp_Parab_Mirrored(self, *args)

    def Parameter(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the parameter of the parabola. It is the distance between the focus and the directrix of the parabola. This distance is twice the focal length.

        """
        return _gp.gp_Parab_Parameter(self, *args)

    def Position(self, *args):
        r"""
        Return
        -------
        gp_Ax2

        Description
        -----------
        Returns the local coordinate system of the parabola.

        """
        return _gp.gp_Parab_Position(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Parab_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        gp_Parab

        Description
        -----------
        Rotates a parabola. theA1 is the axis of the rotation. Ang is the angular value of the rotation in radians.

        """
        return _gp.gp_Parab_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Parab_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        gp_Parab

        Description
        -----------
        Scales a parabola. theS is the scaling value. If theS is negative the direction of the symmetry axis XAxis is reversed and the direction of the YAxis too.

        """
        return _gp.gp_Parab_Scaled(self, *args)

    def SetAxis(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        Modifies this parabola by redefining its local coordinate system so that - its origin and 'main Direction' become those of the axis theA1 (the 'X Direction' and 'Y Direction' are then recomputed in the same way as for any gp_Ax2) Raises ConstructionError if the direction of theA1 is parallel to the previous XAxis of the parabola.

        """
        return _gp.gp_Parab_SetAxis(self, *args)

    def SetFocal(self, *args):
        r"""

        Parameters
        ----------
        theFocal: float

        Return
        -------
        None

        Description
        -----------
        Changes the focal distance of the parabola. Raises ConstructionError if theFocal < 0.0.

        """
        return _gp.gp_Parab_SetFocal(self, *args)

    def SetLocation(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        Changes the location of the parabola. It is the vertex of the parabola.

        """
        return _gp.gp_Parab_SetLocation(self, *args)

    def SetPosition(self, *args):
        r"""

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        Changes the local coordinate system of the parabola.

        """
        return _gp.gp_Parab_SetPosition(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Parab_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        gp_Parab

        Description
        -----------
        Transforms a parabola with the transformation theT from class Trsf.

        """
        return _gp.gp_Parab_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Parab_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        gp_Parab

        Description
        -----------
        Translates a parabola in the direction of the vector theV. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        gp_Parab

        Description
        -----------
        Translates a parabola from the point theP1 to the point theP2.

        """
        return _gp.gp_Parab_Translated(self, *args)

    def XAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the symmetry axis of the parabola. The location point of the axis is the vertex of the parabola.

        """
        return _gp.gp_Parab_XAxis(self, *args)

    def YAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        It is an axis parallel to the directrix of the parabola. The location point of this axis is the vertex of the parabola.

        """
        return _gp.gp_Parab_YAxis(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Parab()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Parab')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Parab

# Register gp_Parab in _gp:
_gp.gp_Parab_swigregister(gp_Parab)
class gp_Parab2d(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"""
        Return
        -------
        None

        Description
        -----------
        Creates an indefinite parabola.

        Parameters
        ----------
        theMirrorAxis: gp_Ax2d
        theFocalLength: float
        theSense: bool (optional, default to Standard_True)

        Return
        -------
        None

        Description
        -----------
        Creates a parabola with its vertex point, its axis of symmetry ('XAxis') and its focal length. The sense of parametrization is given by theSense. If theSense == True (by default) then right-handed coordinate system is used, otherwise - left-handed. Warnings: It is possible to have FocalLength = 0. In this case, the parabola looks like a line, which is parallel to the symmetry-axis. Raises ConstructionError if FocalLength < 0.0.

        Parameters
        ----------
        theAxes: gp_Ax22d
        theFocalLength: float

        Return
        -------
        None

        Description
        -----------
        Creates a parabola with its vertex point, its axis of symmetry ('XAxis'), correspond Y-axis and its focal length. Warnings: It is possible to have FocalLength = 0. In this case, the parabola looks like a line, which is parallel to the symmetry-axis. Raises ConstructionError if Focal < 0.0.

        Parameters
        ----------
        theDirectrix: gp_Ax2d
        theFocus: gp_Pnt2d
        theSense: bool (optional, default to Standard_True)

        Return
        -------
        None

        Description
        -----------
        Creates a parabola with the directrix and the focus point. Y-axis of the parabola (in User Coordinate System - UCS) is the direction of theDirectrix. X-axis always directs from theDirectrix to theFocus point and always comes through theFocus. Apex of the parabola is a middle point between the theFocus and the intersection point of theDirectrix and the X-axis. Warnings: It is possible to have FocalLength = 0 (when theFocus lies in theDirectrix). In this case, X-direction of the parabola is defined by theSense parameter. If theSense == True (by default) then right-handed coordinate system is used, otherwise - left-handed. Result parabola will look like a line, which is perpendicular to the directrix.

        """
        _gp.gp_Parab2d_swiginit(self, _gp.new_gp_Parab2d(*args))

    def Axis(self, *args):
        r"""
        Return
        -------
        gp_Ax22d

        Description
        -----------
        Returns the local coordinate system of the parabola. The 'Location' point of this axis is the vertex of the parabola.

        """
        return _gp.gp_Parab2d_Axis(self, *args)

    def Coefficients(self, *args):
        r"""

        Parameters
        ----------

        Return
        -------
        theA: float
        theB: float
        theC: float
        theD: float
        theE: float
        theF: float

        Description
        -----------
        Computes the coefficients of the implicit equation of the parabola (in WCS - World Coordinate System). @code theA * (X**2) + theB * (Y**2) + 2*theC*(X*Y) + 2*theD*X + 2*theE*Y + theF = 0. @endcode.

        """
        return _gp.gp_Parab2d_Coefficients(self, *args)

    def Directrix(self, *args):
        r"""
        Return
        -------
        gp_Ax2d

        Description
        -----------
        Computes the directrix of the parabola. The directrix is: - a line parallel to the 'Y Direction' of the local coordinate system of this parabola, and - located on the negative side of the axis of symmetry, at a distance from the apex which is equal to the focal length of this parabola. The directrix is returned as an axis (a gp_Ax2d object), the origin of which is situated on the 'X Axis' of this parabola.

        """
        return _gp.gp_Parab2d_Directrix(self, *args)

    def Focal(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the distance between the vertex and the focus of the parabola.

        """
        return _gp.gp_Parab2d_Focal(self, *args)

    def Focus(self, *args):
        r"""
        Return
        -------
        gp_Pnt2d

        Description
        -----------
        Returns the focus of the parabola.

        """
        return _gp.gp_Parab2d_Focus(self, *args)

    def IsDirect(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Returns true if the local coordinate system is direct and false in the other case.

        """
        return _gp.gp_Parab2d_IsDirect(self, *args)

    def Location(self, *args):
        r"""
        Return
        -------
        gp_Pnt2d

        Description
        -----------
        Returns the vertex of the parabola.

        """
        return _gp.gp_Parab2d_Location(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Parab2d_Mirror(self, *args)

    def MirrorAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax2d

        Description
        -----------
        Returns the symmetry axis of the parabola. The 'Location' point of this axis is the vertex of the parabola.

        """
        return _gp.gp_Parab2d_MirrorAxis(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        gp_Parab2d

        Description
        -----------
        Performs the symmetrical transformation of a parabola with respect to the point theP which is the center of the symmetry.

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        gp_Parab2d

        Description
        -----------
        Performs the symmetrical transformation of a parabola with respect to an axis placement which is the axis of the symmetry.

        """
        return _gp.gp_Parab2d_Mirrored(self, *args)

    def Parameter(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the distance between the focus and the directrix of the parabola.

        """
        return _gp.gp_Parab2d_Parameter(self, *args)

    def Reverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Parab2d_Reverse(self, *args)

    def Reversed(self, *args):
        r"""
        Return
        -------
        gp_Parab2d

        Description
        -----------
        Reverses the orientation of the local coordinate system of this parabola (the 'Y Direction' is reversed). Therefore, the implicit orientation of this parabola is reversed. Note: - Reverse assigns the result to this parabola, while - Reversed creates a new one.

        """
        return _gp.gp_Parab2d_Reversed(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Parab2d_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theAng: float

        Return
        -------
        gp_Parab2d

        Description
        -----------
        Rotates a parabola. theP is the center of the rotation. theAng is the angular value of the rotation in radians.

        """
        return _gp.gp_Parab2d_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theS: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Parab2d_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theS: float

        Return
        -------
        gp_Parab2d

        Description
        -----------
        Scales a parabola. theS is the scaling value. If theS is negative the direction of the symmetry axis 'XAxis' is reversed and the direction of the 'YAxis' too.

        """
        return _gp.gp_Parab2d_Scaled(self, *args)

    def SetAxis(self, *args):
        r"""

        Parameters
        ----------
        theA: gp_Ax22d

        Return
        -------
        None

        Description
        -----------
        Changes the local coordinate system of the parabola. The 'Location' point of A becomes the vertex of the parabola.

        """
        return _gp.gp_Parab2d_SetAxis(self, *args)

    def SetFocal(self, *args):
        r"""

        Parameters
        ----------
        theFocal: float

        Return
        -------
        None

        Description
        -----------
        Changes the focal distance of the parabola Warnings: It is possible to have theFocal = 0. Raises ConstructionError if theFocal < 0.0.

        """
        return _gp.gp_Parab2d_SetFocal(self, *args)

    def SetLocation(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        Changes the 'Location' point of the parabola. It is the vertex of the parabola.

        """
        return _gp.gp_Parab2d_SetLocation(self, *args)

    def SetMirrorAxis(self, *args):
        r"""

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        Modifies this parabola, by redefining its local coordinate system so that its origin and 'X Direction' become those of the axis MA. The 'Y Direction' of the local coordinate system is then recomputed. The orientation of the local coordinate system is not modified.

        """
        return _gp.gp_Parab2d_SetMirrorAxis(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Parab2d_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        gp_Parab2d

        Description
        -----------
        Transforms an parabola with the transformation theT from class Trsf2d.

        """
        return _gp.gp_Parab2d_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt2d
        theP2: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Parab2d_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        gp_Parab2d

        Description
        -----------
        Translates a parabola in the direction of the vectorthe theV. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt2d
        theP2: gp_Pnt2d

        Return
        -------
        gp_Parab2d

        Description
        -----------
        Translates a parabola from the point theP1 to the point theP2.

        """
        return _gp.gp_Parab2d_Translated(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Parab2d()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Parab2d')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Parab2d

# Register gp_Parab2d in _gp:
_gp.gp_Parab2d_swigregister(gp_Parab2d)
class gp_Pln(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"""
        Return
        -------
        None

        Description
        -----------
        Creates a plane coincident with OXY plane of the reference coordinate system.

        Parameters
        ----------
        theA3: gp_Ax3

        Return
        -------
        None

        Description
        -----------
        The coordinate system of the plane is defined with the axis placement theA3. The 'Direction' of theA3 defines the normal to the plane. The 'Location' of theA3 defines the location (origin) of the plane. The 'XDirection' and 'YDirection' of theA3 define the 'XAxis' and the 'YAxis' of the plane used to parametrize the plane.

        Parameters
        ----------
        theP: gp_Pnt
        theV: gp_Dir

        Return
        -------
        None

        Description
        -----------
        Creates a plane with the 'Location' point <theP> and the normal direction <theV>.

        Parameters
        ----------
        theA: float
        theB: float
        theC: float
        theD: float

        Return
        -------
        None

        Description
        -----------
        Creates a plane from its cartesian equation: @code theA * X + theB * Y + theC * Z + theD = 0.0 @endcode Raises ConstructionError if Sqrt (theA*theA + theB*theB + theC*theC) <= Resolution from gp.

        """
        _gp.gp_Pln_swiginit(self, _gp.new_gp_Pln(*args))

    def Axis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the plane's normal Axis.

        """
        return _gp.gp_Pln_Axis(self, *args)

    def Coefficients(self, *args):
        r"""

        Parameters
        ----------

        Return
        -------
        theA: float
        theB: float
        theC: float
        theD: float

        Description
        -----------
        Returns the coefficients of the plane's cartesian equation: @code theA * X + theB * Y + theC * Z + theD = 0. @endcode.

        """
        return _gp.gp_Pln_Coefficients(self, *args)

    def Contains(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theLinearTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns true if this plane contains the point theP. This means that - the distance between point theP and this plane is less than or equal to theLinearTolerance, or - line L is normal to the 'main Axis' of the local coordinate system of this plane, within the tolerance AngularTolerance, and the distance between the origin of line L and this plane is less than or equal to theLinearTolerance.

        Parameters
        ----------
        theL: gp_Lin
        theLinearTolerance: float
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns true if this plane contains the line theL. This means that - the distance between point P and this plane is less than or equal to LinearTolerance, or - line theL is normal to the 'main Axis' of the local coordinate system of this plane, within the tolerance theAngularTolerance, and the distance between the origin of line theL and this plane is less than or equal to theLinearTolerance.

        """
        return _gp.gp_Pln_Contains(self, *args)

    def Direct(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        returns true if the Ax3 is right handed.

        """
        return _gp.gp_Pln_Direct(self, *args)

    def Distance(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        float

        Description
        -----------
        Computes the distance between <self> and the point <theP>.

        Parameters
        ----------
        theL: gp_Lin

        Return
        -------
        float

        Description
        -----------
        Computes the distance between <self> and the line <theL>.

        Parameters
        ----------
        theOther: gp_Pln

        Return
        -------
        float

        Description
        -----------
        Computes the distance between two planes.

        """
        return _gp.gp_Pln_Distance(self, *args)

    def DumpJson(self, depth=-1):
        r"""

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        """
        return _gp.gp_Pln_DumpJson(self, depth)

    def Location(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the plane's location (origin).

        """
        return _gp.gp_Pln_Location(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Pln_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        gp_Pln

        Description
        -----------
        Performs the symmetrical transformation of a plane with respect to the point <theP> which is the center of the symmetry Warnings: The normal direction to the plane is not changed. The 'XAxis' and the 'YAxis' are reversed.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        gp_Pln

        Description
        -----------
        Performs the symmetrical transformation of a plane with respect to an axis placement which is the axis of the symmetry. The transformation is performed on the 'Location' point, on the 'XAxis' and the 'YAxis'. The resulting normal direction is the cross product between the 'XDirection' and the 'YDirection' after transformation if the initial plane was right handed, else it is the opposite.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        gp_Pln

        Description
        -----------
        Performs the symmetrical transformation of a plane with respect to an axis placement. The axis placement <A2> locates the plane of the symmetry. The transformation is performed on the 'Location' point, on the 'XAxis' and the 'YAxis'. The resulting normal direction is the cross product between the 'XDirection' and the 'YDirection' after transformation if the initial plane was right handed, else it is the opposite.

        """
        return _gp.gp_Pln_Mirrored(self, *args)

    def Position(self, *args):
        r"""
        Return
        -------
        gp_Ax3

        Description
        -----------
        Returns the local coordinate system of the plane .

        """
        return _gp.gp_Pln_Position(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Pln_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        gp_Pln

        Description
        -----------
        rotates a plane. theA1 is the axis of the rotation. theAng is the angular value of the rotation in radians.

        """
        return _gp.gp_Pln_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Pln_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        gp_Pln

        Description
        -----------
        Scales a plane. theS is the scaling value.

        """
        return _gp.gp_Pln_Scaled(self, *args)

    def SetAxis(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        Modifies this plane, by redefining its local coordinate system so that - its origin and 'main Direction' become those of the axis theA1 (the 'X Direction' and 'Y Direction' are then recomputed). Raises ConstructionError if the theA1 is parallel to the 'XAxis' of the plane.

        """
        return _gp.gp_Pln_SetAxis(self, *args)

    def SetLocation(self, *args):
        r"""

        Parameters
        ----------
        theLoc: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        Changes the origin of the plane.

        """
        return _gp.gp_Pln_SetLocation(self, *args)

    def SetPosition(self, *args):
        r"""

        Parameters
        ----------
        theA3: gp_Ax3

        Return
        -------
        None

        Description
        -----------
        Changes the local coordinate system of the plane.

        """
        return _gp.gp_Pln_SetPosition(self, *args)

    def SquareDistance(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        float

        Description
        -----------
        Computes the square distance between <self> and the point <theP>.

        Parameters
        ----------
        theL: gp_Lin

        Return
        -------
        float

        Description
        -----------
        Computes the square distance between <self> and the line <theL>.

        Parameters
        ----------
        theOther: gp_Pln

        Return
        -------
        float

        Description
        -----------
        Computes the square distance between two planes.

        """
        return _gp.gp_Pln_SquareDistance(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Pln_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        gp_Pln

        Description
        -----------
        Transforms a plane with the transformation theT from class Trsf. The transformation is performed on the 'Location' point, on the 'XAxis' and the 'YAxis'. The resulting normal direction is the cross product between the 'XDirection' and the 'YDirection' after transformation.

        """
        return _gp.gp_Pln_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Pln_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        gp_Pln

        Description
        -----------
        Translates a plane in the direction of the vector theV. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        gp_Pln

        Description
        -----------
        Translates a plane from the point theP1 to the point theP2.

        """
        return _gp.gp_Pln_Translated(self, *args)

    def UReverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Reverses the U parametrization of the plane reversing the XAxis.

        """
        return _gp.gp_Pln_UReverse(self, *args)

    def VReverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Reverses the V parametrization of the plane reversing the YAxis.

        """
        return _gp.gp_Pln_VReverse(self, *args)

    def XAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the X axis of the plane.

        """
        return _gp.gp_Pln_XAxis(self, *args)

    def YAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the Y axis of the plane.

        """
        return _gp.gp_Pln_YAxis(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Pln()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Pln')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Pln

# Register gp_Pln in _gp:
_gp.gp_Pln_swigregister(gp_Pln)
class gp_Pnt(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"""
        Return
        -------
        None

        Description
        -----------
        Creates a point with zero coordinates.

        Parameters
        ----------
        theCoord: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        Creates a point from a XYZ object.

        Parameters
        ----------
        theXp: float
        theYp: float
        theZp: float

        Return
        -------
        None

        Description
        -----------
        Creates a point with its 3 cartesian's coordinates: theXp, theYp, theZp.

        """
        _gp.gp_Pnt_swiginit(self, _gp.new_gp_Pnt(*args))

    def BaryCenter(self, *args):
        r"""

        Parameters
        ----------
        theAlpha: float
        theP: gp_Pnt
        theBeta: float

        Return
        -------
        None

        Description
        -----------
        Assigns the result of the following expression to this point (theAlpha*this + theBeta*theP) / (theAlpha + theBeta).

        """
        return _gp.gp_Pnt_BaryCenter(self, *args)

    def ChangeCoord(self, *args):
        r"""
        Return
        -------
        gp_XYZ

        Description
        -----------
        Returns the coordinates of this point. Note: This syntax allows direct modification of the returned value.

        """
        return _gp.gp_Pnt_ChangeCoord(self, *args)

    def Coord(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int

        Return
        -------
        float

        Description
        -----------
        Returns the coordinate of corresponding to the value of theIndex: theIndex = 1 => X is returned theIndex = 2 => Y is returned theIndex = 3 => Z is returned Raises OutOfRange if theIndex != {1, 2, 3}. Raised if theIndex != {1, 2, 3}.

        Parameters
        ----------

        Return
        -------
        theXp: float
        theYp: float
        theZp: float

        Description
        -----------
        For this point gives its three coordinates theXp, theYp and theZp.
        Return
        -------
        gp_XYZ

        Description
        -----------
        For this point, returns its three coordinates as a XYZ object.

        """
        return _gp.gp_Pnt_Coord(self, *args)

    def Distance(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Pnt

        Return
        -------
        float

        Description
        -----------
        Computes the distance between two points.

        """
        return _gp.gp_Pnt_Distance(self, *args)

    def DumpJson(self, depth=-1):
        r"""

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        """
        return _gp.gp_Pnt_DumpJson(self, depth)

    def InitFromJson(self, json_string):
        r"""

        Parameters
        ----------
        json_string: the string

        Return
        -------
        bool

        Description
        -----------
        Init the object from a JSON string.

        """
        return _gp.gp_Pnt_InitFromJson(self, json_string)

    def IsEqual(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Pnt
        theLinearTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Comparison Returns True if the distance between the two points is lower or equal to theLinearTolerance.

        """
        return _gp.gp_Pnt_IsEqual(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        Performs the symmetrical transformation of a point with respect to the point theP which is the center of the symmetry.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Pnt_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        gp_Pnt

        Description
        -----------
        Performs the symmetrical transformation of a point with respect to an axis placement which is the axis of the symmetry.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        gp_Pnt

        Description
        -----------
        Performs the symmetrical transformation of a point with respect to a plane. The axis placement theA2 locates the plane of the symmetry: (Location, XDirection, YDirection).

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        gp_Pnt

        Description
        -----------
        Rotates a point. theA1 is the axis of the rotation. theAng is the angular value of the rotation in radians.

        """
        return _gp.gp_Pnt_Mirrored(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Pnt_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        gp_Pnt

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Pnt_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        None

        Description
        -----------
        Scales a point. theS is the scaling value.

        """
        return _gp.gp_Pnt_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        gp_Pnt

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Pnt_Scaled(self, *args)

    def SetCoord(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int
        theXi: float

        Return
        -------
        None

        Description
        -----------
        Changes the coordinate of range theIndex: theIndex = 1 => X is modified theIndex = 2 => Y is modified theIndex = 3 => Z is modified Raised if theIndex != {1, 2, 3}.

        Parameters
        ----------
        theXp: float
        theYp: float
        theZp: float

        Return
        -------
        None

        Description
        -----------
        For this point, assigns the values theXp, theYp and theZp to its three coordinates.

        """
        return _gp.gp_Pnt_SetCoord(self, *args)

    def SetX(self, *args):
        r"""

        Parameters
        ----------
        theX: float

        Return
        -------
        None

        Description
        -----------
        Assigns the given value to the X coordinate of this point.

        """
        return _gp.gp_Pnt_SetX(self, *args)

    def SetXYZ(self, *args):
        r"""

        Parameters
        ----------
        theCoord: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        Assigns the three coordinates of theCoord to this point.

        """
        return _gp.gp_Pnt_SetXYZ(self, *args)

    def SetY(self, *args):
        r"""

        Parameters
        ----------
        theY: float

        Return
        -------
        None

        Description
        -----------
        Assigns the given value to the Y coordinate of this point.

        """
        return _gp.gp_Pnt_SetY(self, *args)

    def SetZ(self, *args):
        r"""

        Parameters
        ----------
        theZ: float

        Return
        -------
        None

        Description
        -----------
        Assigns the given value to the Z coordinate of this point.

        """
        return _gp.gp_Pnt_SetZ(self, *args)

    def SquareDistance(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Pnt

        Return
        -------
        float

        Description
        -----------
        Computes the square distance between two points.

        """
        return _gp.gp_Pnt_SquareDistance(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        Transforms a point with the transformation T.

        """
        return _gp.gp_Pnt_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        gp_Pnt

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Pnt_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        None

        Description
        -----------
        Translates a point in the direction of the vector theV. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        Translates a point from the point theP1 to the point theP2.

        """
        return _gp.gp_Pnt_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        gp_Pnt

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        gp_Pnt

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Pnt_Translated(self, *args)

    def X(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        For this point, returns its X coordinate.

        """
        return _gp.gp_Pnt_X(self, *args)

    def XYZ(self, *args):
        r"""
        Return
        -------
        gp_XYZ

        Description
        -----------
        For this point, returns its three coordinates as a XYZ object.

        """
        return _gp.gp_Pnt_XYZ(self, *args)

    def Y(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        For this point, returns its Y coordinate.

        """
        return _gp.gp_Pnt_Y(self, *args)

    def Z(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        For this point, returns its Z coordinate.

        """
        return _gp.gp_Pnt_Z(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Pnt()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Pnt')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Pnt

# Register gp_Pnt in _gp:
_gp.gp_Pnt_swigregister(gp_Pnt)
class gp_Pnt2d(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"""
        Return
        -------
        None

        Description
        -----------
        Creates a point with zero coordinates.

        Parameters
        ----------
        theCoord: gp_XY

        Return
        -------
        None

        Description
        -----------
        Creates a point with a doublet of coordinates.

        Parameters
        ----------
        theXp: float
        theYp: float

        Return
        -------
        None

        Description
        -----------
        Creates a point with its 2 cartesian's coordinates: theXp, theYp.

        """
        _gp.gp_Pnt2d_swiginit(self, _gp.new_gp_Pnt2d(*args))

    def ChangeCoord(self, *args):
        r"""
        Return
        -------
        gp_XY

        Description
        -----------
        Returns the coordinates of this point. Note: This syntax allows direct modification of the returned value.

        """
        return _gp.gp_Pnt2d_ChangeCoord(self, *args)

    def Coord(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int

        Return
        -------
        float

        Description
        -----------
        Returns the coordinate of range theIndex: theIndex = 1 => X is returned theIndex = 2 => Y is returned Raises OutOfRange if theIndex != {1, 2}.

        Parameters
        ----------

        Return
        -------
        theXp: float
        theYp: float

        Description
        -----------
        For this point returns its two coordinates as a number pair.
        Return
        -------
        gp_XY

        Description
        -----------
        For this point, returns its two coordinates as a number pair.

        """
        return _gp.gp_Pnt2d_Coord(self, *args)

    def Distance(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Pnt2d

        Return
        -------
        float

        Description
        -----------
        Computes the distance between two points.

        """
        return _gp.gp_Pnt2d_Distance(self, *args)

    def DumpJson(self, depth=-1):
        r"""

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        """
        return _gp.gp_Pnt2d_DumpJson(self, depth)

    def IsEqual(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Pnt2d
        theLinearTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Comparison Returns True if the distance between the two points is lower or equal to theLinearTolerance.

        """
        return _gp.gp_Pnt2d_IsEqual(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        Performs the symmetrical transformation of a point with respect to the point theP which is the center of the symmetry.

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Pnt2d_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        gp_Pnt2d

        Description
        -----------
        Performs the symmetrical transformation of a point with respect to an axis placement which is the axis.

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        gp_Pnt2d

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Pnt2d_Mirrored(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theAng: float

        Return
        -------
        None

        Description
        -----------
        Rotates a point. theA1 is the axis of the rotation. Ang is the angular value of the rotation in radians.

        """
        return _gp.gp_Pnt2d_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theAng: float

        Return
        -------
        gp_Pnt2d

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Pnt2d_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theS: float

        Return
        -------
        None

        Description
        -----------
        Scales a point. theS is the scaling value.

        """
        return _gp.gp_Pnt2d_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theS: float

        Return
        -------
        gp_Pnt2d

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Pnt2d_Scaled(self, *args)

    def SetCoord(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int
        theXi: float

        Return
        -------
        None

        Description
        -----------
        Assigns the value Xi to the coordinate that corresponds to theIndex: theIndex = 1 => X is modified theIndex = 2 => Y is modified Raises OutOfRange if theIndex != {1, 2}.

        Parameters
        ----------
        theXp: float
        theYp: float

        Return
        -------
        None

        Description
        -----------
        For this point, assigns the values theXp and theYp to its two coordinates.

        """
        return _gp.gp_Pnt2d_SetCoord(self, *args)

    def SetX(self, *args):
        r"""

        Parameters
        ----------
        theX: float

        Return
        -------
        None

        Description
        -----------
        Assigns the given value to the X coordinate of this point.

        """
        return _gp.gp_Pnt2d_SetX(self, *args)

    def SetXY(self, *args):
        r"""

        Parameters
        ----------
        theCoord: gp_XY

        Return
        -------
        None

        Description
        -----------
        Assigns the two coordinates of Coord to this point.

        """
        return _gp.gp_Pnt2d_SetXY(self, *args)

    def SetY(self, *args):
        r"""

        Parameters
        ----------
        theY: float

        Return
        -------
        None

        Description
        -----------
        Assigns the given value to the Y coordinate of this point.

        """
        return _gp.gp_Pnt2d_SetY(self, *args)

    def SquareDistance(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Pnt2d

        Return
        -------
        float

        Description
        -----------
        Computes the square distance between two points.

        """
        return _gp.gp_Pnt2d_SquareDistance(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        None

        Description
        -----------
        Transforms a point with the transformation theT.

        """
        return _gp.gp_Pnt2d_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        gp_Pnt2d

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Pnt2d_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        None

        Description
        -----------
        Translates a point in the direction of the vector theV. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt2d
        theP2: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        Translates a point from the point theP1 to the point theP2.

        """
        return _gp.gp_Pnt2d_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        gp_Pnt2d

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt2d
        theP2: gp_Pnt2d

        Return
        -------
        gp_Pnt2d

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Pnt2d_Translated(self, *args)

    def X(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        For this point, returns its X coordinate.

        """
        return _gp.gp_Pnt2d_X(self, *args)

    def XY(self, *args):
        r"""
        Return
        -------
        gp_XY

        Description
        -----------
        For this point, returns its two coordinates as a number pair.

        """
        return _gp.gp_Pnt2d_XY(self, *args)

    def Y(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        For this point, returns its Y coordinate.

        """
        return _gp.gp_Pnt2d_Y(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Pnt2d()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Pnt2d')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Pnt2d

# Register gp_Pnt2d in _gp:
_gp.gp_Pnt2d_swigregister(gp_Pnt2d)
class gp_Quaternion(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"""
        Return
        -------
        None

        Description
        -----------
        Creates an identity quaternion.

        Parameters
        ----------
        theX: float
        theY: float
        theZ: float
        theW: float

        Return
        -------
        None

        Description
        -----------
        Creates quaternion directly from component values.

        Parameters
        ----------
        theVecFrom: gp_Vec
        theVecTo: gp_Vec

        Return
        -------
        None

        Description
        -----------
        Creates quaternion representing shortest-arc rotation operator producing vector theVecTo from vector theVecFrom.

        Parameters
        ----------
        theVecFrom: gp_Vec
        theVecTo: gp_Vec
        theHelpCrossVec: gp_Vec

        Return
        -------
        None

        Description
        -----------
        Creates quaternion representing shortest-arc rotation operator producing vector theVecTo from vector theVecFrom. Additional vector theHelpCrossVec defines preferred direction for rotation and is used when theVecTo and theVecFrom are directed oppositely.

        Parameters
        ----------
        theAxis: gp_Vec
        theAngle: float

        Return
        -------
        None

        Description
        -----------
        Creates quaternion representing rotation on angle theAngle around vector theAxis.

        Parameters
        ----------
        theMat: gp_Mat

        Return
        -------
        None

        Description
        -----------
        Creates quaternion from rotation matrix 3*3 (which should be orthonormal skew-symmetric matrix).

        """
        _gp.gp_Quaternion_swiginit(self, _gp.new_gp_Quaternion(*args))

    def Add(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Quaternion

        Return
        -------
        None

        Description
        -----------
        Adds components of other quaternion; result is 'rotations mix'.

        """
        return _gp.gp_Quaternion_Add(self, *args)

    def Added(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Quaternion

        Return
        -------
        gp_Quaternion

        Description
        -----------
        Makes sum of quaternion components; result is 'rotations mix'.

        """
        return _gp.gp_Quaternion_Added(self, *args)

    def Dot(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Quaternion

        Return
        -------
        float

        Description
        -----------
        Computes inner product / scalar product / Dot.

        """
        return _gp.gp_Quaternion_Dot(self, *args)

    def GetEulerAngles(self, *args):
        r"""

        Parameters
        ----------
        theOrder: gp_EulerSequence

        Return
        -------
        theAlpha: float
        theBeta: float
        theGamma: float

        Description
        -----------
        Returns Euler angles describing current rotation.

        """
        return _gp.gp_Quaternion_GetEulerAngles(self, *args)

    def GetMatrix(self, *args):
        r"""
        Return
        -------
        gp_Mat

        Description
        -----------
        Returns rotation operation as 3*3 matrix.

        """
        return _gp.gp_Quaternion_GetMatrix(self, *args)

    def GetRotationAngle(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Return rotation angle from -PI to PI.

        """
        return _gp.gp_Quaternion_GetRotationAngle(self, *args)

    def GetVectorAndAngle(self, *args):
        r"""

        Parameters
        ----------
        theAxis: gp_Vec

        Return
        -------
        theAngle: float

        Description
        -----------
        Convert a quaternion to Axis+Angle representation, preserve the axis direction and angle from -PI to +PI.

        """
        return _gp.gp_Quaternion_GetVectorAndAngle(self, *args)

    def Invert(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Inverts quaternion (both rotation direction and norm).

        """
        return _gp.gp_Quaternion_Invert(self, *args)

    def Inverted(self, *args):
        r"""
        Return
        -------
        gp_Quaternion

        Description
        -----------
        Return inversed quaternion q^-1.

        """
        return _gp.gp_Quaternion_Inverted(self, *args)

    def IsEqual(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Quaternion

        Return
        -------
        bool

        Description
        -----------
        Simple equal test without precision.

        """
        return _gp.gp_Quaternion_IsEqual(self, *args)

    def Multiplied(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Quaternion

        Return
        -------
        gp_Quaternion

        Description
        -----------
        Multiply function - work the same as Matrices multiplying. @code qq' = (cross(v,v') + wv' + w'v, ww' - dot(v,v')) @endcode Result is rotation combination: q' than q (here q=this, q'=theQ). Notices that: @code qq' != q'q; qq^-1 = q; @endcode.

        """
        return _gp.gp_Quaternion_Multiplied(self, *args)

    def Multiply(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Quaternion

        Return
        -------
        None

        Description
        -----------
        Adds rotation by multiplication.

        Parameters
        ----------
        theVec: gp_Vec

        Return
        -------
        gp_Vec

        Description
        -----------
        Rotates vector by quaternion as rotation operator.

        """
        return _gp.gp_Quaternion_Multiply(self, *args)

    def Negated(self, *args):
        r"""
        Return
        -------
        gp_Quaternion

        Description
        -----------
        Returns quaternion with all components negated. Note that this operation does not affect neither rotation operator defined by quaternion nor its norm.

        """
        return _gp.gp_Quaternion_Negated(self, *args)

    def Norm(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns norm of quaternion.

        """
        return _gp.gp_Quaternion_Norm(self, *args)

    def Normalize(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Scale quaternion that its norm goes to 1. The appearing of 0 magnitude or near is a error, so we can be sure that can divide by magnitude.

        """
        return _gp.gp_Quaternion_Normalize(self, *args)

    def Normalized(self, *args):
        r"""
        Return
        -------
        gp_Quaternion

        Description
        -----------
        Returns quaternion scaled so that its norm goes to 1.

        """
        return _gp.gp_Quaternion_Normalized(self, *args)

    def Reverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Reverse direction of rotation (conjugate quaternion).

        """
        return _gp.gp_Quaternion_Reverse(self, *args)

    def Reversed(self, *args):
        r"""
        Return
        -------
        gp_Quaternion

        Description
        -----------
        Return rotation with reversed direction (conjugated quaternion).

        """
        return _gp.gp_Quaternion_Reversed(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theScale: float

        Return
        -------
        None

        Description
        -----------
        Scale all components by quaternion by theScale; note that rotation is not changed by this operation (except 0-scaling).

        """
        return _gp.gp_Quaternion_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theScale: float

        Return
        -------
        gp_Quaternion

        Description
        -----------
        Returns scaled quaternion.

        """
        return _gp.gp_Quaternion_Scaled(self, *args)

    def Set(self, *args):
        r"""

        Parameters
        ----------
        theX: float
        theY: float
        theZ: float
        theW: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theQuaternion: gp_Quaternion

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Quaternion_Set(self, *args)

    def SetEulerAngles(self, *args):
        r"""

        Parameters
        ----------
        theOrder: gp_EulerSequence
        theAlpha: float
        theBeta: float
        theGamma: float

        Return
        -------
        None

        Description
        -----------
        Create a unit quaternion representing rotation defined by generalized Euler angles.

        """
        return _gp.gp_Quaternion_SetEulerAngles(self, *args)

    def SetIdent(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Make identity quaternion (zero-rotation).

        """
        return _gp.gp_Quaternion_SetIdent(self, *args)

    def SetMatrix(self, *args):
        r"""

        Parameters
        ----------
        theMat: gp_Mat

        Return
        -------
        None

        Description
        -----------
        Create a unit quaternion by rotation matrix matrix must contain only rotation (not scale or shear) //! For numerical stability we find first the greatest component of quaternion and than search others from this one.

        """
        return _gp.gp_Quaternion_SetMatrix(self, *args)

    def SetRotation(self, *args):
        r"""

        Parameters
        ----------
        theVecFrom: gp_Vec
        theVecTo: gp_Vec

        Return
        -------
        None

        Description
        -----------
        Sets quaternion to shortest-arc rotation producing vector theVecTo from vector theVecFrom. If vectors theVecFrom and theVecTo are opposite then rotation axis is computed as theVecFrom ^ (1,0,0) or theVecFrom ^ (0,0,1).

        Parameters
        ----------
        theVecFrom: gp_Vec
        theVecTo: gp_Vec
        theHelpCrossVec: gp_Vec

        Return
        -------
        None

        Description
        -----------
        Sets quaternion to shortest-arc rotation producing vector theVecTo from vector theVecFrom. If vectors theVecFrom and theVecTo are opposite then rotation axis is computed as theVecFrom ^ theHelpCrossVec.

        """
        return _gp.gp_Quaternion_SetRotation(self, *args)

    def SetVectorAndAngle(self, *args):
        r"""

        Parameters
        ----------
        theAxis: gp_Vec
        theAngle: float

        Return
        -------
        None

        Description
        -----------
        Create a unit quaternion from Axis+Angle representation.

        """
        return _gp.gp_Quaternion_SetVectorAndAngle(self, *args)

    def SquareNorm(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns square norm of quaternion.

        """
        return _gp.gp_Quaternion_SquareNorm(self, *args)

    def StabilizeLength(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Stabilize quaternion length within 1 - 1/4. This operation is a lot faster than normalization and preserve length goes to 0 or infinity.

        """
        return _gp.gp_Quaternion_StabilizeLength(self, *args)

    def Subtract(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Quaternion

        Return
        -------
        None

        Description
        -----------
        Subtracts components of other quaternion; result is 'rotations mix'.

        """
        return _gp.gp_Quaternion_Subtract(self, *args)

    def Subtracted(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Quaternion

        Return
        -------
        gp_Quaternion

        Description
        -----------
        Makes difference of quaternion components; result is 'rotations mix'.

        """
        return _gp.gp_Quaternion_Subtracted(self, *args)

    def W(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Quaternion_W(self, *args)

    def X(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Quaternion_X(self, *args)

    def Y(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Quaternion_Y(self, *args)

    def Z(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Quaternion_Z(self, *args)

    def __mul__(self, *args):
        r"""

        Parameters
        ----------
        theScale: float

        Return
        -------
        gp_Quaternion

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theOther: gp_Quaternion

        Return
        -------
        gp_Quaternion

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theVec: gp_Vec

        Return
        -------
        gp_Vec

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Quaternion___mul__(self, *args)

    def __imul__(self, right):
        self.__imul_wrapper__(right)
        return self


    def __imul_wrapper__(self, *args):
        return _gp.gp_Quaternion___imul_wrapper__(self, *args)

    def __imul__(self, right):
        self.__imul_wrapper__(right)
        return self


    def __add__(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Quaternion

        Return
        -------
        gp_Quaternion

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Quaternion___add__(self, *args)

    def __iadd_wrapper__(self, other):
        return _gp.gp_Quaternion___iadd_wrapper__(self, other)

    def __iadd__(self, right):
        self.__iadd_wrapper__(right)
        return self


    def __neg__(self, *args):
        r"""
        Return
        -------
        gp_Quaternion

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Quaternion___neg__(self, *args)

    def __sub__(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Quaternion

        Return
        -------
        gp_Quaternion

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Quaternion___sub__(self, *args)

    def __isub_wrapper__(self, other):
        return _gp.gp_Quaternion___isub_wrapper__(self, other)

    def __isub__(self, right):
        self.__isub_wrapper__(right)
        return self


    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Quaternion()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Quaternion')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Quaternion

# Register gp_Quaternion in _gp:
_gp.gp_Quaternion_swigregister(gp_Quaternion)
class gp_QuaternionNLerp(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"""
        Return
        -------
        None

        Description
        -----------
        Empty constructor,.

        Parameters
        ----------
        theQStart: gp_Quaternion
        theQEnd: gp_Quaternion

        Return
        -------
        None

        Description
        -----------
        Constructor with initialization.

        """
        _gp.gp_QuaternionNLerp_swiginit(self, _gp.new_gp_QuaternionNLerp(*args))

    def Init(self, *args):
        r"""

        Parameters
        ----------
        theQStart: gp_Quaternion
        theQEnd: gp_Quaternion

        Return
        -------
        None

        Description
        -----------
        Initialize the tool with Start and End values.

        """
        return _gp.gp_QuaternionNLerp_Init(self, *args)

    def InitFromUnit(self, *args):
        r"""

        Parameters
        ----------
        theQStart: gp_Quaternion
        theQEnd: gp_Quaternion

        Return
        -------
        None

        Description
        -----------
        Initialize the tool with Start and End unit quaternions.

        """
        return _gp.gp_QuaternionNLerp_InitFromUnit(self, *args)

    def Interpolate(self, *args):
        r"""

        Parameters
        ----------
        theQStart: gp_Quaternion
        theQEnd: gp_Quaternion
        theT: float

        Return
        -------
        gp_Quaternion

        Description
        -----------
        Compute interpolated quaternion between two quaternions. 
        Parameter theStart first quaternion 
        Parameter theEnd second quaternion 
        Parameter theT normalized interpolation coefficient within 0..1 range, with 0 pointing to theStart and 1 to theEnd.

        Parameters
        ----------
        theT: float
        theResultQ: gp_Quaternion

        Return
        -------
        None

        Description
        -----------
        Set interpolated quaternion for theT position (from 0.0 to 1.0).

        """
        return _gp.gp_QuaternionNLerp_Interpolate(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_QuaternionNLerp()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_QuaternionNLerp')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_QuaternionNLerp

# Register gp_QuaternionNLerp in _gp:
_gp.gp_QuaternionNLerp_swigregister(gp_QuaternionNLerp)
class gp_QuaternionSLerp(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"""
        Return
        -------
        None

        Description
        -----------
        Empty constructor,.

        Parameters
        ----------
        theQStart: gp_Quaternion
        theQEnd: gp_Quaternion

        Return
        -------
        None

        Description
        -----------
        Constructor with initialization.

        """
        _gp.gp_QuaternionSLerp_swiginit(self, _gp.new_gp_QuaternionSLerp(*args))

    def Init(self, *args):
        r"""

        Parameters
        ----------
        theQStart: gp_Quaternion
        theQEnd: gp_Quaternion

        Return
        -------
        None

        Description
        -----------
        Initialize the tool with Start and End values.

        """
        return _gp.gp_QuaternionSLerp_Init(self, *args)

    def InitFromUnit(self, *args):
        r"""

        Parameters
        ----------
        theQStart: gp_Quaternion
        theQEnd: gp_Quaternion

        Return
        -------
        None

        Description
        -----------
        Initialize the tool with Start and End unit quaternions.

        """
        return _gp.gp_QuaternionSLerp_InitFromUnit(self, *args)

    def Interpolate(self, *args):
        r"""

        Parameters
        ----------
        theQStart: gp_Quaternion
        theQEnd: gp_Quaternion
        theT: float

        Return
        -------
        gp_Quaternion

        Description
        -----------
        Compute interpolated quaternion between two quaternions. 
        Parameter theStart first quaternion 
        Parameter theEnd second quaternion 
        Parameter theT normalized interpolation coefficient within 0..1 range, with 0 pointing to theStart and 1 to theEnd.

        Parameters
        ----------
        theT: float
        theResultQ: gp_Quaternion

        Return
        -------
        None

        Description
        -----------
        Set interpolated quaternion for theT position (from 0.0 to 1.0).

        """
        return _gp.gp_QuaternionSLerp_Interpolate(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_QuaternionSLerp()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_QuaternionSLerp')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_QuaternionSLerp

# Register gp_QuaternionSLerp in _gp:
_gp.gp_QuaternionSLerp_swigregister(gp_QuaternionSLerp)
class gp_Sphere(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"""
        Return
        -------
        None

        Description
        -----------
        Creates an indefinite sphere.

        Parameters
        ----------
        theA3: gp_Ax3
        theRadius: float

        Return
        -------
        None

        Description
        -----------
        Constructs a sphere with radius theRadius, centered on the origin of theA3. theA3 is the local coordinate system of the sphere. Warnings: It is not forbidden to create a sphere with null radius. Raises ConstructionError if theRadius < 0.0.

        """
        _gp.gp_Sphere_swiginit(self, _gp.new_gp_Sphere(*args))

    def Area(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the area of the sphere.

        """
        return _gp.gp_Sphere_Area(self, *args)

    def Coefficients(self, *args):
        r"""

        Parameters
        ----------

        Return
        -------
        theA1: float
        theA2: float
        theA3: float
        theB1: float
        theB2: float
        theB3: float
        theC1: float
        theC2: float
        theC3: float
        theD: float

        Description
        -----------
        Computes the coefficients of the implicit equation of the quadric in the absolute cartesian coordinates system: @code theA1.X**2 + theA2.Y**2 + theA3.Z**2 + 2.(theB1.X.Y + theB2.X.Z + theB3.Y.Z) + 2.(theC1.X + theC2.Y + theC3.Z) + theD = 0.0 @endcode.

        """
        return _gp.gp_Sphere_Coefficients(self, *args)

    def Direct(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Returns true if the local coordinate system of this sphere is right-handed.

        """
        return _gp.gp_Sphere_Direct(self, *args)

    def Location(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        --- Purpose ; Returns the center of the sphere.

        """
        return _gp.gp_Sphere_Location(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Sphere_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        gp_Sphere

        Description
        -----------
        Performs the symmetrical transformation of a sphere with respect to the point theP which is the center of the symmetry.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        gp_Sphere

        Description
        -----------
        Performs the symmetrical transformation of a sphere with respect to an axis placement which is the axis of the symmetry.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        gp_Sphere

        Description
        -----------
        Performs the symmetrical transformation of a sphere with respect to a plane. The axis placement theA2 locates the plane of the of the symmetry: (Location, XDirection, YDirection).

        """
        return _gp.gp_Sphere_Mirrored(self, *args)

    def Position(self, *args):
        r"""
        Return
        -------
        gp_Ax3

        Description
        -----------
        Returns the local coordinates system of the sphere.

        """
        return _gp.gp_Sphere_Position(self, *args)

    def Radius(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the radius of the sphere.

        """
        return _gp.gp_Sphere_Radius(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Sphere_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        gp_Sphere

        Description
        -----------
        Rotates a sphere. theA1 is the axis of the rotation. theAng is the angular value of the rotation in radians.

        """
        return _gp.gp_Sphere_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Sphere_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        gp_Sphere

        Description
        -----------
        Scales a sphere. theS is the scaling value. The absolute value of S is used to scale the sphere.

        """
        return _gp.gp_Sphere_Scaled(self, *args)

    def SetLocation(self, *args):
        r"""

        Parameters
        ----------
        theLoc: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        Changes the center of the sphere.

        """
        return _gp.gp_Sphere_SetLocation(self, *args)

    def SetPosition(self, *args):
        r"""

        Parameters
        ----------
        theA3: gp_Ax3

        Return
        -------
        None

        Description
        -----------
        Changes the local coordinate system of the sphere.

        """
        return _gp.gp_Sphere_SetPosition(self, *args)

    def SetRadius(self, *args):
        r"""

        Parameters
        ----------
        theR: float

        Return
        -------
        None

        Description
        -----------
        Assigns theR the radius of the Sphere. Warnings: It is not forbidden to create a sphere with null radius. Raises ConstructionError if theR < 0.0.

        """
        return _gp.gp_Sphere_SetRadius(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Sphere_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        gp_Sphere

        Description
        -----------
        Transforms a sphere with the transformation theT from class Trsf.

        """
        return _gp.gp_Sphere_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Sphere_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        gp_Sphere

        Description
        -----------
        Translates a sphere in the direction of the vector theV. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        gp_Sphere

        Description
        -----------
        Translates a sphere from the point theP1 to the point theP2.

        """
        return _gp.gp_Sphere_Translated(self, *args)

    def UReverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Reverses the U parametrization of the sphere reversing the YAxis.

        """
        return _gp.gp_Sphere_UReverse(self, *args)

    def VReverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Reverses the V parametrization of the sphere reversing the ZAxis.

        """
        return _gp.gp_Sphere_VReverse(self, *args)

    def Volume(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the volume of the sphere.

        """
        return _gp.gp_Sphere_Volume(self, *args)

    def XAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the axis X of the sphere.

        """
        return _gp.gp_Sphere_XAxis(self, *args)

    def YAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        Returns the axis Y of the sphere.

        """
        return _gp.gp_Sphere_YAxis(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Sphere()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Sphere')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Sphere

# Register gp_Sphere in _gp:
_gp.gp_Sphere_swigregister(gp_Sphere)
class gp_Torus(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"""
        Return
        -------
        None

        Description
        -----------
        creates an indefinite Torus.

        Parameters
        ----------
        theA3: gp_Ax3
        theMajorRadius: float
        theMinorRadius: float

        Return
        -------
        None

        Description
        -----------
        a torus centered on the origin of coordinate system theA3, with major radius theMajorRadius and minor radius theMinorRadius, and with the reference plane defined by the origin, the 'X Direction' and the 'Y Direction' of theA3. Warnings: It is not forbidden to create a torus with theMajorRadius = theMinorRadius = 0.0 Raises ConstructionError if theMinorRadius < 0.0 or if theMajorRadius < 0.0.

        """
        _gp.gp_Torus_swiginit(self, _gp.new_gp_Torus(*args))

    def Area(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the area of the torus.

        """
        return _gp.gp_Torus_Area(self, *args)

    def Axis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        returns the symmetry axis of the torus.

        """
        return _gp.gp_Torus_Axis(self, *args)

    def Coefficients(self, *args):
        r"""

        Parameters
        ----------
        theCoef: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        Computes the coefficients of the implicit equation of the surface in the absolute Cartesian coordinate system: @code Coef(1) * X^4 + Coef(2) * Y^4 + Coef(3) * Z^4 + Coef(4) * X^3 * Y + Coef(5) * X^3 * Z + Coef(6) * Y^3 * X + Coef(7) * Y^3 * Z + Coef(8) * Z^3 * X + Coef(9) * Z^3 * Y + Coef(10) * X^2 * Y^2 + Coef(11) * X^2 * Z^2 + Coef(12) * Y^2 * Z^2 + Coef(13) * X^2 * Y * Z + Coef(14) * X * Y^2 * Z + Coef(15) * X * Y * Z^2 + Coef(16) * X^3 + Coef(17) * Y^3 + Coef(18) * Z^3 + Coef(19) * X^2 * Y + Coef(20) * X^2 * Z + Coef(21) * Y^2 * X + Coef(22) * Y^2 * Z + Coef(23) * Z^2 * X + Coef(24) * Z^2 * Y + Coef(25) * X * Y * Z + Coef(26) * X^2 + Coef(27) * Y^2 + Coef(28) * Z^2 + Coef(29) * X * Y + Coef(30) * X * Z + Coef(31) * Y * Z + Coef(32) * X + Coef(33) * Y + Coef(34) * Z + Coef(35) = 0.0 @endcode Raises DimensionError if the length of theCoef is lower than 35.

        """
        return _gp.gp_Torus_Coefficients(self, *args)

    def Direct(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        returns true if the Ax3, the local coordinate system of this torus, is right handed.

        """
        return _gp.gp_Torus_Direct(self, *args)

    def Location(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the Torus's location.

        """
        return _gp.gp_Torus_Location(self, *args)

    def MajorRadius(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        returns the major radius of the torus.

        """
        return _gp.gp_Torus_MajorRadius(self, *args)

    def MinorRadius(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        returns the minor radius of the torus.

        """
        return _gp.gp_Torus_MinorRadius(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Torus_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        gp_Torus

        Description
        -----------
        Performs the symmetrical transformation of a torus with respect to the point theP which is the center of the symmetry.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        gp_Torus

        Description
        -----------
        Performs the symmetrical transformation of a torus with respect to an axis placement which is the axis of the symmetry.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        gp_Torus

        Description
        -----------
        Performs the symmetrical transformation of a torus with respect to a plane. The axis placement theA2 locates the plane of the of the symmetry: (Location, XDirection, YDirection).

        """
        return _gp.gp_Torus_Mirrored(self, *args)

    def Position(self, *args):
        r"""
        Return
        -------
        gp_Ax3

        Description
        -----------
        Returns the local coordinates system of the torus.

        """
        return _gp.gp_Torus_Position(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Torus_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        gp_Torus

        Description
        -----------
        Rotates a torus. theA1 is the axis of the rotation. theAng is the angular value of the rotation in radians.

        """
        return _gp.gp_Torus_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Torus_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        gp_Torus

        Description
        -----------
        Scales a torus. S is the scaling value. The absolute value of S is used to scale the torus.

        """
        return _gp.gp_Torus_Scaled(self, *args)

    def SetAxis(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        Modifies this torus, by redefining its local coordinate system so that: - its origin and 'main Direction' become those of the axis theA1 (the 'X Direction' and 'Y Direction' are then recomputed). Raises ConstructionError if the direction of theA1 is parallel to the 'XDirection' of the coordinate system of the toroidal surface.

        """
        return _gp.gp_Torus_SetAxis(self, *args)

    def SetLocation(self, *args):
        r"""

        Parameters
        ----------
        theLoc: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        Changes the location of the torus.

        """
        return _gp.gp_Torus_SetLocation(self, *args)

    def SetMajorRadius(self, *args):
        r"""

        Parameters
        ----------
        theMajorRadius: float

        Return
        -------
        None

        Description
        -----------
        Assigns value to the major radius of this torus. Raises ConstructionError if theMajorRadius - MinorRadius <= Resolution().

        """
        return _gp.gp_Torus_SetMajorRadius(self, *args)

    def SetMinorRadius(self, *args):
        r"""

        Parameters
        ----------
        theMinorRadius: float

        Return
        -------
        None

        Description
        -----------
        Assigns value to the minor radius of this torus. Raises ConstructionError if theMinorRadius < 0.0 or if MajorRadius - theMinorRadius <= Resolution from gp.

        """
        return _gp.gp_Torus_SetMinorRadius(self, *args)

    def SetPosition(self, *args):
        r"""

        Parameters
        ----------
        theA3: gp_Ax3

        Return
        -------
        None

        Description
        -----------
        Changes the local coordinate system of the surface.

        """
        return _gp.gp_Torus_SetPosition(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Torus_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        gp_Torus

        Description
        -----------
        Transforms a torus with the transformation theT from class Trsf.

        """
        return _gp.gp_Torus_Transformed(self, *args)

    def Translate(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Torus_Translate(self, *args)

    def Translated(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        gp_Torus

        Description
        -----------
        Translates a torus in the direction of the vector theV. The magnitude of the translation is the vector's magnitude.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        gp_Torus

        Description
        -----------
        Translates a torus from the point theP1 to the point theP2.

        """
        return _gp.gp_Torus_Translated(self, *args)

    def UReverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Reverses the U parametrization of the torus reversing the YAxis.

        """
        return _gp.gp_Torus_UReverse(self, *args)

    def VReverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Reverses the V parametrization of the torus reversing the ZAxis.

        """
        return _gp.gp_Torus_VReverse(self, *args)

    def Volume(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the volume of the torus.

        """
        return _gp.gp_Torus_Volume(self, *args)

    def XAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        returns the axis X of the torus.

        """
        return _gp.gp_Torus_XAxis(self, *args)

    def YAxis(self, *args):
        r"""
        Return
        -------
        gp_Ax1

        Description
        -----------
        returns the axis Y of the torus.

        """
        return _gp.gp_Torus_YAxis(self, *args)

    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Torus()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Torus')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Torus

# Register gp_Torus in _gp:
_gp.gp_Torus_swigregister(gp_Torus)
class gp_Trsf(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"""
        Return
        -------
        None

        Description
        -----------
        Returns the identity transformation.

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        None

        Description
        -----------
        Creates a 3D transformation from the 2D transformation theT. The resulting transformation has a homogeneous vectorial part, V3, and a translation part, T3, built from theT: a11 a12 0 a13 V3 = a21 a22 0 T3 = a23 0 0 1. 0 It also has the same scale factor as theT. This guarantees (by projection) that the transformation which would be performed by theT in a plane (2D space) is performed by the resulting transformation in the xOy plane of the 3D space, (i.e. in the plane defined by the origin (0., 0., 0.) and the vectors DX (1., 0., 0.), and DY (0., 1., 0.)). The scale factor is applied to the entire space.

        """
        _gp.gp_Trsf_swiginit(self, _gp.new_gp_Trsf(*args))

    def DumpJson(self, depth=-1):
        r"""

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        """
        return _gp.gp_Trsf_DumpJson(self, depth)

    def Form(self, *args):
        r"""
        Return
        -------
        gp_TrsfForm

        Description
        -----------
        Returns the nature of the transformation. It can be: an identity transformation, a rotation, a translation, a mirror transformation (relative to a point, an axis or a plane), a scaling transformation, or a compound transformation.

        """
        return _gp.gp_Trsf_Form(self, *args)

    def GetRotation(self, *args):
        r"""

        Parameters
        ----------
        theAxis: gp_XYZ

        Return
        -------
        theAngle: float

        Description
        -----------
        Returns the boolean True if there is non-zero rotation. In the presence of rotation, the output parameters store the axis and the angle of rotation. The method always returns positive value 'theAngle', i.e., 0. < theAngle <= PI. Note that this rotation is defined only by the vectorial part of the transformation; generally you would need to check also the translational part to obtain the axis (gp_Ax1) of rotation.
        Return
        -------
        gp_Quaternion

        Description
        -----------
        Returns quaternion representing rotational part of the transformation.

        """
        return _gp.gp_Trsf_GetRotation(self, *args)

    def HVectorialPart(self, *args):
        r"""
        Return
        -------
        gp_Mat

        Description
        -----------
        Computes the homogeneous vectorial part of the transformation. It is a 3*3 matrix which doesn't include the scale factor. In other words, the vectorial part of this transformation is equal to its homogeneous vectorial part, multiplied by the scale factor. The coefficients of this matrix must be multiplied by the scale factor to obtain the coefficients of the transformation.

        """
        return _gp.gp_Trsf_HVectorialPart(self, *args)

    def InitFromJson(self, json_string):
        r"""

        Parameters
        ----------
        json_string: the string

        Return
        -------
        bool

        Description
        -----------
        Init the object from a JSON string.

        """
        return _gp.gp_Trsf_InitFromJson(self, json_string)

    def Invert(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Trsf_Invert(self, *args)

    def Inverted(self, *args):
        r"""
        Return
        -------
        gp_Trsf

        Description
        -----------
        Computes the reverse transformation Raises an exception if the matrix of the transformation is not inversible, it means that the scale factor is lower or equal to Resolution from package gp. Computes the transformation composed with T and <self>. In a C++ implementation you can also write Tcomposed = <self> * T. Example: @code gp_Trsf T1, T2, Tcomp; ............... Tcomp = T2.Multiplied(T1); // or (Tcomp = T2 * T1) gp_Pnt P1(10.,3.,4.); gp_Pnt P2 = P1.Transformed(Tcomp); // using Tcomp gp_Pnt P3 = P1.Transformed(T1); // using T1 then T2 P3.Transform(T2); // P3 = P2 !!! @endcode.

        """
        return _gp.gp_Trsf_Inverted(self, *args)

    def IsNegative(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Returns true if the determinant of the vectorial part of this transformation is negative.

        """
        return _gp.gp_Trsf_IsNegative(self, *args)

    def Multiplied(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        gp_Trsf

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Trsf_Multiplied(self, *args)

    def Multiply(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        Computes the transformation composed with <self> and theT. <self> = <self> * theT.

        """
        return _gp.gp_Trsf_Multiply(self, *args)

    def Power(self, *args):
        r"""

        Parameters
        ----------
        theN: int

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Trsf_Power(self, *args)

    def Powered(self, *args):
        r"""

        Parameters
        ----------
        theN: int

        Return
        -------
        gp_Trsf

        Description
        -----------
        Computes the following composition of transformations <self> * <self> * .......* <self>, theN time. if theN = 0 <self> = Identity if theN < 0 <self> = <self>.Inverse() *...........* <self>.Inverse(). //! Raises if theN < 0 and if the matrix of the transformation not inversible.

        """
        return _gp.gp_Trsf_Powered(self, *args)

    def PreMultiply(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        Computes the transformation composed with <self> and T. <self> = theT * <self>.

        """
        return _gp.gp_Trsf_PreMultiply(self, *args)

    def ScaleFactor(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the scale factor.

        """
        return _gp.gp_Trsf_ScaleFactor(self, *args)

    def SetDisplacement(self, *args):
        r"""

        Parameters
        ----------
        theFromSystem1: gp_Ax3
        theToSystem2: gp_Ax3

        Return
        -------
        None

        Description
        -----------
        Modifies this transformation so that it transforms the coordinate system defined by theFromSystem1 into the one defined by theToSystem2. After this modification, this transformation transforms: - the origin of theFromSystem1 into the origin of theToSystem2, - the 'X Direction' of theFromSystem1 into the 'X Direction' of theToSystem2, - the 'Y Direction' of theFromSystem1 into the 'Y Direction' of theToSystem2, and - the 'main Direction' of theFromSystem1 into the 'main Direction' of theToSystem2. Warning When you know the coordinates of a point in one coordinate system and you want to express these coordinates in another one, do not use the transformation resulting from this function. Use the transformation that results from SetTransformation instead. SetDisplacement and SetTransformation create related transformations: the vectorial part of one is the inverse of the vectorial part of the other.

        """
        return _gp.gp_Trsf_SetDisplacement(self, *args)

    def SetForm(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_TrsfForm

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Trsf_SetForm(self, *args)

    def SetMirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        Makes the transformation into a symmetrical transformation. theP is the center of the symmetry.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        Makes the transformation into a symmetrical transformation. theA1 is the center of the axial symmetry.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        Makes the transformation into a symmetrical transformation. theA2 is the center of the planar symmetry and defines the plane of symmetry by its origin, 'X Direction' and 'Y Direction'.

        """
        return _gp.gp_Trsf_SetMirror(self, *args)

    def SetRotation(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        None

        Description
        -----------
        Changes the transformation into a rotation. theA1 is the rotation axis and theAng is the angular value of the rotation in radians.

        Parameters
        ----------
        theR: gp_Quaternion

        Return
        -------
        None

        Description
        -----------
        Changes the transformation into a rotation defined by quaternion. Note that rotation is performed around origin, i.e. no translation is involved.

        """
        return _gp.gp_Trsf_SetRotation(self, *args)

    def SetRotationPart(self, *args):
        r"""

        Parameters
        ----------
        theR: gp_Quaternion

        Return
        -------
        None

        Description
        -----------
        Replaces the rotation part with specified quaternion.

        """
        return _gp.gp_Trsf_SetRotationPart(self, *args)

    def SetScale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt
        theS: float

        Return
        -------
        None

        Description
        -----------
        Changes the transformation into a scale. theP is the center of the scale and theS is the scaling value. Raises ConstructionError If <theS> is null.

        """
        return _gp.gp_Trsf_SetScale(self, *args)

    def SetScaleFactor(self, *args):
        r"""

        Parameters
        ----------
        theS: float

        Return
        -------
        None

        Description
        -----------
        Modifies the scale factor. Raises ConstructionError If theS is null.

        """
        return _gp.gp_Trsf_SetScaleFactor(self, *args)

    def SetTransformation(self, *args):
        r"""

        Parameters
        ----------
        theFromSystem1: gp_Ax3
        theToSystem2: gp_Ax3

        Return
        -------
        None

        Description
        -----------
        Modifies this transformation so that it transforms the coordinates of any point, (x, y, z), relative to a source coordinate system into the coordinates (x', y', z') which are relative to a target coordinate system, but which represent the same point The transformation is from the coordinate system 'theFromSystem1' to the coordinate system 'theToSystem2'. Example: @code gp_Ax3 theFromSystem1, theToSystem2; double x1, y1, z1; // are the coordinates of a point in the local system theFromSystem1 double x2, y2, z2; // are the coordinates of a point in the local system theToSystem2 gp_Pnt P1 (x1, y1, z1) gp_Trsf T; T.SetTransformation (theFromSystem1, theToSystem2); gp_Pnt P2 = P1.Transformed (T); P2.Coord (x2, y2, z2); @endcode.

        Parameters
        ----------
        theToSystem: gp_Ax3

        Return
        -------
        None

        Description
        -----------
        Modifies this transformation so that it transforms the coordinates of any point, (x, y, z), relative to a source coordinate system into the coordinates (x', y', z') which are relative to a target coordinate system, but which represent the same point The transformation is from the default coordinate system @code {P(0.,0.,0.), VX (1.,0.,0.), VY (0.,1.,0.), VZ (0., 0. ,1.) } @endcode to the local coordinate system defined with the Ax3 theToSystem. Use in the same way as the previous method. FromSystem1 is defaulted to the absolute coordinate system.

        Parameters
        ----------
        R: gp_Quaternion
        theT: gp_Vec

        Return
        -------
        None

        Description
        -----------
        Sets transformation by directly specified rotation and translation.

        """
        return _gp.gp_Trsf_SetTransformation(self, *args)

    def SetTranslation(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        None

        Description
        -----------
        Changes the transformation into a translation. theV is the vector of the translation.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        Makes the transformation into a translation where the translation vector is the vector (theP1, theP2) defined from point theP1 to point theP2.

        """
        return _gp.gp_Trsf_SetTranslation(self, *args)

    def SetTranslationPart(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        None

        Description
        -----------
        Replaces the translation vector with the vector theV.

        """
        return _gp.gp_Trsf_SetTranslationPart(self, *args)

    def SetValues(self, *args):
        r"""

        Parameters
        ----------
        a11: float
        a12: float
        a13: float
        a14: float
        a21: float
        a22: float
        a23: float
        a24: float
        a31: float
        a32: float
        a33: float
        a34: float

        Return
        -------
        None

        Description
        -----------
        Sets the coefficients of the transformation. The transformation of the point x,y,z is the point x',y',z' with: @code x' = a11 x + a12 y + a13 z + a14 y' = a21 x + a22 y + a23 z + a24 z' = a31 x + a32 y + a33 z + a34 @endcode The method Value(i,j) will return aij. Raises ConstructionError if the determinant of the aij is null. The matrix is orthogonalized before future using.

        """
        return _gp.gp_Trsf_SetValues(self, *args)

    def Transforms(self, *args):
        r"""

        Parameters
        ----------

        Return
        -------
        theX: float
        theY: float
        theZ: float

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theCoord: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        Transformation of a triplet XYZ with a Trsf.

        """
        return _gp.gp_Trsf_Transforms(self, *args)

    def TranslationPart(self, *args):
        r"""
        Return
        -------
        gp_XYZ

        Description
        -----------
        Returns the translation part of the transformation's matrix.

        """
        return _gp.gp_Trsf_TranslationPart(self, *args)

    def Value(self, *args):
        r"""

        Parameters
        ----------
        theRow: int
        theCol: int

        Return
        -------
        float

        Description
        -----------
        Returns the coefficients of the transformation's matrix. It is a 3 rows * 4 columns matrix. This coefficient includes the scale factor. Raises OutOfRanged if theRow < 1 or theRow > 3 or theCol < 1 or theCol > 4.

        """
        return _gp.gp_Trsf_Value(self, *args)

    def VectorialPart(self, *args):
        r"""
        Return
        -------
        gp_Mat

        Description
        -----------
        Returns the vectorial part of the transformation. It is a 3*3 matrix which includes the scale factor.

        """
        return _gp.gp_Trsf_VectorialPart(self, *args)

    def __mul__(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        gp_Trsf

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Trsf___mul__(self, *args)

    def __imul_wrapper__(self, other):
        return _gp.gp_Trsf___imul_wrapper__(self, other)

    def __imul__(self, right):
        self.__imul_wrapper__(right)
        return self


    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Trsf()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Trsf')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Trsf

# Register gp_Trsf in _gp:
_gp.gp_Trsf_swigregister(gp_Trsf)
class gp_Trsf2d(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"""
        Return
        -------
        None

        Description
        -----------
        Returns identity transformation.

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        Creates a 2d transformation in the XY plane from a 3d transformation .

        """
        _gp.gp_Trsf2d_swiginit(self, _gp.new_gp_Trsf2d(*args))

    def Form(self, *args):
        r"""
        Return
        -------
        gp_TrsfForm

        Description
        -----------
        Returns the nature of the transformation. It can be an identity transformation, a rotation, a translation, a mirror (relative to a point or an axis), a scaling transformation, or a compound transformation.

        """
        return _gp.gp_Trsf2d_Form(self, *args)

    def HVectorialPart(self, *args):
        r"""
        Return
        -------
        gp_Mat2d

        Description
        -----------
        Returns the homogeneous vectorial part of the transformation. It is a 2*2 matrix which doesn't include the scale factor. The coefficients of this matrix must be multiplied by the scale factor to obtain the coefficients of the transformation.

        """
        return _gp.gp_Trsf2d_HVectorialPart(self, *args)

    def Invert(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Trsf2d_Invert(self, *args)

    def Inverted(self, *args):
        r"""
        Return
        -------
        gp_Trsf2d

        Description
        -----------
        Computes the reverse transformation. Raises an exception if the matrix of the transformation is not inversible, it means that the scale factor is lower or equal to Resolution from package gp.

        """
        return _gp.gp_Trsf2d_Inverted(self, *args)

    def IsNegative(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Returns true if the determinant of the vectorial part of this transformation is negative..

        """
        return _gp.gp_Trsf2d_IsNegative(self, *args)

    def Multiplied(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        gp_Trsf2d

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Trsf2d_Multiplied(self, *args)

    def Multiply(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        None

        Description
        -----------
        Computes the transformation composed from <self> and theT. <self> = <self> * theT.

        """
        return _gp.gp_Trsf2d_Multiply(self, *args)

    def Power(self, *args):
        r"""

        Parameters
        ----------
        theN: int

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Trsf2d_Power(self, *args)

    def Powered(self, *args):
        r"""

        Parameters
        ----------
        theN: int

        Return
        -------
        gp_Trsf2d

        Description
        -----------
        Computes the following composition of transformations <self> * <self> * .......* <self>, theN time. if theN = 0 <self> = Identity if theN < 0 <self> = <self>.Inverse() *...........* <self>.Inverse(). //! Raises if theN < 0 and if the matrix of the transformation not inversible.

        """
        return _gp.gp_Trsf2d_Powered(self, *args)

    def PreMultiply(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        None

        Description
        -----------
        Computes the transformation composed from <self> and theT. <self> = theT * <self>.

        """
        return _gp.gp_Trsf2d_PreMultiply(self, *args)

    def RotationPart(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the angle corresponding to the rotational component of the transformation matrix (operation opposite to SetRotation()).

        """
        return _gp.gp_Trsf2d_RotationPart(self, *args)

    def ScaleFactor(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the scale factor.

        """
        return _gp.gp_Trsf2d_ScaleFactor(self, *args)

    def SetMirror(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        Changes the transformation into a symmetrical transformation. theP is the center of the symmetry.

        Parameters
        ----------
        theA: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        Changes the transformation into a symmetrical transformation. theA is the center of the axial symmetry.

        """
        return _gp.gp_Trsf2d_SetMirror(self, *args)

    def SetRotation(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theAng: float

        Return
        -------
        None

        Description
        -----------
        Changes the transformation into a rotation. theP is the rotation's center and theAng is the angular value of the rotation in radian.

        """
        return _gp.gp_Trsf2d_SetRotation(self, *args)

    def SetScale(self, *args):
        r"""

        Parameters
        ----------
        theP: gp_Pnt2d
        theS: float

        Return
        -------
        None

        Description
        -----------
        Changes the transformation into a scale. theP is the center of the scale and theS is the scaling value.

        """
        return _gp.gp_Trsf2d_SetScale(self, *args)

    def SetScaleFactor(self, *args):
        r"""

        Parameters
        ----------
        theS: float

        Return
        -------
        None

        Description
        -----------
        Modifies the scale factor.

        """
        return _gp.gp_Trsf2d_SetScaleFactor(self, *args)

    def SetTransformation(self, *args):
        r"""

        Parameters
        ----------
        theFromSystem1: gp_Ax2d
        theToSystem2: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        Changes a transformation allowing passage from the coordinate system 'theFromSystem1' to the coordinate system 'theToSystem2'.

        Parameters
        ----------
        theToSystem: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        Changes the transformation allowing passage from the basic coordinate system {P(0.,0.,0.), VX (1.,0.,0.), VY (0.,1.,0.)} to the local coordinate system defined with the Ax2d theToSystem.

        """
        return _gp.gp_Trsf2d_SetTransformation(self, *args)

    def SetTranslation(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        None

        Description
        -----------
        Changes the transformation into a translation. theV is the vector of the translation.

        Parameters
        ----------
        theP1: gp_Pnt2d
        theP2: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        Makes the transformation into a translation from the point theP1 to the point theP2.

        """
        return _gp.gp_Trsf2d_SetTranslation(self, *args)

    def SetTranslationPart(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        None

        Description
        -----------
        Replaces the translation vector with theV.

        """
        return _gp.gp_Trsf2d_SetTranslationPart(self, *args)

    def SetValues(self, *args):
        r"""

        Parameters
        ----------
        a11: float
        a12: float
        a13: float
        a21: float
        a22: float
        a23: float

        Return
        -------
        None

        Description
        -----------
        Sets the coefficients of the transformation. The transformation of the point x,y is the point x',y' with: @code x' = a11 x + a12 y + a13 y' = a21 x + a22 y + a23 @endcode The method Value(i,j) will return aij. Raises ConstructionError if the determinant of the aij is null. If the matrix as not a uniform scale it will be orthogonalized before future using.

        """
        return _gp.gp_Trsf2d_SetValues(self, *args)

    def Transforms(self, *args):
        r"""

        Parameters
        ----------

        Return
        -------
        theX: float
        theY: float

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theCoord: gp_XY

        Return
        -------
        None

        Description
        -----------
        Transforms a doublet XY with a Trsf2d.

        """
        return _gp.gp_Trsf2d_Transforms(self, *args)

    def TranslationPart(self, *args):
        r"""
        Return
        -------
        gp_XY

        Description
        -----------
        Returns the translation part of the transformation's matrix.

        """
        return _gp.gp_Trsf2d_TranslationPart(self, *args)

    def Value(self, *args):
        r"""

        Parameters
        ----------
        theRow: int
        theCol: int

        Return
        -------
        float

        Description
        -----------
        Returns the coefficients of the transformation's matrix. It is a 2 rows * 3 columns matrix. Raises OutOfRange if theRow < 1 or theRow > 2 or theCol < 1 or theCol > 3.

        """
        return _gp.gp_Trsf2d_Value(self, *args)

    def VectorialPart(self, *args):
        r"""
        Return
        -------
        gp_Mat2d

        Description
        -----------
        Returns the vectorial part of the transformation. It is a 2*2 matrix which includes the scale factor.

        """
        return _gp.gp_Trsf2d_VectorialPart(self, *args)

    def __mul__(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        gp_Trsf2d

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Trsf2d___mul__(self, *args)

    def __imul_wrapper__(self, other):
        return _gp.gp_Trsf2d___imul_wrapper__(self, other)

    def __imul__(self, right):
        self.__imul_wrapper__(right)
        return self


    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Trsf2d()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Trsf2d')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Trsf2d

# Register gp_Trsf2d in _gp:
_gp.gp_Trsf2d_swigregister(gp_Trsf2d)
class gp_Vec(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"""
        Return
        -------
        None

        Description
        -----------
        Creates a zero vector.

        Parameters
        ----------
        theV: gp_Dir

        Return
        -------
        None

        Description
        -----------
        Creates a unitary vector from a direction theV.

        Parameters
        ----------
        theCoord: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        Creates a vector with a triplet of coordinates.

        Parameters
        ----------
        theXv: float
        theYv: float
        theZv: float

        Return
        -------
        None

        Description
        -----------
        Creates a point with its three cartesian coordinates.

        Parameters
        ----------
        theP1: gp_Pnt
        theP2: gp_Pnt

        Return
        -------
        None

        Description
        -----------
        Creates a vector from two points. The length of the vector is the distance between theP1 and theP2.

        """
        _gp.gp_Vec_swiginit(self, _gp.new_gp_Vec(*args))

    def Add(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Vec

        Return
        -------
        None

        Description
        -----------
        Adds two vectors.

        """
        return _gp.gp_Vec_Add(self, *args)

    def Added(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Vec

        Return
        -------
        gp_Vec

        Description
        -----------
        Adds two vectors.

        """
        return _gp.gp_Vec_Added(self, *args)

    def Angle(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Vec

        Return
        -------
        float

        Description
        -----------
        Computes the angular value between <self> and <theOther> Returns the angle value between 0 and PI in radian. Raises VectorWithNullMagnitude if <self>.Magnitude() <= Resolution from gp or theOther.Magnitude() <= Resolution because the angular value is indefinite if one of the vectors has a null magnitude.

        """
        return _gp.gp_Vec_Angle(self, *args)

    def AngleWithRef(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Vec
        theVRef: gp_Vec

        Return
        -------
        float

        Description
        -----------
        Computes the angle, in radians, between this vector and vector theOther. The result is a value between -Pi and Pi. For this, theVRef defines the positive sense of rotation: the angular value is positive, if the cross product this ^ theOther has the same orientation as theVRef relative to the plane defined by the vectors this and theOther. Otherwise, the angular value is negative. Exceptions gp_VectorWithNullMagnitude if the magnitude of this vector, the vector theOther, or the vector theVRef is less than or equal to gp::Resolution(). Standard_DomainError if this vector, the vector theOther, and the vector theVRef are coplanar, unless this vector and the vector theOther are parallel.

        """
        return _gp.gp_Vec_AngleWithRef(self, *args)

    def Coord(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int

        Return
        -------
        float

        Description
        -----------
        Returns the coordinate of range theIndex: theIndex = 1 => X is returned theIndex = 2 => Y is returned theIndex = 3 => Z is returned Raised if theIndex != {1, 2, 3}.

        Parameters
        ----------

        Return
        -------
        theXv: float
        theYv: float
        theZv: float

        Description
        -----------
        For this vector returns its three coordinates theXv, theYv, and theZv inline.

        """
        return _gp.gp_Vec_Coord(self, *args)

    def Cross(self, *args):
        r"""

        Parameters
        ----------
        theRight: gp_Vec

        Return
        -------
        None

        Description
        -----------
        computes the cross product between two vectors.

        """
        return _gp.gp_Vec_Cross(self, *args)

    def CrossCross(self, *args):
        r"""

        Parameters
        ----------
        theV1: gp_Vec
        theV2: gp_Vec

        Return
        -------
        None

        Description
        -----------
        Computes the triple vector product. <self> ^= (theV1 ^ theV2).

        """
        return _gp.gp_Vec_CrossCross(self, *args)

    def CrossCrossed(self, *args):
        r"""

        Parameters
        ----------
        theV1: gp_Vec
        theV2: gp_Vec

        Return
        -------
        gp_Vec

        Description
        -----------
        Computes the triple vector product. <self> ^ (theV1 ^ theV2).

        """
        return _gp.gp_Vec_CrossCrossed(self, *args)

    def CrossMagnitude(self, *args):
        r"""

        Parameters
        ----------
        theRight: gp_Vec

        Return
        -------
        float

        Description
        -----------
        Computes the magnitude of the cross product between <self> and theRight. Returns || <self> ^ theRight ||.

        """
        return _gp.gp_Vec_CrossMagnitude(self, *args)

    def CrossSquareMagnitude(self, *args):
        r"""

        Parameters
        ----------
        theRight: gp_Vec

        Return
        -------
        float

        Description
        -----------
        Computes the square magnitude of the cross product between <self> and theRight. Returns || <self> ^ theRight ||**2.

        """
        return _gp.gp_Vec_CrossSquareMagnitude(self, *args)

    def Crossed(self, *args):
        r"""

        Parameters
        ----------
        theRight: gp_Vec

        Return
        -------
        gp_Vec

        Description
        -----------
        computes the cross product between two vectors.

        """
        return _gp.gp_Vec_Crossed(self, *args)

    def Divide(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        None

        Description
        -----------
        Divides a vector by a scalar.

        """
        return _gp.gp_Vec_Divide(self, *args)

    def Divided(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        gp_Vec

        Description
        -----------
        Divides a vector by a scalar.

        """
        return _gp.gp_Vec_Divided(self, *args)

    def Dot(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Vec

        Return
        -------
        float

        Description
        -----------
        computes the scalar product.

        """
        return _gp.gp_Vec_Dot(self, *args)

    def DotCross(self, *args):
        r"""

        Parameters
        ----------
        theV1: gp_Vec
        theV2: gp_Vec

        Return
        -------
        float

        Description
        -----------
        Computes the triple scalar product <self> * (theV1 ^ theV2).

        """
        return _gp.gp_Vec_DotCross(self, *args)

    def DumpJson(self, depth=-1):
        r"""

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        """
        return _gp.gp_Vec_DumpJson(self, depth)

    def IsEqual(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Vec
        theLinearTolerance: float
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if the two vectors have the same magnitude value and the same direction. The precision values are theLinearTolerance for the magnitude and theAngularTolerance for the direction.

        """
        return _gp.gp_Vec_IsEqual(self, *args)

    def IsNormal(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Vec
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if abs(<self>.Angle(theOther) - PI/2.) <= theAngularTolerance Raises VectorWithNullMagnitude if <self>.Magnitude() <= Resolution or theOther.Magnitude() <= Resolution from gp.

        """
        return _gp.gp_Vec_IsNormal(self, *args)

    def IsOpposite(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Vec
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if PI - <self>.Angle(theOther) <= theAngularTolerance Raises VectorWithNullMagnitude if <self>.Magnitude() <= Resolution or Other.Magnitude() <= Resolution from gp.

        """
        return _gp.gp_Vec_IsOpposite(self, *args)

    def IsParallel(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Vec
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if Angle(<self>, theOther) <= theAngularTolerance or PI - Angle(<self>, theOther) <= theAngularTolerance This definition means that two parallel vectors cannot define a plane but two vectors with opposite directions are considered as parallel. Raises VectorWithNullMagnitude if <self>.Magnitude() <= Resolution or Other.Magnitude() <= Resolution from gp.

        """
        return _gp.gp_Vec_IsParallel(self, *args)

    def Magnitude(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the magnitude of this vector.

        """
        return _gp.gp_Vec_Magnitude(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Vec_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec

        Return
        -------
        gp_Vec

        Description
        -----------
        Performs the symmetrical transformation of a vector with respect to the vector theV which is the center of the symmetry.

        Parameters
        ----------
        theA1: gp_Ax1

        Return
        -------
        gp_Vec

        Description
        -----------
        Performs the symmetrical transformation of a vector with respect to an axis placement which is the axis of the symmetry.

        Parameters
        ----------
        theA2: gp_Ax2

        Return
        -------
        gp_Vec

        Description
        -----------
        Performs the symmetrical transformation of a vector with respect to a plane. The axis placement theA2 locates the plane of the symmetry: (Location, XDirection, YDirection).

        """
        return _gp.gp_Vec_Mirrored(self, *args)

    def Multiplied(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        gp_Vec

        Description
        -----------
        Multiplies a vector by a scalar.

        """
        return _gp.gp_Vec_Multiplied(self, *args)

    def Multiply(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        None

        Description
        -----------
        Multiplies a vector by a scalar.

        """
        return _gp.gp_Vec_Multiply(self, *args)

    def Normalize(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        normalizes a vector Raises an exception if the magnitude of the vector is lower or equal to Resolution from gp.

        """
        return _gp.gp_Vec_Normalize(self, *args)

    def Normalized(self, *args):
        r"""
        Return
        -------
        gp_Vec

        Description
        -----------
        normalizes a vector Raises an exception if the magnitude of the vector is lower or equal to Resolution from gp.

        """
        return _gp.gp_Vec_Normalized(self, *args)

    def Reverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Reverses the direction of a vector.

        """
        return _gp.gp_Vec_Reverse(self, *args)

    def Reversed(self, *args):
        r"""
        Return
        -------
        gp_Vec

        Description
        -----------
        Reverses the direction of a vector.

        """
        return _gp.gp_Vec_Reversed(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Vec_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theA1: gp_Ax1
        theAng: float

        Return
        -------
        gp_Vec

        Description
        -----------
        Rotates a vector. theA1 is the axis of the rotation. theAng is the angular value of the rotation in radians.

        """
        return _gp.gp_Vec_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theS: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Vec_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theS: float

        Return
        -------
        gp_Vec

        Description
        -----------
        Scales a vector. theS is the scaling value.

        """
        return _gp.gp_Vec_Scaled(self, *args)

    def SetCoord(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int
        theXi: float

        Return
        -------
        None

        Description
        -----------
        Changes the coordinate of range theIndex theIndex = 1 => X is modified theIndex = 2 => Y is modified theIndex = 3 => Z is modified Raised if theIndex != {1, 2, 3}.

        Parameters
        ----------
        theXv: float
        theYv: float
        theZv: float

        Return
        -------
        None

        Description
        -----------
        For this vector, assigns - the values theXv, theYv and theZv to its three coordinates.

        """
        return _gp.gp_Vec_SetCoord(self, *args)

    def SetLinearForm(self, *args):
        r"""

        Parameters
        ----------
        theA1: float
        theV1: gp_Vec
        theA2: float
        theV2: gp_Vec
        theA3: float
        theV3: gp_Vec
        theV4: gp_Vec

        Return
        -------
        None

        Description
        -----------
        <self> is set to the following linear form: theA1 * theV1 + theA2 * theV2 + theA3 * theV3 + theV4.

        Parameters
        ----------
        theA1: float
        theV1: gp_Vec
        theA2: float
        theV2: gp_Vec
        theA3: float
        theV3: gp_Vec

        Return
        -------
        None

        Description
        -----------
        <self> is set to the following linear form: theA1 * theV1 + theA2 * theV2 + theA3 * theV3.

        Parameters
        ----------
        theA1: float
        theV1: gp_Vec
        theA2: float
        theV2: gp_Vec
        theV3: gp_Vec

        Return
        -------
        None

        Description
        -----------
        <self> is set to the following linear form: theA1 * theV1 + theA2 * theV2 + theV3.

        Parameters
        ----------
        theA1: float
        theV1: gp_Vec
        theA2: float
        theV2: gp_Vec

        Return
        -------
        None

        Description
        -----------
        <self> is set to the following linear form: theA1 * theV1 + theA2 * theV2.

        Parameters
        ----------
        theA1: float
        theV1: gp_Vec
        theV2: gp_Vec

        Return
        -------
        None

        Description
        -----------
        <self> is set to the following linear form: theA1 * theV1 + theV2.

        Parameters
        ----------
        theV1: gp_Vec
        theV2: gp_Vec

        Return
        -------
        None

        Description
        -----------
        <self> is set to the following linear form: theV1 + theV2.

        """
        return _gp.gp_Vec_SetLinearForm(self, *args)

    def SetX(self, *args):
        r"""

        Parameters
        ----------
        theX: float

        Return
        -------
        None

        Description
        -----------
        Assigns the given value to the X coordinate of this vector.

        """
        return _gp.gp_Vec_SetX(self, *args)

    def SetXYZ(self, *args):
        r"""

        Parameters
        ----------
        theCoord: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        Assigns the three coordinates of theCoord to this vector.

        """
        return _gp.gp_Vec_SetXYZ(self, *args)

    def SetY(self, *args):
        r"""

        Parameters
        ----------
        theY: float

        Return
        -------
        None

        Description
        -----------
        Assigns the given value to the X coordinate of this vector.

        """
        return _gp.gp_Vec_SetY(self, *args)

    def SetZ(self, *args):
        r"""

        Parameters
        ----------
        theZ: float

        Return
        -------
        None

        Description
        -----------
        Assigns the given value to the X coordinate of this vector.

        """
        return _gp.gp_Vec_SetZ(self, *args)

    def SquareMagnitude(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the square magnitude of this vector.

        """
        return _gp.gp_Vec_SquareMagnitude(self, *args)

    def Subtract(self, *args):
        r"""

        Parameters
        ----------
        theRight: gp_Vec

        Return
        -------
        None

        Description
        -----------
        Subtracts two vectors.

        """
        return _gp.gp_Vec_Subtract(self, *args)

    def Subtracted(self, *args):
        r"""

        Parameters
        ----------
        theRight: gp_Vec

        Return
        -------
        gp_Vec

        Description
        -----------
        Subtracts two vectors.

        """
        return _gp.gp_Vec_Subtracted(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        None

        Description
        -----------
        Transforms a vector with the transformation theT.

        """
        return _gp.gp_Vec_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf

        Return
        -------
        gp_Vec

        Description
        -----------
        Transforms a vector with the transformation theT.

        """
        return _gp.gp_Vec_Transformed(self, *args)

    def X(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        For this vector, returns its X coordinate.

        """
        return _gp.gp_Vec_X(self, *args)

    def XYZ(self, *args):
        r"""
        Return
        -------
        gp_XYZ

        Description
        -----------
        For this vector, returns - its three coordinates as a number triple.

        """
        return _gp.gp_Vec_XYZ(self, *args)

    def Y(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        For this vector, returns its Y coordinate.

        """
        return _gp.gp_Vec_Y(self, *args)

    def Z(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        For this vector, returns its Z coordinate.

        """
        return _gp.gp_Vec_Z(self, *args)

    def __mul__(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        gp_Vec

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theOther: gp_Vec

        Return
        -------
        float

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Vec___mul__(self, *args)

    def __imul_wrapper__(self, other):
        return _gp.gp_Vec___imul_wrapper__(self, other)

    def __imul__(self, right):
        self.__imul_wrapper__(right)
        return self


    def __add__(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Vec

        Return
        -------
        gp_Vec

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Vec___add__(self, *args)

    def __iadd_wrapper__(self, other):
        return _gp.gp_Vec___iadd_wrapper__(self, other)

    def __iadd__(self, right):
        self.__iadd_wrapper__(right)
        return self


    def __sub__(self, *args):
        r"""

        Parameters
        ----------
        theRight: gp_Vec

        Return
        -------
        gp_Vec

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Vec___sub__(self, *args)

    def __neg__(self, *args):
        r"""
        Return
        -------
        gp_Vec

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Vec___neg__(self, *args)

    def __isub_wrapper__(self, other):
        return _gp.gp_Vec___isub_wrapper__(self, other)

    def __isub__(self, right):
        self.__isub_wrapper__(right)
        return self


    def __truediv__(self, *args):
        return _gp.gp_Vec___truediv__(self, *args)
    __div__ = __truediv__



    def __itruediv_wrapper__(self, other):
        return _gp.gp_Vec___itruediv_wrapper__(self, other)

    def __itruediv__(self, right):
        self.__itruediv_wrapper__(right)
        return self


    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Vec()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Vec')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Vec

# Register gp_Vec in _gp:
_gp.gp_Vec_swigregister(gp_Vec)
class gp_Vec2d(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"""
        Return
        -------
        None

        Description
        -----------
        Creates a zero vector.

        Parameters
        ----------
        theV: gp_Dir2d

        Return
        -------
        None

        Description
        -----------
        Creates a unitary vector from a direction theV.

        Parameters
        ----------
        theCoord: gp_XY

        Return
        -------
        None

        Description
        -----------
        Creates a vector with a doublet of coordinates.

        Parameters
        ----------
        theXv: float
        theYv: float

        Return
        -------
        None

        Description
        -----------
        Creates a point with its two Cartesian coordinates.

        Parameters
        ----------
        theP1: gp_Pnt2d
        theP2: gp_Pnt2d

        Return
        -------
        None

        Description
        -----------
        Creates a vector from two points. The length of the vector is the distance between theP1 and theP2.

        """
        _gp.gp_Vec2d_swiginit(self, _gp.new_gp_Vec2d(*args))

    def Add(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Vec2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Vec2d_Add(self, *args)

    def Added(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Vec2d

        Return
        -------
        gp_Vec2d

        Description
        -----------
        Adds two vectors.

        """
        return _gp.gp_Vec2d_Added(self, *args)

    def Angle(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Vec2d

        Return
        -------
        float

        Description
        -----------
        Computes the angular value between <self> and <theOther> returns the angle value between -PI and PI in radian. The orientation is from <self> to theOther. The positive sense is the trigonometric sense. Raises VectorWithNullMagnitude if <self>.Magnitude() <= Resolution from gp or theOther.Magnitude() <= Resolution because the angular value is indefinite if one of the vectors has a null magnitude.

        """
        return _gp.gp_Vec2d_Angle(self, *args)

    def Coord(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int

        Return
        -------
        float

        Description
        -----------
        Returns the coordinate of range theIndex: theIndex = 1 => X is returned theIndex = 2 => Y is returned Raised if theIndex != {1, 2}.

        Parameters
        ----------

        Return
        -------
        theXv: float
        theYv: float

        Description
        -----------
        For this vector, returns its two coordinates theXv and theYv.

        """
        return _gp.gp_Vec2d_Coord(self, *args)

    def CrossMagnitude(self, *args):
        r"""

        Parameters
        ----------
        theRight: gp_Vec2d

        Return
        -------
        float

        Description
        -----------
        Computes the magnitude of the cross product between <self> and theRight. Returns || <self> ^ theRight ||.

        """
        return _gp.gp_Vec2d_CrossMagnitude(self, *args)

    def CrossSquareMagnitude(self, *args):
        r"""

        Parameters
        ----------
        theRight: gp_Vec2d

        Return
        -------
        float

        Description
        -----------
        Computes the square magnitude of the cross product between <self> and theRight. Returns || <self> ^ theRight ||**2.

        """
        return _gp.gp_Vec2d_CrossSquareMagnitude(self, *args)

    def Crossed(self, *args):
        r"""

        Parameters
        ----------
        theRight: gp_Vec2d

        Return
        -------
        float

        Description
        -----------
        Computes the crossing product between two vectors.

        """
        return _gp.gp_Vec2d_Crossed(self, *args)

    def Divide(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Vec2d_Divide(self, *args)

    def Divided(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        gp_Vec2d

        Description
        -----------
        divides a vector by a scalar.

        """
        return _gp.gp_Vec2d_Divided(self, *args)

    def Dot(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Vec2d

        Return
        -------
        float

        Description
        -----------
        Computes the scalar product.

        """
        return _gp.gp_Vec2d_Dot(self, *args)

    def GetNormal(self, *args):
        r"""
        Return
        -------
        gp_Vec2d

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Vec2d_GetNormal(self, *args)

    def IsEqual(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Vec2d
        theLinearTolerance: float
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if the two vectors have the same magnitude value and the same direction. The precision values are theLinearTolerance for the magnitude and theAngularTolerance for the direction.

        """
        return _gp.gp_Vec2d_IsEqual(self, *args)

    def IsNormal(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Vec2d
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if abs(Abs(<self>.Angle(theOther)) - PI/2.) <= theAngularTolerance Raises VectorWithNullMagnitude if <self>.Magnitude() <= Resolution or theOther.Magnitude() <= Resolution from gp.

        """
        return _gp.gp_Vec2d_IsNormal(self, *args)

    def IsOpposite(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Vec2d
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if PI - Abs(<self>.Angle(theOther)) <= theAngularTolerance Raises VectorWithNullMagnitude if <self>.Magnitude() <= Resolution or theOther.Magnitude() <= Resolution from gp.

        """
        return _gp.gp_Vec2d_IsOpposite(self, *args)

    def IsParallel(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Vec2d
        theAngularTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns true if Abs(Angle(<self>, theOther)) <= theAngularTolerance or PI - Abs(Angle(<self>, theOther)) <= theAngularTolerance Two vectors with opposite directions are considered as parallel. Raises VectorWithNullMagnitude if <self>.Magnitude() <= Resolution or theOther.Magnitude() <= Resolution from gp.

        """
        return _gp.gp_Vec2d_IsParallel(self, *args)

    def Magnitude(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the magnitude of this vector.

        """
        return _gp.gp_Vec2d_Magnitude(self, *args)

    def Mirror(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        None

        Description
        -----------
        Performs the symmetrical transformation of a vector with respect to the vector theV which is the center of the symmetry.

        Parameters
        ----------
        theA1: gp_Ax2d

        Return
        -------
        None

        Description
        -----------
        Performs the symmetrical transformation of a vector with respect to an axis placement which is the axis of the symmetry.

        """
        return _gp.gp_Vec2d_Mirror(self, *args)

    def Mirrored(self, *args):
        r"""

        Parameters
        ----------
        theV: gp_Vec2d

        Return
        -------
        gp_Vec2d

        Description
        -----------
        Performs the symmetrical transformation of a vector with respect to the vector theV which is the center of the symmetry.

        Parameters
        ----------
        theA1: gp_Ax2d

        Return
        -------
        gp_Vec2d

        Description
        -----------
        Performs the symmetrical transformation of a vector with respect to an axis placement which is the axis of the symmetry.

        """
        return _gp.gp_Vec2d_Mirrored(self, *args)

    def Multiplied(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        gp_Vec2d

        Description
        -----------
        Normalizes a vector Raises an exception if the magnitude of the vector is lower or equal to Resolution from package gp.

        """
        return _gp.gp_Vec2d_Multiplied(self, *args)

    def Multiply(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Vec2d_Multiply(self, *args)

    def Normalize(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Vec2d_Normalize(self, *args)

    def Normalized(self, *args):
        r"""
        Return
        -------
        gp_Vec2d

        Description
        -----------
        Normalizes a vector Raises an exception if the magnitude of the vector is lower or equal to Resolution from package gp. Reverses the direction of a vector.

        """
        return _gp.gp_Vec2d_Normalized(self, *args)

    def Reverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Vec2d_Reverse(self, *args)

    def Reversed(self, *args):
        r"""
        Return
        -------
        gp_Vec2d

        Description
        -----------
        Reverses the direction of a vector.

        """
        return _gp.gp_Vec2d_Reversed(self, *args)

    def Rotate(self, *args):
        r"""

        Parameters
        ----------
        theAng: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Vec2d_Rotate(self, *args)

    def Rotated(self, *args):
        r"""

        Parameters
        ----------
        theAng: float

        Return
        -------
        gp_Vec2d

        Description
        -----------
        Rotates a vector. theAng is the angular value of the rotation in radians.

        """
        return _gp.gp_Vec2d_Rotated(self, *args)

    def Scale(self, *args):
        r"""

        Parameters
        ----------
        theS: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Vec2d_Scale(self, *args)

    def Scaled(self, *args):
        r"""

        Parameters
        ----------
        theS: float

        Return
        -------
        gp_Vec2d

        Description
        -----------
        Scales a vector. theS is the scaling value.

        """
        return _gp.gp_Vec2d_Scaled(self, *args)

    def SetCoord(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int
        theXi: float

        Return
        -------
        None

        Description
        -----------
        Changes the coordinate of range theIndex theIndex = 1 => X is modified theIndex = 2 => Y is modified Raises OutOfRange if theIndex != {1, 2}.

        Parameters
        ----------
        theXv: float
        theYv: float

        Return
        -------
        None

        Description
        -----------
        For this vector, assigns the values theXv and theYv to its two coordinates.

        """
        return _gp.gp_Vec2d_SetCoord(self, *args)

    def SetLinearForm(self, *args):
        r"""

        Parameters
        ----------
        theA1: float
        theV1: gp_Vec2d
        theA2: float
        theV2: gp_Vec2d
        theV3: gp_Vec2d

        Return
        -------
        None

        Description
        -----------
        <self> is set to the following linear form: theA1 * theV1 + theA2 * theV2 + theV3.

        Parameters
        ----------
        theA1: float
        theV1: gp_Vec2d
        theA2: float
        theV2: gp_Vec2d

        Return
        -------
        None

        Description
        -----------
        <self> is set to the following linear form: theA1 * theV1 + theA2 * theV2.

        Parameters
        ----------
        theA1: float
        theV1: gp_Vec2d
        theV2: gp_Vec2d

        Return
        -------
        None

        Description
        -----------
        <self> is set to the following linear form: theA1 * theV1 + theV2.

        Parameters
        ----------
        theV1: gp_Vec2d
        theV2: gp_Vec2d

        Return
        -------
        None

        Description
        -----------
        <self> is set to the following linear form: theV1 + theV2.

        """
        return _gp.gp_Vec2d_SetLinearForm(self, *args)

    def SetX(self, *args):
        r"""

        Parameters
        ----------
        theX: float

        Return
        -------
        None

        Description
        -----------
        Assigns the given value to the X coordinate of this vector.

        """
        return _gp.gp_Vec2d_SetX(self, *args)

    def SetXY(self, *args):
        r"""

        Parameters
        ----------
        theCoord: gp_XY

        Return
        -------
        None

        Description
        -----------
        Assigns the two coordinates of theCoord to this vector.

        """
        return _gp.gp_Vec2d_SetXY(self, *args)

    def SetY(self, *args):
        r"""

        Parameters
        ----------
        theY: float

        Return
        -------
        None

        Description
        -----------
        Assigns the given value to the Y coordinate of this vector.

        """
        return _gp.gp_Vec2d_SetY(self, *args)

    def SquareMagnitude(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the square magnitude of this vector.

        """
        return _gp.gp_Vec2d_SquareMagnitude(self, *args)

    def Subtract(self, *args):
        r"""

        Parameters
        ----------
        theRight: gp_Vec2d

        Return
        -------
        None

        Description
        -----------
        Subtracts two vectors.

        """
        return _gp.gp_Vec2d_Subtract(self, *args)

    def Subtracted(self, *args):
        r"""

        Parameters
        ----------
        theRight: gp_Vec2d

        Return
        -------
        gp_Vec2d

        Description
        -----------
        Subtracts two vectors.

        """
        return _gp.gp_Vec2d_Subtracted(self, *args)

    def Transform(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Vec2d_Transform(self, *args)

    def Transformed(self, *args):
        r"""

        Parameters
        ----------
        theT: gp_Trsf2d

        Return
        -------
        gp_Vec2d

        Description
        -----------
        Transforms a vector with a Trsf from gp.

        """
        return _gp.gp_Vec2d_Transformed(self, *args)

    def X(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        For this vector, returns its X coordinate.

        """
        return _gp.gp_Vec2d_X(self, *args)

    def XY(self, *args):
        r"""
        Return
        -------
        gp_XY

        Description
        -----------
        For this vector, returns its two coordinates as a number pair.

        """
        return _gp.gp_Vec2d_XY(self, *args)

    def Y(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        For this vector, returns its Y coordinate.

        """
        return _gp.gp_Vec2d_Y(self, *args)

    def __mul__(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Vec2d

        Return
        -------
        float

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theScalar: float

        Return
        -------
        gp_Vec2d

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Vec2d___mul__(self, *args)

    def __imul_wrapper__(self, other):
        return _gp.gp_Vec2d___imul_wrapper__(self, other)

    def __imul__(self, right):
        self.__imul_wrapper__(right)
        return self


    def __add__(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_Vec2d

        Return
        -------
        gp_Vec2d

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Vec2d___add__(self, *args)

    def __iadd_wrapper__(self, other):
        return _gp.gp_Vec2d___iadd_wrapper__(self, other)

    def __iadd__(self, right):
        self.__iadd_wrapper__(right)
        return self


    def __neg__(self, *args):
        r"""
        Return
        -------
        gp_Vec2d

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Vec2d___neg__(self, *args)

    def __sub__(self, *args):
        r"""

        Parameters
        ----------
        theRight: gp_Vec2d

        Return
        -------
        gp_Vec2d

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_Vec2d___sub__(self, *args)

    def __isub_wrapper__(self, other):
        return _gp.gp_Vec2d___isub_wrapper__(self, other)

    def __isub__(self, right):
        self.__isub_wrapper__(right)
        return self


    def __truediv__(self, *args):
        return _gp.gp_Vec2d___truediv__(self, *args)
    __div__ = __truediv__



    def __itruediv_wrapper__(self, other):
        return _gp.gp_Vec2d___itruediv_wrapper__(self, other)

    def __itruediv__(self, right):
        self.__itruediv_wrapper__(right)
        return self


    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_Vec2d()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_Vec2d')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_Vec2d

# Register gp_Vec2d in _gp:
_gp.gp_Vec2d_swigregister(gp_Vec2d)
class gp_XY(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"""
        Return
        -------
        None

        Description
        -----------
        Creates XY object with zero coordinates (0,0).

        Parameters
        ----------
        theX: float
        theY: float

        Return
        -------
        None

        Description
        -----------
        a number pair defined by the XY coordinates.

        """
        _gp.gp_XY_swiginit(self, _gp.new_gp_XY(*args))

    def Add(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XY

        Return
        -------
        None

        Description
        -----------
        Computes the sum of this number pair and number pair theOther @code <self>.X() = <self>.X() + theOther.X() <self>.Y() = <self>.Y() + theOther.Y() @endcode.

        """
        return _gp.gp_XY_Add(self, *args)

    def Added(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XY

        Return
        -------
        gp_XY

        Description
        -----------
        Computes the sum of this number pair and number pair theOther @code new.X() = <self>.X() + theOther.X() new.Y() = <self>.Y() + theOther.Y() @endcode.

        """
        return _gp.gp_XY_Added(self, *args)

    def GetChangeCoord(self, theIndex):
        r"""GetChangeCoord(gp_XY self, Standard_Integer const theIndex) -> Standard_Real"""
        return _gp.gp_XY_GetChangeCoord(self, theIndex)

    def SetChangeCoord(self, theIndex, value):
        r"""SetChangeCoord(gp_XY self, Standard_Integer const theIndex, Standard_Real value)"""
        return _gp.gp_XY_SetChangeCoord(self, theIndex, value)

    def Coord(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int

        Return
        -------
        float

        Description
        -----------
        returns the coordinate of range theIndex: theIndex = 1 => X is returned theIndex = 2 => Y is returned Raises OutOfRange if theIndex != {1, 2}.

        Parameters
        ----------

        Return
        -------
        theX: float
        theY: float

        Description
        -----------
        For this number pair, returns its coordinates X and Y.

        """
        return _gp.gp_XY_Coord(self, *args)

    def CrossMagnitude(self, *args):
        r"""

        Parameters
        ----------
        theRight: gp_XY

        Return
        -------
        float

        Description
        -----------
        computes the magnitude of the cross product between <self> and theRight. Returns || <self> ^ theRight ||.

        """
        return _gp.gp_XY_CrossMagnitude(self, *args)

    def CrossSquareMagnitude(self, *args):
        r"""

        Parameters
        ----------
        theRight: gp_XY

        Return
        -------
        float

        Description
        -----------
        computes the square magnitude of the cross product between <self> and theRight. Returns || <self> ^ theRight ||**2.

        """
        return _gp.gp_XY_CrossSquareMagnitude(self, *args)

    def Crossed(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XY

        Return
        -------
        float

        Description
        -----------
        @code double D = <self>.X() * theOther.Y() - <self>.Y() * theOther.X() @endcode.

        """
        return _gp.gp_XY_Crossed(self, *args)

    def Divide(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        None

        Description
        -----------
        divides <self> by a real.

        """
        return _gp.gp_XY_Divide(self, *args)

    def Divided(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        gp_XY

        Description
        -----------
        Divides <self> by a real.

        """
        return _gp.gp_XY_Divided(self, *args)

    def Dot(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XY

        Return
        -------
        float

        Description
        -----------
        Computes the scalar product between <self> and theOther.

        """
        return _gp.gp_XY_Dot(self, *args)

    def IsEqual(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XY
        theTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns true if the coordinates of this number pair are equal to the respective coordinates of the number pair theOther, within the specified tolerance theTolerance. I.e.: abs(<self>.X() - theOther.X()) <= theTolerance and abs(<self>.Y() - theOther.Y()) <= theTolerance and computations.

        """
        return _gp.gp_XY_IsEqual(self, *args)

    def Modulus(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes Sqrt (X*X + Y*Y) where X and Y are the two coordinates of this number pair.

        """
        return _gp.gp_XY_Modulus(self, *args)

    def Multiplied(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        gp_XY

        Description
        -----------
        @code New.X() = <self>.X() * theScalar; New.Y() = <self>.Y() * theScalar; @endcode.

        Parameters
        ----------
        theOther: gp_XY

        Return
        -------
        gp_XY

        Description
        -----------
        @code new.X() = <self>.X() * theOther.X(); new.Y() = <self>.Y() * theOther.Y(); @endcode.

        Parameters
        ----------
        theMatrix: gp_Mat2d

        Return
        -------
        gp_XY

        Description
        -----------
        New = theMatrix * <self>.

        """
        return _gp.gp_XY_Multiplied(self, *args)

    def Multiply(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        None

        Description
        -----------
        @code <self>.X() = <self>.X() * theScalar; <self>.Y() = <self>.Y() * theScalar; @endcode.

        Parameters
        ----------
        theOther: gp_XY

        Return
        -------
        None

        Description
        -----------
        @code <self>.X() = <self>.X() * theOther.X(); <self>.Y() = <self>.Y() * theOther.Y(); @endcode.

        Parameters
        ----------
        theMatrix: gp_Mat2d

        Return
        -------
        None

        Description
        -----------
        <self> = theMatrix * <self>.

        """
        return _gp.gp_XY_Multiply(self, *args)

    def Normalize(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        @code <self>.X() = <self>.X()/ <self>.Modulus() <self>.Y() = <self>.Y()/ <self>.Modulus() @endcode Raises ConstructionError if <self>.Modulus() <= Resolution from gp.

        """
        return _gp.gp_XY_Normalize(self, *args)

    def Normalized(self, *args):
        r"""
        Return
        -------
        gp_XY

        Description
        -----------
        @code New.X() = <self>.X()/ <self>.Modulus() New.Y() = <self>.Y()/ <self>.Modulus() @endcode Raises ConstructionError if <self>.Modulus() <= Resolution from gp.

        """
        return _gp.gp_XY_Normalized(self, *args)

    def Reverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        @code <self>.X() = -<self>.X() <self>.Y() = -<self>.Y().

        """
        return _gp.gp_XY_Reverse(self, *args)

    def Reversed(self, *args):
        r"""
        Return
        -------
        gp_XY

        Description
        -----------
        @code New.X() = -<self>.X() New.Y() = -<self>.Y() @endcode.

        """
        return _gp.gp_XY_Reversed(self, *args)

    def SetCoord(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int
        theXi: float

        Return
        -------
        None

        Description
        -----------
        modifies the coordinate of range theIndex theIndex = 1 => X is modified theIndex = 2 => Y is modified Raises OutOfRange if theIndex != {1, 2}.

        Parameters
        ----------
        theX: float
        theY: float

        Return
        -------
        None

        Description
        -----------
        For this number pair, assigns the values theX and theY to its coordinates.

        """
        return _gp.gp_XY_SetCoord(self, *args)

    def SetLinearForm(self, *args):
        r"""

        Parameters
        ----------
        theA1: float
        theXY1: gp_XY
        theA2: float
        theXY2: gp_XY

        Return
        -------
        None

        Description
        -----------
        Computes the following linear combination and assigns the result to this number pair: @code theA1 * theXY1 + theA2 * theXY2 @endcode.

        Parameters
        ----------
        theA1: float
        theXY1: gp_XY
        theA2: float
        theXY2: gp_XY
        theXY3: gp_XY

        Return
        -------
        None

        Description
        -----------
        -- Computes the following linear combination and assigns the result to this number pair: @code theA1 * theXY1 + theA2 * theXY2 + theXY3 @endcode.

        Parameters
        ----------
        theA1: float
        theXY1: gp_XY
        theXY2: gp_XY

        Return
        -------
        None

        Description
        -----------
        Computes the following linear combination and assigns the result to this number pair: @code theA1 * theXY1 + theXY2 @endcode.

        Parameters
        ----------
        theXY1: gp_XY
        theXY2: gp_XY

        Return
        -------
        None

        Description
        -----------
        Computes the following linear combination and assigns the result to this number pair: @code theXY1 + theXY2 @endcode.

        """
        return _gp.gp_XY_SetLinearForm(self, *args)

    def SetX(self, *args):
        r"""

        Parameters
        ----------
        theX: float

        Return
        -------
        None

        Description
        -----------
        Assigns the given value to the X coordinate of this number pair.

        """
        return _gp.gp_XY_SetX(self, *args)

    def SetY(self, *args):
        r"""

        Parameters
        ----------
        theY: float

        Return
        -------
        None

        Description
        -----------
        Assigns the given value to the Y coordinate of this number pair.

        """
        return _gp.gp_XY_SetY(self, *args)

    def SquareModulus(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes X*X + Y*Y where X and Y are the two coordinates of this number pair.

        """
        return _gp.gp_XY_SquareModulus(self, *args)

    def Subtract(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XY

        Return
        -------
        None

        Description
        -----------
        @code <self>.X() = <self>.X() - theOther.X() <self>.Y() = <self>.Y() - theOther.Y() @endcode.

        """
        return _gp.gp_XY_Subtract(self, *args)

    def Subtracted(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XY

        Return
        -------
        gp_XY

        Description
        -----------
        @code new.X() = <self>.X() - theOther.X() new.Y() = <self>.Y() - theOther.Y() @endcode.

        """
        return _gp.gp_XY_Subtracted(self, *args)

    def X(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the X coordinate of this number pair.

        """
        return _gp.gp_XY_X(self, *args)

    def Y(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the Y coordinate of this number pair.

        """
        return _gp.gp_XY_Y(self, *args)

    def __mul__(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XY

        Return
        -------
        float

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theScalar: float

        Return
        -------
        gp_XY

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theMatrix: gp_Mat2d

        Return
        -------
        gp_XY

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_XY___mul__(self, *args)

    def __imul__(self, right):
        self.__imul_wrapper__(right)
        return self


    def __imul__(self, right):
        self.__imul_wrapper__(right)
        return self


    def __imul_wrapper__(self, *args):
        r"""
        __imul_wrapper__(gp_XY self, Standard_Real const other)
        __imul_wrapper__(gp_XY self, gp_XY other)
        __imul_wrapper__(gp_XY self, gp_Mat2d other)
        """
        return _gp.gp_XY___imul_wrapper__(self, *args)

    def __imul__(self, right):
        self.__imul_wrapper__(right)
        return self


    def __add__(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XY

        Return
        -------
        gp_XY

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_XY___add__(self, *args)

    def __iadd_wrapper__(self, other):
        r"""__iadd_wrapper__(gp_XY self, gp_XY other)"""
        return _gp.gp_XY___iadd_wrapper__(self, other)

    def __iadd__(self, right):
        self.__iadd_wrapper__(right)
        return self


    def __neg__(self, *args):
        r"""
        Return
        -------
        gp_XY

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_XY___neg__(self, *args)

    def __sub__(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XY

        Return
        -------
        gp_XY

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_XY___sub__(self, *args)

    def __isub_wrapper__(self, other):
        r"""__isub_wrapper__(gp_XY self, gp_XY other)"""
        return _gp.gp_XY___isub_wrapper__(self, other)

    def __isub__(self, right):
        self.__isub_wrapper__(right)
        return self


    def __truediv__(self, *args):
        return _gp.gp_XY___truediv__(self, *args)
    __div__ = __truediv__



    def __itruediv_wrapper__(self, other):
        r"""__itruediv_wrapper__(gp_XY self, Standard_Real const other)"""
        return _gp.gp_XY___itruediv_wrapper__(self, other)

    def __itruediv__(self, right):
        self.__itruediv_wrapper__(right)
        return self


    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_XY()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_XY')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_XY

# Register gp_XY in _gp:
_gp.gp_XY_swigregister(gp_XY)
class gp_XYZ(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"""
        Return
        -------
        None

        Description
        -----------
        Creates an XYZ object with zero coordinates (0,0,0).

        Parameters
        ----------
        theX: float
        theY: float
        theZ: float

        Return
        -------
        None

        Description
        -----------
        creates an XYZ with given coordinates.

        """
        _gp.gp_XYZ_swiginit(self, _gp.new_gp_XYZ(*args))

    def Add(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        @code <self>.X() = <self>.X() + theOther.X() <self>.Y() = <self>.Y() + theOther.Y() <self>.Z() = <self>.Z() + theOther.Z() @endcode.

        """
        return _gp.gp_XYZ_Add(self, *args)

    def Added(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XYZ

        Return
        -------
        gp_XYZ

        Description
        -----------
        @code new.X() = <self>.X() + theOther.X() new.Y() = <self>.Y() + theOther.Y() new.Z() = <self>.Z() + theOther.Z() @endcode.

        """
        return _gp.gp_XYZ_Added(self, *args)

    def GetChangeCoord(self, theIndex):
        r"""GetChangeCoord(gp_XYZ self, Standard_Integer const theIndex) -> Standard_Real"""
        return _gp.gp_XYZ_GetChangeCoord(self, theIndex)

    def SetChangeCoord(self, theIndex, value):
        r"""SetChangeCoord(gp_XYZ self, Standard_Integer const theIndex, Standard_Real value)"""
        return _gp.gp_XYZ_SetChangeCoord(self, theIndex, value)

    def ChangeData(self, *args):
        r"""
        Return
        -------
        float *

        Description
        -----------
        Returns a ptr to coordinates location. Is useful for algorithms, but DOES NOT PERFORM ANY CHECKS!.

        """
        return _gp.gp_XYZ_ChangeData(self, *args)

    def Coord(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int

        Return
        -------
        float

        Description
        -----------
        returns the coordinate of range theIndex: theIndex = 1 => X is returned theIndex = 2 => Y is returned theIndex = 3 => Z is returned //! Raises OutOfRange if theIndex != {1, 2, 3}.

        Parameters
        ----------

        Return
        -------
        theX: float
        theY: float
        theZ: float

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_XYZ_Coord(self, *args)

    def Cross(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        @code <self>.X() = <self>.Y() * theOther.Z() - <self>.Z() * theOther.Y() <self>.Y() = <self>.Z() * theOther.X() - <self>.X() * theOther.Z() <self>.Z() = <self>.X() * theOther.Y() - <self>.Y() * theOther.X() @endcode.

        """
        return _gp.gp_XYZ_Cross(self, *args)

    def CrossCross(self, *args):
        r"""

        Parameters
        ----------
        theCoord1: gp_XYZ
        theCoord2: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        Triple vector product Computes <self> = <self>.Cross(theCoord1.Cross(theCoord2)).

        """
        return _gp.gp_XYZ_CrossCross(self, *args)

    def CrossCrossed(self, *args):
        r"""

        Parameters
        ----------
        theCoord1: gp_XYZ
        theCoord2: gp_XYZ

        Return
        -------
        gp_XYZ

        Description
        -----------
        Triple vector product computes New = <self>.Cross(theCoord1.Cross(theCoord2)).

        """
        return _gp.gp_XYZ_CrossCrossed(self, *args)

    def CrossMagnitude(self, *args):
        r"""

        Parameters
        ----------
        theRight: gp_XYZ

        Return
        -------
        float

        Description
        -----------
        Computes the magnitude of the cross product between <self> and theRight. Returns || <self> ^ theRight ||.

        """
        return _gp.gp_XYZ_CrossMagnitude(self, *args)

    def CrossSquareMagnitude(self, *args):
        r"""

        Parameters
        ----------
        theRight: gp_XYZ

        Return
        -------
        float

        Description
        -----------
        Computes the square magnitude of the cross product between <self> and theRight. Returns || <self> ^ theRight ||**2.

        """
        return _gp.gp_XYZ_CrossSquareMagnitude(self, *args)

    def Crossed(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XYZ

        Return
        -------
        gp_XYZ

        Description
        -----------
        @code new.X() = <self>.Y() * theOther.Z() - <self>.Z() * theOther.Y() new.Y() = <self>.Z() * theOther.X() - <self>.X() * theOther.Z() new.Z() = <self>.X() * theOther.Y() - <self>.Y() * theOther.X() @endcode.

        """
        return _gp.gp_XYZ_Crossed(self, *args)

    def Divide(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        None

        Description
        -----------
        divides <self> by a real.

        """
        return _gp.gp_XYZ_Divide(self, *args)

    def Divided(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        gp_XYZ

        Description
        -----------
        divides <self> by a real.

        """
        return _gp.gp_XYZ_Divided(self, *args)

    def Dot(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XYZ

        Return
        -------
        float

        Description
        -----------
        computes the scalar product between <self> and theOther.

        """
        return _gp.gp_XYZ_Dot(self, *args)

    def DotCross(self, *args):
        r"""

        Parameters
        ----------
        theCoord1: gp_XYZ
        theCoord2: gp_XYZ

        Return
        -------
        float

        Description
        -----------
        computes the triple scalar product.

        """
        return _gp.gp_XYZ_DotCross(self, *args)

    def DumpJson(self, depth=-1):
        r"""

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        Parameters
        ----------
        depth: int, default=-1

        Return
        -------
        str

        Description
        -----------
        Dump the object to JSON string.

        """
        return _gp.gp_XYZ_DumpJson(self, depth)

    def GetData(self, *args):
        r"""
        Return
        -------
        float *

        Description
        -----------
        Returns a const ptr to coordinates location. Is useful for algorithms, but DOES NOT PERFORM ANY CHECKS!.

        """
        return _gp.gp_XYZ_GetData(self, *args)

    def InitFromJson(self, json_string):
        r"""

        Parameters
        ----------
        json_string: the string

        Return
        -------
        bool

        Description
        -----------
        Init the object from a JSON string.

        """
        return _gp.gp_XYZ_InitFromJson(self, json_string)

    def IsEqual(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XYZ
        theTolerance: float

        Return
        -------
        bool

        Description
        -----------
        Returns True if he coordinates of this XYZ object are equal to the respective coordinates Other, within the specified tolerance theTolerance. I.e.: abs(<self>.X() - theOther.X()) <= theTolerance and abs(<self>.Y() - theOther.Y()) <= theTolerance and abs(<self>.Z() - theOther.Z()) <= theTolerance.

        """
        return _gp.gp_XYZ_IsEqual(self, *args)

    def Modulus(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        computes Sqrt (X*X + Y*Y + Z*Z) where X, Y and Z are the three coordinates of this XYZ object.

        """
        return _gp.gp_XYZ_Modulus(self, *args)

    def Multiplied(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        gp_XYZ

        Description
        -----------
        @code New.X() = <self>.X() * theScalar; New.Y() = <self>.Y() * theScalar; New.Z() = <self>.Z() * theScalar; @endcode.

        Parameters
        ----------
        theOther: gp_XYZ

        Return
        -------
        gp_XYZ

        Description
        -----------
        @code new.X() = <self>.X() * theOther.X(); new.Y() = <self>.Y() * theOther.Y(); new.Z() = <self>.Z() * theOther.Z(); @endcode.

        Parameters
        ----------
        theMatrix: gp_Mat

        Return
        -------
        gp_XYZ

        Description
        -----------
        New = theMatrix * <self>.

        """
        return _gp.gp_XYZ_Multiplied(self, *args)

    def Multiply(self, *args):
        r"""

        Parameters
        ----------
        theScalar: float

        Return
        -------
        None

        Description
        -----------
        @code <self>.X() = <self>.X() * theScalar; <self>.Y() = <self>.Y() * theScalar; <self>.Z() = <self>.Z() * theScalar; @endcode.

        Parameters
        ----------
        theOther: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        @code <self>.X() = <self>.X() * theOther.X(); <self>.Y() = <self>.Y() * theOther.Y(); <self>.Z() = <self>.Z() * theOther.Z(); @endcode.

        Parameters
        ----------
        theMatrix: gp_Mat

        Return
        -------
        None

        Description
        -----------
        <self> = theMatrix * <self>.

        """
        return _gp.gp_XYZ_Multiply(self, *args)

    def Normalize(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        @code <self>.X() = <self>.X()/ <self>.Modulus() <self>.Y() = <self>.Y()/ <self>.Modulus() <self>.Z() = <self>.Z()/ <self>.Modulus() @endcode Raised if <self>.Modulus() <= Resolution from gp.

        """
        return _gp.gp_XYZ_Normalize(self, *args)

    def Normalized(self, *args):
        r"""
        Return
        -------
        gp_XYZ

        Description
        -----------
        @code New.X() = <self>.X()/ <self>.Modulus() New.Y() = <self>.Y()/ <self>.Modulus() New.Z() = <self>.Z()/ <self>.Modulus() @endcode Raised if <self>.Modulus() <= Resolution from gp.

        """
        return _gp.gp_XYZ_Normalized(self, *args)

    def Reverse(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        @code <self>.X() = -<self>.X() <self>.Y() = -<self>.Y() <self>.Z() = -<self>.Z() @endcode.

        """
        return _gp.gp_XYZ_Reverse(self, *args)

    def Reversed(self, *args):
        r"""
        Return
        -------
        gp_XYZ

        Description
        -----------
        @code New.X() = -<self>.X() New.Y() = -<self>.Y() New.Z() = -<self>.Z() @endcode.

        """
        return _gp.gp_XYZ_Reversed(self, *args)

    def SetCoord(self, *args):
        r"""

        Parameters
        ----------
        theX: float
        theY: float
        theZ: float

        Return
        -------
        None

        Description
        -----------
        For this XYZ object, assigns the values theX, theY and theZ to its three coordinates.

        Parameters
        ----------
        theIndex: int
        theXi: float

        Return
        -------
        None

        Description
        -----------
        modifies the coordinate of range theIndex theIndex = 1 => X is modified theIndex = 2 => Y is modified theIndex = 3 => Z is modified Raises OutOfRange if theIndex != {1, 2, 3}.

        """
        return _gp.gp_XYZ_SetCoord(self, *args)

    def SetLinearForm(self, *args):
        r"""

        Parameters
        ----------
        theA1: float
        theXYZ1: gp_XYZ
        theA2: float
        theXYZ2: gp_XYZ
        theA3: float
        theXYZ3: gp_XYZ
        theXYZ4: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        <self> is set to the following linear form: @code theA1 * theXYZ1 + theA2 * theXYZ2 + theA3 * theXYZ3 + theXYZ4 @endcode.

        Parameters
        ----------
        theA1: float
        theXYZ1: gp_XYZ
        theA2: float
        theXYZ2: gp_XYZ
        theA3: float
        theXYZ3: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        <self> is set to the following linear form: @code theA1 * theXYZ1 + theA2 * theXYZ2 + theA3 * theXYZ3 @endcode.

        Parameters
        ----------
        theA1: float
        theXYZ1: gp_XYZ
        theA2: float
        theXYZ2: gp_XYZ
        theXYZ3: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        <self> is set to the following linear form: @code theA1 * theXYZ1 + theA2 * theXYZ2 + theXYZ3 @endcode.

        Parameters
        ----------
        theA1: float
        theXYZ1: gp_XYZ
        theA2: float
        theXYZ2: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        <self> is set to the following linear form: @code theA1 * theXYZ1 + theA2 * theXYZ2 @endcode.

        Parameters
        ----------
        theA1: float
        theXYZ1: gp_XYZ
        theXYZ2: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        <self> is set to the following linear form: @code theA1 * theXYZ1 + theXYZ2 @endcode.

        Parameters
        ----------
        theXYZ1: gp_XYZ
        theXYZ2: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        <self> is set to the following linear form: @code theXYZ1 + theXYZ2 @endcode.

        """
        return _gp.gp_XYZ_SetLinearForm(self, *args)

    def SetX(self, *args):
        r"""

        Parameters
        ----------
        theX: float

        Return
        -------
        None

        Description
        -----------
        Assigns the given value to the X coordinate.

        """
        return _gp.gp_XYZ_SetX(self, *args)

    def SetY(self, *args):
        r"""

        Parameters
        ----------
        theY: float

        Return
        -------
        None

        Description
        -----------
        Assigns the given value to the Y coordinate.

        """
        return _gp.gp_XYZ_SetY(self, *args)

    def SetZ(self, *args):
        r"""

        Parameters
        ----------
        theZ: float

        Return
        -------
        None

        Description
        -----------
        Assigns the given value to the Z coordinate.

        """
        return _gp.gp_XYZ_SetZ(self, *args)

    def SquareModulus(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes X*X + Y*Y + Z*Z where X, Y and Z are the three coordinates of this XYZ object.

        """
        return _gp.gp_XYZ_SquareModulus(self, *args)

    def Subtract(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XYZ

        Return
        -------
        None

        Description
        -----------
        @code <self>.X() = <self>.X() - theOther.X() <self>.Y() = <self>.Y() - theOther.Y() <self>.Z() = <self>.Z() - theOther.Z() @endcode.

        """
        return _gp.gp_XYZ_Subtract(self, *args)

    def Subtracted(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XYZ

        Return
        -------
        gp_XYZ

        Description
        -----------
        @code new.X() = <self>.X() - theOther.X() new.Y() = <self>.Y() - theOther.Y() new.Z() = <self>.Z() - theOther.Z() @endcode.

        """
        return _gp.gp_XYZ_Subtracted(self, *args)

    def X(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the X coordinate.

        """
        return _gp.gp_XYZ_X(self, *args)

    def Y(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the Y coordinate.

        """
        return _gp.gp_XYZ_Y(self, *args)

    def Z(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the Z coordinate.

        """
        return _gp.gp_XYZ_Z(self, *args)

    def __mul__(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XYZ

        Return
        -------
        float

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theScalar: float

        Return
        -------
        gp_XYZ

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        theMatrix: gp_Mat

        Return
        -------
        gp_XYZ

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_XYZ___mul__(self, *args)

    def __imul__(self, right):
        self.__imul_wrapper__(right)
        return self


    def __imul__(self, right):
        self.__imul_wrapper__(right)
        return self


    def __imul_wrapper__(self, *args):
        r"""
        __imul_wrapper__(gp_XYZ self, Standard_Real const other)
        __imul_wrapper__(gp_XYZ self, gp_XYZ other)
        __imul_wrapper__(gp_XYZ self, gp_Mat other)
        """
        return _gp.gp_XYZ___imul_wrapper__(self, *args)

    def __imul__(self, right):
        self.__imul_wrapper__(right)
        return self


    def __add__(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XYZ

        Return
        -------
        gp_XYZ

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_XYZ___add__(self, *args)

    def __iadd_wrapper__(self, other):
        r"""__iadd_wrapper__(gp_XYZ self, gp_XYZ other)"""
        return _gp.gp_XYZ___iadd_wrapper__(self, other)

    def __iadd__(self, right):
        self.__iadd_wrapper__(right)
        return self


    def __sub__(self, *args):
        r"""

        Parameters
        ----------
        theOther: gp_XYZ

        Return
        -------
        gp_XYZ

        Description
        -----------
        No available documentation.

        """
        return _gp.gp_XYZ___sub__(self, *args)

    def __isub_wrapper__(self, other):
        r"""__isub_wrapper__(gp_XYZ self, gp_XYZ other)"""
        return _gp.gp_XYZ___isub_wrapper__(self, other)

    def __isub__(self, right):
        self.__isub_wrapper__(right)
        return self


    def __truediv__(self, *args):
        return _gp.gp_XYZ___truediv__(self, *args)
    __div__ = __truediv__



    def __itruediv_wrapper__(self, other):
        r"""__itruediv_wrapper__(gp_XYZ self, Standard_Real const other)"""
        return _gp.gp_XYZ___itruediv_wrapper__(self, other)

    def __itruediv__(self, right):
        self.__itruediv_wrapper__(right)
        return self


    def __getstate__(self):
        return self.DumpJson()


    def __setstate__(self, state):
        inst = gp_XYZ()
        if inst.InitFromJson(state):
            self.this = inst.this
        else:
            raise IOError('Failed to set state of gp_XYZ')


    __repr__ = _dumps_object

    __swig_destroy__ = _gp.delete_gp_XYZ

# Register gp_XYZ in _gp:
_gp.gp_XYZ_swigregister(gp_XYZ)



@deprecated
def gp_DX(*args):
	return gp.DX(*args)

@deprecated
def gp_DX2d(*args):
	return gp.DX2d(*args)

@deprecated
def gp_DY(*args):
	return gp.DY(*args)

@deprecated
def gp_DY2d(*args):
	return gp.DY2d(*args)

@deprecated
def gp_DZ(*args):
	return gp.DZ(*args)

@deprecated
def gp_OX(*args):
	return gp.OX(*args)

@deprecated
def gp_OX2d(*args):
	return gp.OX2d(*args)

@deprecated
def gp_OY(*args):
	return gp.OY(*args)

@deprecated
def gp_OY2d(*args):
	return gp.OY2d(*args)

@deprecated
def gp_OZ(*args):
	return gp.OZ(*args)

@deprecated
def gp_Origin(*args):
	return gp.Origin(*args)

@deprecated
def gp_Origin2d(*args):
	return gp.Origin2d(*args)

@deprecated
def gp_Resolution(*args):
	return gp.Resolution(*args)

@deprecated
def gp_XOY(*args):
	return gp.XOY(*args)

@deprecated
def gp_YOZ(*args):
	return gp.YOZ(*args)

@deprecated
def gp_ZOX(*args):
	return gp.ZOX(*args)

@deprecated
def gp_QuaternionNLerp_Interpolate(*args):
	return gp_QuaternionNLerp.Interpolate(*args)

@deprecated
def gp_QuaternionSLerp_Interpolate(*args):
	return gp_QuaternionSLerp.Interpolate(*args)



