У меня большой многоугольник (Pa
). Внутри многоугольника есть много маленьких «дырок», как показано:
Вот несколько условий для отверстий:
- Отверстия не могут перекрывать друг друга
- Отверстия не могут выходить за пределы внешнего многоугольника
- Однако отверстия могут касаться внешнего края многоугольника
Как эффективно получить оставшийся полигон (или список полигонов)? Самый простой способ (метод грубой силы) - взять Pa
и постепенно вычислить оставшийся многоугольник, вычтя отверстия. Хотя эта идея осуществима, но я подозреваю, что существует более эффективный алгоритм.
Редактировать: Я не спрашиваю о том, как выполнить алгоритм обрезки (или вычитания) полигонов! На самом деле это то, что я бы сделал грубой силой. Я спрашиваю в дополнение к методу обрезки полигонов (возьмите основной полигон и затем постепенно вырежьте отверстия), есть ли другой более эффективный способ?