author Vivien Maisonneuve Tue, 19 Aug 2014 14:00:56 +0000 (16:00 +0200) committer Vivien Maisonneuve Tue, 19 Aug 2014 14:01:00 +0000 (16:01 +0200)
 doc/reference.rst patch | blob | history linpy/polyhedra.py patch | blob | history

index 18e69c0..83ee9d3 100644 (file)
@@ -2,6 +2,7 @@
Module Reference
================

Module Reference
================

+
Symbols
-------

Symbols
-------

@@ -227,6 +228,7 @@ They are implemented by the :class:`Rational` class, that inherits from both :cl

See the documentation of :class:`fractions.Fraction` for more information and examples.

See the documentation of :class:`fractions.Fraction` for more information and examples.

+
Polyhedra
---------

Polyhedra
---------

@@ -278,6 +280,10 @@ This space can be unbounded.
The tuple of constraints, i.e., equalities and inequalities.
This is semantically equivalent to: ``equalities + inequalities``.

The tuple of constraints, i.e., equalities and inequalities.
This is semantically equivalent to: ``equalities + inequalities``.

+    .. method:: convex_union(polyhedron[, ...])
+
+        Return the convex union of two or more polyhedra.
+
.. method:: widen(polyhedron)

Compute the *standard widening* of two polyhedra, à la Halbwachs.
.. method:: widen(polyhedron)

Compute the *standard widening* of two polyhedra, à la Halbwachs.
index e5e2523..50af053 100644 (file)
@@ -144,6 +144,15 @@ class Polyhedron(Domain):
def aspolyhedron(self):
return self

def aspolyhedron(self):
return self

+    def convex_union(self, *others):
+        """
+        Return the convex union of two or more polyhedra.
+        """
+        for other in others:
+            if not isinstance(other, Polyhedron):
+                raise TypeError('arguments must be Polyhedron instances')
+        return Polyhedron(self.union(*others))
+
def __contains__(self, point):
if not isinstance(point, Point):
raise TypeError('point must be a Point instance')
def __contains__(self, point):
if not isinstance(point, Point):
raise TypeError('point must be a Point instance')