2014-09-10 5 views
0

Algorithm for finding the fewest rectangles to cover a set of rectangles without overlappingалгоритм для нахождения вершин многоугольника для данного набора перекрывающихся прямоугольников

Nice объяснение, Гарет. Я пытаюсь понять, как добиться обратного решения, т. Е. Как начать с набора прямоугольников и привести к многоугольнику.

Мое решение работает во всех случаях, кроме случаев, когда части или целые края двух или более прямоугольников перекрывают друг друга.

Как избавиться от точек, которые составляют перекрывающиеся края?

ответ

0

В связанном вопросе я собираюсь предположить, что прямоугольники выровнены по оси и что они имеют попарно непересекающиеся интерьеры. Разложите каждый прямоугольник на четыре отрезка, ориентированные по часовой стрелке. Повторите следующую процедуру для горизонтального и вертикального сегментов.

Разделите горизонтальные сегменты на y. Для каждого y каждый сегмент порождает два события: событие начала для хвоста и событие остановки для головы. Сортируйте события по x (обратите внимание, что событие остановки для ориентированного на сегмент слева перед предыдущим событием). Инициализируйте переменную sign = 0, затем выполните итерацию, выполнив sign += 1 в каждом событии начала и sign -= 1 на каждой остановке. Всякий раз, когда sign идет от 0 до 1, начните ориентированный сегмент с его хвостом в текущем месте развертки. Всякий раз, когда sign идет от 1 до 0, завершите этот сегмент своей головой в текущем месте развертки, отбросив его, если он вырожден. Аналогично, всякий раз, когда sign идет от 0 до -1, начните ориентированный сегмент с его головкой в текущем местоположении развертки. Всякий раз, когда sign идет от -1 до 0, завершите этот сегмент его хвостом в текущем местоположении развертки, отбросив его, если он вырожден.

+0

Спасибо, Дэвид. Я попытаюсь посмотреть, работает ли это с моей проблемой. – Manish

+0

Дэвид, я просто смог вернуться к проблеме. Ваше решение предполагает, что прямоугольники имеют попарно непересекающиеся интерьеры. У меня есть куча пересекающихся прямоугольников. Кроме того, я должен рассмотреть два соседних прямоугольника (края касаются, но теоретически не пересекаются) как принадлежащие к группе. – Manish

Смежные вопросы