&<(f1::PFACE, f2::PFACE)::boolean &>(f2::PFACE, f1::PFACE)::boolean f1 &< f2 f2 &> f1
Test whether f1 is a proper face of f2. Both faces must have identical domains.
&<<(f1::PFACE, f2::PFACE)::boolean &>>(f2::PFACE, f1::PFACE)::boolean f1 &<< f2 f2 &>> f1
Test whether f1 is a facet of f2. Both faces must have identical domains.
&<=(f1::PFACE, f2::PFACE)::boolean &>=(f2::PFACE, f1::PFACE)::boolean f1 &<= f2 f2 &>= f1
Test whether f1 is a face of f2. Both faces must have identical domains.
&<>(f1::PFACE, f2::PFACE)::boolean f1 &<> f2
Test whether f1 and f2 represent different faces. This is true if their domains are not identical.
&=(f1::PFACE, f2::PFACE)::boolean f1 &= f2
Test whether f1 and f2 represent the same face. This is false if they domains are not identical.
&x(f1::PFACE, f2::PFACE, ...)::PFACE f1 &x f2
The Cartesian product of the given faces, considered as a face of the Cartesian product of their domains. See POLYHEDRON[&x].
ambientdim(f::PFACE)::nonnegint
The dimension of the ambient space of f.
codim(f::PFACE)::nonnegint
The codimension of f in its ambient space. See also POLYHEDRON[codim], dim and corank.
convert(f::PFACE, CFACE)::CFACE
This functions converts f to the corresponding face of the homogenization convert(domain(f), CONE) of its domain. See also POLYHEDRON[convert/CONE].
convert(f::PFACE, POLYHEDRON)::POLYHEDRON
This functions converts f to the POLYHEDRON representing the same point set.
corank(f::PFACE)::nonnegint
The corank of f in the face lattice of its domain. This is the distance between f and the maximal element of the face lattice. See also rank.
dim(f::PFACE)::integer
The dimension of f. Note that the dimension of a facet of f may be different from dim(f)-1 if the facet is empty. See also POLYHEDRON[dim] and rank.
f := maximal(cube(2)); |
dim(f); map(dim, pred(f)); |
P := cube(1) &x fullpolyhedron(1); f := support(P, [1, 0]); |
dim(f); map(dim, pred(f)); |
domain(f::PFACE)::POLYHEDRON
The polyhedron of which f is a face. Mathematically speaking, f may be a face of many polyhedra, but with the Convex package it is always constructed as the face of a fixed polyhedron. See POLYHEDRON[isface] for a way to change the domain.
P := cube(2); f := support(P, [1, 0]); |
domain(f) &= P; |
dual(f::PFACE)::PFACE
If P is bounded and contains the origin in is interior (i.e., if P is of type POLYTOPE__0), then there is an order-reversing bijection between the faces of P and of its dual. This function returns the face of dual(P) which is dual to f in this sense. Note that (even as point sets) this is not the same as the dual of f, considered as polyhedron.
In the general case, one can still assign a "dual" face to f (by taking the dual in the category of cones and then intersecting the result with the halfspace at infinity), but this may no longer be a bijection.
P := cube(2); f := support(P, [1, 1]); |
f2 := dual(f); vertices(f2); domain(f2) &= dual(domain(f)); |
P2 := dual(convert(f, POLYHEDRON)); vertices(P2); rays(P2), lines(P2); |
hspacenos(f::PFACE)::set(posint)
The set of indices of the facets incident to f. The ordering is that of hspaces(domain(f)), see POLYHEDRON[hspaces]. This is a low-level routine.
isbounded(f::PFACE)::boolean
Test whether f is bounded.
isempty(f::PFACE)::boolean
Test whether f is the empty face.
maximum(f1::PFACE, f2::PFACE, ...)::PFACE
The maximum of f1, f2 ... in the face lattice. All faces must have the same domain, which will also be the domain of the result. At least one face must be given.
minimum(f1::PFACE, f2::PFACE, ...)::PFACE
The minimum of f1, f2 ... in the face lattice. All faces must have the same domain, which will also be the domain of the result. At least one face must be given.
pred(f::PFACE)::list(PFACE)
A list containing the predecessors of f in the face lattice of domain(f). These are the faces whose rank is one smaller than that of f, or, in other words, the facets of f. See also succ.
P := cube(3); f := support(P, [0, 1, 1/5]); vertices(f); |
L := pred(f); map(vertices, L); |
f := minimal(P); rank(f); pred(f); |
rank(f::PFACE)::nonnegint
The rank of f in the face lattice of its domain. This is the distance between f and the empty face. This function behaves better with respect to facets than the dimension.
P := fullpolyhedron(2); f1 := maximal(P); f2 := minimal(P); |
dim(f1), dim(f2); |
rank(f1), rank(f2); |
raynos(f::PFACE)::set(posint)
The set of indices of the rays incident to f. The ordering is that of rays(domain(f)), see POLYHEDRON[rays]. This is a low-level routine.
rays(f::PFACE)::list(vec)
A list of the rays of f. See POLYHEDRON[rays]. Do not make any assumption about the order.
relint(f::PFACE1)::vec
A point in the relative interior of f.
succ(f::PFACE)::list(PFACE)
A list containing the successors of f in the face lattice of domain(f). These are the faces whose rank is one bigger than that of f, or, in other words, the faces of which f is a facet. See also pred.
P := cube(2); |
L := succ(minimal(P)); map(vertices, L); |
succ(maximal(P)); |
surface(f::PFACE)::{nonnegative, pos_infinity}
The surface of f with respect to the induced Euclidean volume. This is 0 if and only if f is empty or has only the empty face as facet. See also POLYHEDRON[surface].
vertexnos(f::PFACE)::set(posint)
The set of indices of the vertices incident to f. The ordering is that of vertices(domain(f)), see POLYHEDRON[vertices]. This is a low-level routine.
vertices(f::PFACE)::list(vec)
A list of the vertices of f. See POLYHEDRON[vertices]. Do not make any assumption about the order.
volume(f::PFACE)::{nonnegative, pos_infinity}
The volume of f with respect to the induced Euclidean volume. Unlike POLYHEDRON[volume], this function never returns 0 for non-empty polyhedra.