I don't know, whether this is an already known algorithm and I also don't know how optimal the resulting partioning will be, but its description and implementation are simple: - identify the set of inflex points, i.e. where a right-turn is made when going around the polygon counter clockwise - calculate the nested convex hull of the inflex point set - cut the polygon along the edges of the nested convex hull, that are inside the polygon