Ищу алгоритм без «грубой силы» для удаления пересекающихся областей коллекции Rects

У меня есть коллекция Rects размером n, большинство из которых пересекаются. Я хотел бы удалить пересечения и уменьшить пересекающиеся прямоугольники до меньших непересекающихся прямоугольников.

Я мог бы легко подобрать решение, но я ищу эффективный алгоритм.

Вот визуализация:

Оригинал:

original

Обработано:

processed

В идеале сигнатура метода должна была бы выглядеть так:

public static List<RectF> resolveIntersection(List<RectF> rects);

результат был бы больше или равен входному, где выход разрешает вышеуказанный визуальный элемент представление.

5
задан Michael Pardo 16 February 2012 в 01:52
поделиться