# PyPolyhedron

by *Pearu Peterson*, LGPL
## News

Oct 10, 2007, polyhedron version 0.2.1

Fixed a bug in cddlib-0.94d causing segfault when computing Vrep
from a minimal number of vertices. Patched cddlib-0.94d is included.

Oct 9, 2007, polyhedron version 0.2

Made polyhedron a package.
Dropped Numeric support, supporting NumPy instead.
Added example.py file. The source of cddlib is now included.
Using GMP is optional.

## Introduction

PyPolyhedron is a Python interface to a C-library cddlib:
-----------------------------------------------
C-Library cddlib (version 0.91) README FILE
-----------------------------------------------
1. The C-library cddlib is a C implementation of the Double Description
Method of Motzkin et al. for generating all vertices (i.e. extreme points)
and extreme rays of a general convex polyhedron in R^d given by a system
of linear inequalities:
P = { x=(x1, ..., xd)^T : b - A x >= 0 }
where A is a given m x d real matrix, b is a given m-vector
and 0 is the m-vector of all zeros.
...

## Usage

To use PyPolyhedron, compile it (see below) and ```
import
polyhedron
```

from Python program. The package
`polyhedron`

provides two classes `Hrep`

and
`Vrep`

which will hold polyhedron's data.
Currently, there is no documentation available, but the code is really
simple in order to get an idea how to access polyhedron's data from Python.
See `Polyhedron.__str__`

method and the header of
`_cddmodule.c`

for more details.

Here follows an example how to construct a convex hull
from a set of random points and then to test if a random
point is inside or outside the hull:

from numpy import *
from polyhedron import Vrep, Hrep
points = random.random ((20,3))
def mkhull(points):
p = Vrep (points)
return Hrep (p.A, p.b)
p = mkhull(points)
print 'Hull vertices:\n',p.generators
points2 = 1.1*random.random ((3,3))
for i in range (len (points2)):
point = points2[i]
if alltrue (dot (p.A,point) <= p.b):
print 'point',point,'is IN'
else:
print 'point',point,'is OUT'

## Compilation/Installation

Run `python setup.py install`

to build and
install `polyhedron`

package.
Run `python setup.py build_ext --inplace`

to build
`polyhedron`

package in-situ.

### Requirements

You'll need
- Python
- NumPy (version 1.0.3.1 or newer)
to compile C/API modules.

The source of cddlib-094d
is included with the package. Using GMP library is optional (you'll
need to update the `setup.py`

file properly for that).
### Download

- src/polyhedron.tgz

Pearu Peterson
<pearu.peterson@gmail.com>

Last modified: Oct 9, 2007
Submit this page for validation