Given sets of 2D points which are the boundaries of an irregular shape, a shape which may not be convex and may have internal holes, is there an algorithm to find the larges
Motivation. Shapes given by points that sample the shape first reminds me of the concept of alpha shapes and their relation to persistent topology. See these slides for related pictures.
Anyhow, alpha shapes have an intimate relation to the Voronoi diagram of points, which is the dual (as a planar graph) to the Delaunay triangulation.
Solution. What I suggest is to consider all Voronoi nodes and take the node with the largest clearance radius (distance to its defining points) as the point you look for:
In the dual setting of Delaunay triangulations this node corresponds to the Delaunay triangle with the largest circumcircle.
This solution is also motivated by the maximum inscribed circle problem in computational geometry.
Another way to look at it is the grass-fire interpretation of Voronoi diagrams: Consider a grass fire starting at each input point. The fire grows in each direction at unit speed. The red point in the middle is the latest to be reached within the convex hull.
Analysis & implementation. The time complexity of the algorithm is O(n log n) for the Voronoi diagram and O(n) to find the Voronoi node with the largest clearance. A classic implementation is qhull. There seems to be an C++ implementation in boost that does that for you. But any Delaunay triangulation code would be fine, too.
Possible issues. If the shape is similar to an Omega letter – which possesses a large pocket – then the Voronoi node with the largest clearance is "outside" the Omega shape. Hence, one would need to get a better grip on the notion of "inside" and "outside" of a sampled shape. Here again the initially mentioned alpha shape may help, c.f. a survey by Edelsbrunner, who invented alpha shapes.