euclid API Reference

2D and 3D vector, matrix, quaternion, and geometric transformation math library.

euclid.Circle
Python Library Documentation: class Circle in module euclid

class Circle(Geometry)
 |  Circle(center, radius)
 |
 |  Method resolution order:
 |      Circle
 |      Geometry
 |      builtins.object
 |
 |  Methods defined here:
 |
 |  __copy__(self)
 |
 |  __init__(self, center, radius)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  __repr__(self)
 |      Return repr(self).
 |
 |  connect(self, other)
 |
 |  copy = __copy__(self)
 |
 |  intersect(self, other)
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  c
 |
 |  r
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from Geometry:
 |
 |  distance(self, other)
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from Geometry:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
euclid.Geometry
Python Library Documentation: class Geometry in module euclid

class Geometry(builtins.object)
 |  Methods defined here:
 |
 |  connect(self, other)
 |
 |  distance(self, other)
 |
 |  intersect(self, other)
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
euclid.Line2
Python Library Documentation: class Line2 in module euclid

class Line2(Geometry)
 |  Line2(*args)
 |
 |  Method resolution order:
 |      Line2
 |      Geometry
 |      builtins.object
 |
 |  Methods defined here:
 |
 |  __copy__(self)
 |
 |  __init__(self, *args)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  __repr__(self)
 |      Return repr(self).
 |
 |  connect(self, other)
 |
 |  copy = __copy__(self)
 |
 |  intersect(self, other)
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties defined here:
 |
 |  p1
 |
 |  p2
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  p
 |
 |  v
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from Geometry:
 |
 |  distance(self, other)
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from Geometry:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
euclid.Line3
Python Library Documentation: class Line3 in module euclid

class Line3(builtins.object)
 |  Line3(*args)
 |
 |  Methods defined here:
 |
 |  __copy__(self)
 |
 |  __init__(self, *args)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  __repr__(self)
 |      Return repr(self).
 |
 |  connect(self, other)
 |
 |  copy = __copy__(self)
 |
 |  intersect(self, other)
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties defined here:
 |
 |  p1
 |
 |  p2
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  p
 |
 |  v
euclid.LineSegment2
Python Library Documentation: class LineSegment2 in module euclid

class LineSegment2(Line2)
 |  LineSegment2(*args)
 |
 |  Method resolution order:
 |      LineSegment2
 |      Line2
 |      Geometry
 |      builtins.object
 |
 |  Methods defined here:
 |
 |  __abs__(self)
 |
 |  __repr__(self)
 |      Return repr(self).
 |
 |  magnitude_squared(self)
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties defined here:
 |
 |  length
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from Line2:
 |
 |  __copy__(self)
 |
 |  __init__(self, *args)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  connect(self, other)
 |
 |  copy = __copy__(self)
 |
 |  intersect(self, other)
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from Line2:
 |
 |  p1
 |
 |  p2
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from Line2:
 |
 |  p
 |
 |  v
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from Geometry:
 |
 |  distance(self, other)
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from Geometry:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
euclid.LineSegment3
Python Library Documentation: class LineSegment3 in module euclid

class LineSegment3(Line3)
 |  LineSegment3(*args)
 |
 |  Method resolution order:
 |      LineSegment3
 |      Line3
 |      builtins.object
 |
 |  Methods defined here:
 |
 |  __abs__(self)
 |
 |  __repr__(self)
 |      Return repr(self).
 |
 |  magnitude_squared(self)
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties defined here:
 |
 |  length
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from Line3:
 |
 |  __copy__(self)
 |
 |  __init__(self, *args)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  connect(self, other)
 |
 |  copy = __copy__(self)
 |
 |  intersect(self, other)
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from Line3:
 |
 |  p1
 |
 |  p2
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from Line3:
 |
 |  p
 |
 |  v
euclid.Matrix3
Python Library Documentation: class Matrix3 in module euclid

class Matrix3(builtins.object)
 |  Methods defined here:
 |
 |  __copy__(self)
 |
 |  __getitem__(self, key)
 |
 |  __imul__(self, other)
 |
 |  __init__(self)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  __mul__(self, other)
 |
 |  __repr__(self)
 |      Return repr(self).
 |
 |  __setitem__(self, key, value)
 |
 |  copy = __copy__(self)
 |
 |  determinant(self)
 |
 |  identity(self)
 |
 |  inverse(self)
 |
 |  rotate(self, angle)
 |
 |  scale(self, x, y)
 |
 |  translate(self, x, y)
 |
 |  ----------------------------------------------------------------------
 |  Class methods defined here:
 |
 |  new_identity()
 |      # Static constructors
 |
 |  new_rotate(angle)
 |
 |  new_scale(x, y)
 |
 |  new_translate(x, y)
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  a
 |
 |  b
 |
 |  c
 |
 |  e
 |
 |  f
 |
 |  g
 |
 |  i
 |
 |  j
 |
 |  k
euclid.Matrix4
Python Library Documentation: class Matrix4 in module euclid

class Matrix4(builtins.object)
 |  Methods defined here:
 |
 |  __copy__(self)
 |
 |  __getitem__(self, key)
 |
 |  __imul__(self, other)
 |
 |  __init__(self)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  __mul__(self, other)
 |
 |  __repr__(self)
 |      Return repr(self).
 |
 |  __setitem__(self, key, value)
 |
 |  copy = __copy__(self)
 |
 |  determinant(self)
 |
 |  identity(self)
 |
 |  inverse(self)
 |
 |  rotate_axis(self, angle, axis)
 |
 |  rotate_euler(self, heading, attitude, bank)
 |
 |  rotate_triple_axis(self, x, y, z)
 |
 |  rotatex(self, angle)
 |
 |  rotatey(self, angle)
 |
 |  rotatez(self, angle)
 |
 |  scale(self, x, y, z)
 |
 |  transform(self, other)
 |
 |  translate(self, x, y, z)
 |
 |  transpose(self)
 |
 |  transposed(self)
 |
 |  ----------------------------------------------------------------------
 |  Class methods defined here:
 |
 |  new(*values)
 |      # Static constructors
 |
 |  new_identity()
 |
 |  new_look_at(eye, at, up)
 |
 |  new_perspective(fov_y, aspect, near, far)
 |
 |  new_rotate_axis(angle, axis)
 |
 |  new_rotate_euler(heading, attitude, bank)
 |
 |  new_rotate_triple_axis(x, y, z)
 |
 |  new_rotatex(angle)
 |
 |  new_rotatey(angle)
 |
 |  new_rotatez(angle)
 |
 |  new_scale(x, y, z)
 |
 |  new_translate(x, y, z)
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  a
 |
 |  b
 |
 |  c
 |
 |  d
 |
 |  e
 |
 |  f
 |
 |  g
 |
 |  h
 |
 |  i
 |
 |  j
 |
 |  k
 |
 |  l
 |
 |  m
 |
 |  n
 |
 |  o
 |
 |  p
euclid.Plane
Python Library Documentation: class Plane in module euclid

class Plane(builtins.object)
 |  Plane(*args)
 |
 |  Methods defined here:
 |
 |  __copy__(self)
 |
 |  __init__(self, *args)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  __repr__(self)
 |      Return repr(self).
 |
 |  connect(self, other)
 |
 |  copy = __copy__(self)
 |
 |  intersect(self, other)
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  k
 |
 |  n
euclid.Point2
Python Library Documentation: class Point2 in module euclid

class Point2(Vector2, Geometry)
 |  Point2(x=0, y=0)
 |
 |  Method resolution order:
 |      Point2
 |      Vector2
 |      Geometry
 |      builtins.object
 |
 |  Methods defined here:
 |
 |  __repr__(self)
 |      Return repr(self).
 |
 |  connect(self, other)
 |
 |  intersect(self, other)
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from Vector2:
 |
 |  __abs__(self)
 |
 |  __add__(self, other)
 |
 |  __copy__(self)
 |
 |  __div__(self, other)
 |
 |  __eq__(self, other)
 |      Return self==value.
 |
 |  __floordiv__(self, other)
 |
 |  __getattr__(self, name)
 |
 |  __getitem__(self, key)
 |
 |  __iadd__(self, other)
 |
 |  __imul__(self, other)
 |
 |  __init__(self, x=0, y=0)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  __iter__(self)
 |
 |  __len__(self)
 |
 |  __mul__(self, other)
 |
 |  __ne__(self, other)
 |      Return self!=value.
 |
 |  __neg__(self)
 |
 |  __nonzero__(self)
 |
 |  __pos__ = __copy__(self)
 |
 |  __radd__ = __add__(self, other)
 |
 |  __rdiv__(self, other)
 |
 |  __rfloordiv__(self, other)
 |
 |  __rmul__ = __mul__(self, other)
 |
 |  __rsub__(self, other)
 |
 |  __rtruediv__(self, other)
 |
 |  __setitem__(self, key, value)
 |
 |  __sub__(self, other)
 |
 |  __truediv__(self, other)
 |
 |  angle(self, other)
 |      Return the angle to the vector other
 |
 |  copy = __copy__(self)
 |
 |  cross(self)
 |
 |  dot(self, other)
 |
 |  magnitude = __abs__(self)
 |
 |  magnitude_squared(self)
 |
 |  normalize(self)
 |
 |  normalized(self)
 |
 |  project(self, other)
 |      Return one vector projected on the vector other
 |
 |  reflect(self, normal)
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from Vector2:
 |
 |  x
 |
 |  y
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from Vector2:
 |
 |  __hash__ = None
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from Geometry:
 |
 |  distance(self, other)
euclid.Point3
Python Library Documentation: class Point3 in module euclid

class Point3(Vector3, Geometry)
 |  Point3(x=0, y=0, z=0)
 |
 |  Method resolution order:
 |      Point3
 |      Vector3
 |      Geometry
 |      builtins.object
 |
 |  Methods defined here:
 |
 |  __repr__(self)
 |      Return repr(self).
 |
 |  connect(self, other)
 |
 |  intersect(self, other)
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from Vector3:
 |
 |  __abs__(self)
 |
 |  __add__(self, other)
 |
 |  __copy__(self)
 |
 |  __div__(self, other)
 |
 |  __eq__(self, other)
 |      Return self==value.
 |
 |  __floordiv__(self, other)
 |
 |  __getattr__(self, name)
 |
 |  __getitem__(self, key)
 |
 |  __iadd__(self, other)
 |
 |  __imul__(self, other)
 |
 |  __init__(self, x=0, y=0, z=0)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  __iter__(self)
 |
 |  __len__(self)
 |
 |  __mul__(self, other)
 |
 |  __ne__(self, other)
 |      Return self!=value.
 |
 |  __neg__(self)
 |
 |  __nonzero__(self)
 |
 |  __pos__ = __copy__(self)
 |
 |  __radd__ = __add__(self, other)
 |
 |  __rdiv__(self, other)
 |
 |  __rfloordiv__(self, other)
 |
 |  __rmul__ = __mul__(self, other)
 |
 |  __rsub__(self, other)
 |
 |  __rtruediv__(self, other)
 |
 |  __setitem__(self, key, value)
 |
 |  __sub__(self, other)
 |
 |  __truediv__(self, other)
 |
 |  angle(self, other)
 |      Return the angle to the vector other
 |
 |  copy = __copy__(self)
 |
 |  cross(self, other)
 |
 |  dot(self, other)
 |
 |  magnitude = __abs__(self)
 |
 |  magnitude_squared(self)
 |
 |  normalize(self)
 |
 |  normalized(self)
 |
 |  project(self, other)
 |      Return one vector projected on the vector other
 |
 |  reflect(self, normal)
 |
 |  rotate_around(self, axis, theta)
 |      Return the vector rotated around axis through angle theta. Right hand rule applies
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from Vector3:
 |
 |  x
 |
 |  y
 |
 |  z
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from Vector3:
 |
 |  __hash__ = None
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from Geometry:
 |
 |  distance(self, other)
euclid.Quaternion
Python Library Documentation: class Quaternion in module euclid

class Quaternion(builtins.object)
 |  Quaternion(w=1, x=0, y=0, z=0)
 |
 |  Methods defined here:
 |
 |  __abs__(self)
 |
 |  __copy__(self)
 |
 |  __imul__(self, other)
 |
 |  __init__(self, w=1, x=0, y=0, z=0)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  __mul__(self, other)
 |
 |  __repr__(self)
 |      Return repr(self).
 |
 |  conjugated(self)
 |
 |  copy = __copy__(self)
 |
 |  get_angle_axis(self)
 |
 |  get_euler(self)
 |
 |  get_matrix(self)
 |
 |  identity(self)
 |
 |  magnitude = __abs__(self)
 |
 |  magnitude_squared(self)
 |
 |  normalize(self)
 |
 |  normalized(self)
 |
 |  rotate_axis(self, angle, axis)
 |
 |  rotate_euler(self, heading, attitude, bank)
 |
 |  rotate_matrix(self, m)
 |
 |  ----------------------------------------------------------------------
 |  Class methods defined here:
 |
 |  new_identity()
 |      # Static constructors
 |
 |  new_interpolate(q1, q2, t)
 |
 |  new_rotate_axis(angle, axis)
 |
 |  new_rotate_euler(heading, attitude, bank)
 |
 |  new_rotate_matrix(m)
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  w
 |
 |  x
 |
 |  y
 |
 |  z
euclid.Ray2
Python Library Documentation: class Ray2 in module euclid

class Ray2(Line2)
 |  Ray2(*args)
 |
 |  Method resolution order:
 |      Ray2
 |      Line2
 |      Geometry
 |      builtins.object
 |
 |  Methods defined here:
 |
 |  __repr__(self)
 |      Return repr(self).
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from Line2:
 |
 |  __copy__(self)
 |
 |  __init__(self, *args)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  connect(self, other)
 |
 |  copy = __copy__(self)
 |
 |  intersect(self, other)
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from Line2:
 |
 |  p1
 |
 |  p2
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from Line2:
 |
 |  p
 |
 |  v
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from Geometry:
 |
 |  distance(self, other)
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from Geometry:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
euclid.Ray3
Python Library Documentation: class Ray3 in module euclid

class Ray3(Line3)
 |  Ray3(*args)
 |
 |  Method resolution order:
 |      Ray3
 |      Line3
 |      builtins.object
 |
 |  Methods defined here:
 |
 |  __repr__(self)
 |      Return repr(self).
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __dict__
 |      dictionary for instance variables
 |
 |  __weakref__
 |      list of weak references to the object
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from Line3:
 |
 |  __copy__(self)
 |
 |  __init__(self, *args)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  connect(self, other)
 |
 |  copy = __copy__(self)
 |
 |  intersect(self, other)
 |
 |  ----------------------------------------------------------------------
 |  Readonly properties inherited from Line3:
 |
 |  p1
 |
 |  p2
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from Line3:
 |
 |  p
 |
 |  v
euclid.Sphere
Python Library Documentation: class Sphere in module euclid

class Sphere(builtins.object)
 |  Sphere(center, radius)
 |
 |  Methods defined here:
 |
 |  __copy__(self)
 |
 |  __init__(self, center, radius)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  __repr__(self)
 |      Return repr(self).
 |
 |  connect(self, other)
 |
 |  copy = __copy__(self)
 |
 |  intersect(self, other)
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  c
 |
 |  r
euclid.Vector2
Python Library Documentation: class Vector2 in module euclid

class Vector2(builtins.object)
 |  Vector2(x=0, y=0)
 |
 |  Methods defined here:
 |
 |  __abs__(self)
 |
 |  __add__(self, other)
 |
 |  __copy__(self)
 |
 |  __div__(self, other)
 |
 |  __eq__(self, other)
 |      Return self==value.
 |
 |  __floordiv__(self, other)
 |
 |  __getattr__(self, name)
 |
 |  __getitem__(self, key)
 |
 |  __iadd__(self, other)
 |
 |  __imul__(self, other)
 |
 |  __init__(self, x=0, y=0)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  __iter__(self)
 |
 |  __len__(self)
 |
 |  __mul__(self, other)
 |
 |  __ne__(self, other)
 |      Return self!=value.
 |
 |  __neg__(self)
 |
 |  __nonzero__(self)
 |
 |  __pos__ = __copy__(self)
 |
 |  __radd__ = __add__(self, other)
 |
 |  __rdiv__(self, other)
 |
 |  __repr__(self)
 |      Return repr(self).
 |
 |  __rfloordiv__(self, other)
 |
 |  __rmul__ = __mul__(self, other)
 |
 |  __rsub__(self, other)
 |
 |  __rtruediv__(self, other)
 |
 |  __setitem__(self, key, value)
 |
 |  __sub__(self, other)
 |
 |  __truediv__(self, other)
 |
 |  angle(self, other)
 |      Return the angle to the vector other
 |
 |  copy = __copy__(self)
 |
 |  cross(self)
 |
 |  dot(self, other)
 |
 |  magnitude = __abs__(self)
 |
 |  magnitude_squared(self)
 |
 |  normalize(self)
 |
 |  normalized(self)
 |
 |  project(self, other)
 |      Return one vector projected on the vector other
 |
 |  reflect(self, normal)
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  x
 |
 |  y
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |
 |  __hash__ = None
euclid.Vector3
Python Library Documentation: class Vector3 in module euclid

class Vector3(builtins.object)
 |  Vector3(x=0, y=0, z=0)
 |
 |  Methods defined here:
 |
 |  __abs__(self)
 |
 |  __add__(self, other)
 |
 |  __copy__(self)
 |
 |  __div__(self, other)
 |
 |  __eq__(self, other)
 |      Return self==value.
 |
 |  __floordiv__(self, other)
 |
 |  __getattr__(self, name)
 |
 |  __getitem__(self, key)
 |
 |  __iadd__(self, other)
 |
 |  __imul__(self, other)
 |
 |  __init__(self, x=0, y=0, z=0)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  __iter__(self)
 |
 |  __len__(self)
 |
 |  __mul__(self, other)
 |
 |  __ne__(self, other)
 |      Return self!=value.
 |
 |  __neg__(self)
 |
 |  __nonzero__(self)
 |
 |  __pos__ = __copy__(self)
 |
 |  __radd__ = __add__(self, other)
 |
 |  __rdiv__(self, other)
 |
 |  __repr__(self)
 |      Return repr(self).
 |
 |  __rfloordiv__(self, other)
 |
 |  __rmul__ = __mul__(self, other)
 |
 |  __rsub__(self, other)
 |
 |  __rtruediv__(self, other)
 |
 |  __setitem__(self, key, value)
 |
 |  __sub__(self, other)
 |
 |  __truediv__(self, other)
 |
 |  angle(self, other)
 |      Return the angle to the vector other
 |
 |  copy = __copy__(self)
 |
 |  cross(self, other)
 |
 |  dot(self, other)
 |
 |  magnitude = __abs__(self)
 |
 |  magnitude_squared(self)
 |
 |  normalize(self)
 |
 |  normalized(self)
 |
 |  project(self, other)
 |      Return one vector projected on the vector other
 |
 |  reflect(self, normal)
 |
 |  rotate_around(self, axis, theta)
 |      Return the vector rotated around axis through angle theta. Right hand rule applies
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  x
 |
 |  y
 |
 |  z
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |
 |  __hash__ = None