X-Git-Url: https://scm.cri.mines-paristech.fr/git/linpy.git/blobdiff_plain/197818714e75c2353ed8b7c9fec653f1212f13ae..5541da1f6a0d044cf6ea335d5cf338964310b4ad:/examples/tesseract.py?ds=sidebyside diff --git a/examples/tesseract.py b/examples/tesseract.py index bf338f7..383d7bd 100755 --- a/examples/tesseract.py +++ b/examples/tesseract.py @@ -1,40 +1,25 @@ #!/usr/bin/env python3 -# -# Copyright 2014 MINES ParisTech -# -# This file is part of LinPy. -# -# LinPy is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# LinPy is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with LinPy. If not, see . + +# In geometry, the tesseract is the four-dimensional analog of the cube; the +# tesseract is to the cube as the cube is to the square. Just as the surface of +# the cube consists of 6 square faces, the hypersurface of the tesseract +# consists of 8 cubical cells. from linpy import * + x, y, z, t = symbols('x y z t') -tesseract = \ - Le(0, x) & Le(x, 1) & \ - Le(0, y) & Le(y, 1) & \ - Le(0, z) & Le(z, 1) & \ - Le(0, t) & Le(t, 1) +tesseract = Le(0, x, 1) & Le(0, y, 1) & Le(0, z, 1) & Le(0, t, 1) def faces(polyhedron): for points in polyhedron.faces(): face = points[0].aspolyhedron() - face = face.union(*[point.aspolyhedron() for point in points[1:]]) - face = face.aspolyhedron() + face = face.convex_union(*[point.aspolyhedron() for point in points[1:]]) yield face -print('Faces of tesseract\n\n {}\n\nare:\n'.format(tesseract)) -for face in faces(tesseract): - assert(len(face.vertices()) == 8) - print(' {}'.format(face)) +if __name__ == '__main__': + print('Faces of tesseract\n\n {}\n\nare:\n'.format(tesseract)) + for face in faces(tesseract): + assert(len(face.vertices()) == 8) + print(' {}'.format(face))