How to determine, using Qhull, which voronoi cells (by index) are "proper" (made of "existing vertices")
I am trying to perform a constrained relaxation using LLoyds algorithm and input generated by scipy.spatial Voronoi (which is a wrapper for Qhull).
In terms of code it looks like:
points = [n for n in itertools.product(xrange(3),xrange(3))]
vor = Voronoi(points)
vor2 = lloyd(vor) # my relaxation function - not relevant to the question
The output graph generated by the code looks ok (see below) but the data in the vor structure is not enough to perform the Lloyds relaxation. It is because I should only move the points that are inside the valid voronoi cells ( #4 in the image). The other should be left as they are. Qhull messes the order of points/regions so I can not estimate which region belongs to which point.
Here is the illustration of the problem:
print vor.vertices
#[[ 0.5 0.5]
# [ 1.5 0.5]
# [ 0.5 1.5]
# [ 1.5 1.5]]
print vor.regions
# [[], [-1, 0], [-1, 1], [1, -1, 0], [3, -1, 2], [-1, 3], [-1, 2], [3, 2, 0, 1], [2, -1, 0], [3, -1, 1]]
print vor.points
# [[ 0. 0.]
# [ 0. 1.]
# [ 0. 2.]
# [ 1. 0.]
# [ 1. 1.]
# [ 1. 2.]
# [ 2. 0.]
# [ 2. 1.]
# [ 2. 2.]]
print vor.point_region
# [1 8 6 3 7 4 2 9 5]
Now i should find somehow that vor.regions[7] is a region that belongs to the point vor.points[4]. How to achieve this?