Мне нужно делать написанное в сабже. Причём так, чтобы из саморесекающихся полигонов (полилиний) получалось минимальное количество несамопересекающихся (как будто мы «закрасили» старый полигон и разъединили его по одиноким точкам, если таковые имеются).
Анимированная картинка: http://rghost.ru/4112069/image.png. Стоит учесть, что может получиться и не одна полилиния (например, из «банта» должно получится 2 треугольника).
Хотел было воспользоваться QPainterPath в Qt, но оказалось, что она мне не подходит — по ссылке два примера использования Qt'шного упрощения саморесекающихся полигонов; первый симплифицируется правильно, второй нет, но это там типа не баг, а фича.
Сложение-вычитание, в принципе, не столько важно, ибо в Qt работает как надо.