Алгоритм разбиения самопересекающегося Path2D на несколько несамопересекающихся путей?

Мне нужно избавиться от самопересечений в фигуре. Форма создается из массива точек, поэтому все сегменты этой фигуры являются линиями. ( только линий, без кривых и дуг)

Раньше я пытался создать Path2D из этих точек, построить из него Area, а затем, используя его PathIterator, создал несколько Path2D, которые каким-то образом были подпутьями предыдущего пути, поэтому самопересечения исчезли. Но для некоторых путей это не работает - самопересечения все еще остаются.

Так не могли бы вы указать мне место, где я могу найти хороший алгоритм, чтобы сделать то же самое?

Изменить: У меня нет ' Я нигде не нашел ничего полезного, поэтому написал свой алгоритм. Смотрите ответы.

5
задан Rogach 31 January 2011 в 15:04
поделиться