Search code examples
computational-geometryshapelycircle-pack

Packing an irregular polygon with different sized circles


I'm trying to write a program in Python with Shapely that takes in shape files (right now congressional districts) and "packs" them with circles. The end goal is to have the center points and radii of the circles. I'd like to cover the maximum area with the least amount of circles.

All of the resources I've found via Google so far are about circle packing within standard geometric objects like squares/circles/triangles etc... So my instinct is to try and turn these shapes into triangles or something and then apply some existing algorithm to the simpler shapes.

Does this seem like the right path for problem solving if the shapes have lots of small concave edges? Or is there some algorithm I haven't been able to find via Google that anyone knows of that does this already?


Solution

  • You might start with this seminal paper, and then move backward & forward in time using Google Scholar:

    Bern, Marshall, and David Eppstein. "Quadrilateral meshing by circle packing." International Journal of Computational Geometry & Applications 10.04 (2000): 347-360.


              Fig1
              Part of Fig.1


    In particular, much of the paper is on packing polygons with circles to achieve specific properties, e.g.,


              Fig5