I have a Voronoi diagram that I need to calculate the area of each cell.

This Voronoi diagram is produced by Voronoi command in MATLAB.

To find the vertices of the Voronoi cell I use Voronoin command in MATLAB, but the problem is that the first row of the v is (inf, inf), so the area of all voronoi cells near the boundary of domain are inf, but I need to find the actual area.

If the area of the domain be $|D|$ and area of the voronoi cells be $|D_i|$, I need to find area such that $\sum_i |D_i|=|D|$

  • $\begingroup$ Can you give a concise example of the problem with a handful of points? It seems like you would need to choose a boundary to form the exterior of the region of interest, and if your data is a point cloud, that boundary is arbitrary. Once you have that boundary, you should be able to intersect the boundary Voronoi cells with it and compute their areas/volumes. $\endgroup$
    – Bill Barth
    Jun 11 '14 at 0:54
  • $\begingroup$ For example when the domain is a unit square, and the nodes are uniformly distribution by distance 0.1, most of the Voroni cells near the boundary are rectangle with area 0.005 $\endgroup$
    – rosa
    Jun 11 '14 at 4:07
  • $\begingroup$ How could I intersect the boundary Voronoi cells with the domain boundary? $\endgroup$
    – rosa
    Jun 11 '14 at 4:20

Your question seems to imply that the cells you get extend to infinity. But, since cells are just polyhedra, it is easy to intersect them with your domain which, most of the time, is also just a polyhedron. If your domain is finite, then so are all the cells. In other words, if you encounter a cell with a vertex at infinity, then you need to determine the bounding lines that extend to infinity, intersect them with your domain, and replace the vertices at infinity with the intersection point. These cells will all have finite volume/area.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.