Edit:
Ах. Я вижу, что « Прямой скелет » - это технический термин. Статья в Википедии ссылается на несколько алгоритмов. Вы смотрели на них?
Насколько я понимаю, у вас есть (выпуклый?) Многоугольник. Из него вы вычитаете 1 или более (потенциально невыпуклых) многоугольников. Вы хотите превратить результат в набор полигонов без дырок. Существуют ли дополнительные правила, которые вы пытаетесь применить?
Мне трудно придумать набор правил из приведенного вами примера. Внешние многоугольники невыпуклые; так что не похоже, что вы пытаетесь найти выпуклый набор для представления результата (что является относительно обычной задачей).
Если бы вы могли использовать разбивку, показанную ниже, алгоритм довольно прост. Вы можете уточнить?