next | previous | forward | backward | up | top | index | toc | Macaulay2 website
OldPolyhedra :: addPolyhedron

addPolyhedron -- adds Polyhedra to a PolyhedralComplex

Synopsis

Description

If addPolyhedron is applied to a Polyhedron and a PolyhedralComplex it adds the Polyhedron to the PolyhedralComplex if they are in the same ambient space, if the Polyhedron is compatible with every generating Polyhedron of PC, but is not a face of one of them. If one of the first two conditions fails, there will be an error and no PolyhedralComplex will be returned. The pairs of incompatible polyhedra can be accessed with the function incompPolyhedra. If the last condition fails, then the Polyhedron is already in the PolyhedralComplex as a face of one of the poyhedra, so it does not have to be added. The conditions are checked in this order.

If addPolyhedron is applied to a List and a PolyhedralComplex, then the function adds the list Polyhedron by Polyhedron and stops if one of the three conditions fails for one of the polyhedra. There is again an error for the first two conditions. The pairs of incompatible polyhedra can again be retrieved using incompPolyhedra. Note that the may also contain PolyhedralComplexes. Then the function replaces it by its list of generating polyhedra.

If applied to a pair of PolyhedralComplexes it adds the generating polyhedra of the first PolyhedralComplex to the second PolyhedralComplex, again checking for the same conditions as above.

As an example, we make a PolyhedralComplex consisting of the following Polyhedron and try to add an adjacent cube.

i1 : P = convexHull matrix {{1,1,1,1,2,2,2,2},{0,0,1,1,0,0,1,1},{0,1,0,1,0,1,0,1}};
i2 : PC = polyhedralComplex P

o2 = {ambient dimension => 3             }
      number of generating polyhedra => 1
      top dimension of the polyhedra => 3

o2 : PolyhedralComplex
i3 : P = hypercube 3;
i4 : incompPolyhedra(P,PC)

o4 = {({ambient dimension => 3           }, {ambient dimension => 3         
        dimension of lineality space => 0    dimension of lineality space =>
        dimension of polyhedron => 3         dimension of polyhedron => 3
        number of facets => 6                number of facets => 6
        number of rays => 0                  number of rays => 0
        number of vertices => 8              number of vertices => 8
     ------------------------------------------------------------------------
      })}
     0

o4 : List

This shows that the two polyhedra do not intersect in a common face, but if we divide P into three parts, we get a PolyhedralComplex.

i5 : P1 = convexHull matrix {{1,1,1,1,-1,-1,-1,-1},{0,0,1,1,0,0,1,1},{0,1,0,1,0,1,0,1}};
i6 : P2 = convexHull matrix {{1,1,1,1,-1,-1,-1,-1},{0,1,1,-1,0,1,1,-1},{0,0,-1,-1,0,0,-1,-1}};
i7 : P3 = convexHull matrix {{1,1,1,1,-1,-1,-1,-1},{0,0,-1,-1,0,0,-1,-1},{0,1,1,-1,0,1,1,-1}};
i8 : P == convexHull {P1,P2,P3}

o8 = true
i9 : PC = addPolyhedron({P1,P2,P3},PC)

o9 = {ambient dimension => 3             }
      number of generating polyhedra => 4
      top dimension of the polyhedra => 3

o9 : PolyhedralComplex

Ways to use addPolyhedron :

For the programmer

The object addPolyhedron is a method function.