X-Git-Url: https://scm.cri.ensmp.fr/git/linpy.git/blobdiff_plain/27d0bac21b2bb5f5eac92064edd8a1896b67eefc..6d08d8c0a84c1ffa31f5eb16e33b340727f46175:/examples/squares.py diff --git a/examples/squares.py b/examples/squares.py index 7f1aa30..1a0cedb 100755 --- a/examples/squares.py +++ b/examples/squares.py @@ -1,21 +1,57 @@ #!/usr/bin/env python3 -from pypol import * - -x, y = symbols('x y') - -sq1 = Le(0, x) & Le(x, 2) & Le(0, y) & Le(y, 2) -sq2 = Le(2, x) & Le(x, 4) & Le(2, y) & Le(y, 4) - -print('sq1 =', sq1) -print('sq2 =', sq2) -print() -print('¬sq1 =', ~sq1) -print() -print('sq1 - sq2 =', sq1 - sq2) -print('sq1 - sq2 =', Polyhedron(sq1 - sq2)) -print() -print('sq1 ∩ sq2 =', sq1 & sq2) -print('sq1 ∪ sq2 =', sq1 | sq2) -print() -print('sq1 ⊔ sq2 =', Polyhedron(sq1 | sq2)) +# This is the code example used in the tutorial. It shows how to define and +# manipulate polyhedra. + +import code + + +class InteractiveConsole(code.InteractiveConsole): + def push(self, line=''): + if line: + print('>>>', line) + return super().push(line) + else: + print() + + +if __name__ == '__main__': + + shell = InteractiveConsole() + + shell.push('from linpy import *') + shell.push("x, y = symbols('x y')") + shell.push() + + shell.push('square1 = Le(0, x, 2) & Le(0, y, 2)') + shell.push('square1') + shell.push() + + shell.push("square2 = Polyhedron('1 <= x <= 3, 1 <= y <= 3')") + shell.push('square2') + shell.push() + + shell.push('inter = square1.intersection(square2) # or square1 & square2') + shell.push('inter') + shell.push() + + shell.push('hull = square1.convex_union(square2)') + shell.push('hull') + shell.push() + + shell.push('proj = square1.project([y])') + shell.push('proj') + shell.push() + + shell.push('inter <= square1') + shell.push('inter == Empty') + shell.push() + + shell.push('union = square1.union(square2) # or square1 | square2') + shell.push('union') + shell.push('union <= hull') + shell.push() + + shell.push('diff = square1.difference(square2) # or square1 - square2') + shell.push('diff') + shell.push('~square1')