Implement method Point.aspolyhedron()
[linpy.git] / pypol / coordinates.py
index 69d498e..7923648 100644 (file)
@@ -3,7 +3,7 @@ import numbers
 import operator
 
 from abc import ABC, abstractmethod
-from collections import OrderedDict
+from collections import OrderedDict, Mapping
 
 from .linexprs import Symbol
 
@@ -75,7 +75,7 @@ class Point(Coordinates):
     """
 
     def __new__(cls, coordinates=None):
-        if isinstance(coordinates, dict):
+        if isinstance(coordinates, Mapping):
             coordinates = coordinates.items()
         self = object().__new__(cls)
         self._coordinates = OrderedDict()
@@ -112,6 +112,13 @@ class Point(Coordinates):
         return isinstance(other, Point) and \
             self._coordinates == other._coordinates
 
+    def aspolyhedron(self):
+        from .polyhedra import Polyhedron
+        equalities = []
+        for symbol, coordinate in self.coordinates():
+            equalities.append(symbol - coordinate)
+        return Polyhedron(equalities)
+
 
 class Vector(Coordinates):
     """