Polyhedra provides an unified interface for Polyhedral Computation Libraries such as CDDLib.jl. These manipulation notably include the transformation from (resp. to) an inequality representation of a polyhedron to (resp. from) its generator representation (convex hull of points + conic hull of rays) and projection/elimination of a variable with e.g. Fourier-Motzkin.
Documentation can be found here.
It defines the abstract type
Polyhedron and splits the operations on this type in two categories:
- Mandatory: Operations that needs to be implemented by the Polyhedral Computation Libraries: e.g. Transformation between the two representations described above and variable elimination.
- Optional: Operations that can be implemented using the other operations and hence have a default implementation: e.g. creation of the polyhedron from the feasible set of a JuMP model, linear transformation, intersection, Minkowski addition, decomposition into points and faces for e.g. 3D visualization using DrakeVisualizer or GLVisualize.jl…
Here is a list of the Polyhedral Computation Libraries implementing the interface of
- CDDLib.jl: CDD wrapper.
- ConvexHull.jl: Pure Julia implementation of the double description algorithm.
- LRSLib.jl: LRS wrapper.
- QHull.jl: qhull wrapper.
Please let me know if you plan to write a new wrapper (or an implementation in pure Julia).
Since libraries (
qhull, …) use different algorithms, there is no better library for every problem; here is a comparison.