When computing a face f of a polyhedron P with the function faces, it is stored in the cache that f is a face of P. Then the function polarFace computes the polar P' of P and the corresponding face of P' on which all points of f attain their minimum. Note that this function only works correctly for polyhedra with the origin in its relative interior.
i1 : P = hypercube 3 o1 = {ambient dimension => 3 } dimension of lineality space => 0 dimension of polyhedron => 3 number of facets => 6 number of rays => 0 number of vertices => 8 o1 : Polyhedron |
i2 : f = first faces(1,P) o2 = {ambient dimension => 3 } dimension of lineality space => 0 dimension of polyhedron => 2 number of facets => 4 number of rays => 0 number of vertices => 4 o2 : Polyhedron |
i3 : fv = polarFace f o3 = {ambient dimension => 3 } dimension of lineality space => 0 dimension of polyhedron => -1 number of facets => 0 number of rays => 0 number of vertices => 0 o3 : Polyhedron |
i4 : vertices fv o4 = 0 3 o4 : Matrix QQ <--- 0 |
If f is not a face of another polytope, then it considers f as a face of itself. Thus, it computes the polar of f, and returns the empty polyhedron as a face of the polar of f.
i5 : P = hypercube 3 o5 = {ambient dimension => 3 } dimension of lineality space => 0 dimension of polyhedron => 3 number of facets => 6 number of rays => 0 number of vertices => 8 o5 : Polyhedron |
i6 : polarFace P o6 = {ambient dimension => 3 } dimension of lineality space => 0 dimension of polyhedron => -1 number of facets => 0 number of rays => 0 number of vertices => 0 o6 : Polyhedron |
The object polarFace is a method function.