bf338f797b360a713ab6dafc4bf09f02c5161a28
[linpy.git] / examples / tesseract.py
1 #!/usr/bin/env python3
2 #
3 # Copyright 2014 MINES ParisTech
4 #
5 # This file is part of LinPy.
6 #
7 # LinPy is free software: you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation, either version 3 of the License, or
10 # (at your option) any later version.
11 #
12 # LinPy is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with LinPy. If not, see <http://www.gnu.org/licenses/>.
19
20 from linpy import *
21
22 x, y, z, t = symbols('x y z t')
23
24 tesseract = \
25 Le(0, x) & Le(x, 1) & \
26 Le(0, y) & Le(y, 1) & \
27 Le(0, z) & Le(z, 1) & \
28 Le(0, t) & Le(t, 1)
29
30 def faces(polyhedron):
31 for points in polyhedron.faces():
32 face = points[0].aspolyhedron()
33 face = face.union(*[point.aspolyhedron() for point in points[1:]])
34 face = face.aspolyhedron()
35 yield face
36
37 print('Faces of tesseract\n\n {}\n\nare:\n'.format(tesseract))
38 for face in faces(tesseract):
39 assert(len(face.vertices()) == 8)
40 print(' {}'.format(face))