# Shrink polygon to a specific area by offsetting

I have a 2D polygon that I want to shrink by a specific offset (A) to match a certain area ratio (R) of the original polygon. Is there a formula or algorithm for such a problem? I am interested in a simple solution for a triangle/quad but also a solution for complex polygons.

I attached an image for explanation. The original polygon is offset by A (equal-distant for each edge). A has to be chosen so that the new polygon has a specific area. In this example it should have half the area of the initial polygon.

I am afraid there is no truly simple solution, unless you ignore the complexities. Just think of how you would shrink a sharp V-shape, like this:

In the above, the offset was larger than the V-gap, and so the shape naturally fractured into two disconnected regions. This issue arises even with a quadrilateral.

To delve into the topic more thoroughly, see the result of Ron Wein's 2007 definitive Ph.D. thesis, described in this paper:

"Exact and approximate construction of offset polygons." (ACM link).

His work is implemented in CGAL (CGAL manual link), and now nicely described in this book:

Fogel, Efi, Dan Halperin, and Ron Wein. CGAL Arrangements and Their Applications: A Step-by-Step Guide. Vol. 7. Springer, 2012.

Finally, if you want to skim over the complexities, here is a decade-old survey that is nevertheless useful as a high-level viewpoint: survey link.