If F is projective, then there exists a polyhedron P such that F is the normalFan of P. This means every codimension 1 cone of the Fan corresponds exactly to an edge of the polytope. So consider QQ to the number of all edges. This can be considered as the space of all edge lengths. If we take arbitrary lengths now for every edge we do not get a polytope. But every codimension 2 cone of the fan corresponds to a 2 dimensional face of the polytope and if the edges belonging to this face add up to 0 zero, they form in fact a 2 dimensional face. This gives linear equations on the space of edge lengths and if we intersect these equations with the positive orthant in the space of edge lengths we get a Cone. Thus, there exists such a polytope if and only if there is a vector in this cone with strictly positive entries, since every edge has to appear in the polytope.
IF F is polytopal, the function polytope returns a polytope of which F is the normalFan.
Note that the function first checks if the fan is complete.
i1 : C1 = coneFromVData matrix {{1,0},{0,1}}; |
i2 : C2 = coneFromVData matrix {{1,-1},{0,-2}}; |
i3 : C3 = coneFromVData matrix {{0,-2},{1,-1}}; |
i4 : C4 = coneFromVData matrix {{-1,-2},{-2,-1}}; |
i5 : F = fan{C1,C2,C3,C4} o5 = F o5 : Fan |
i6 : isPolytopal F o6 = true |
The object isPolytopal is a method function.