JavaScript Merge Intersecting Rectangles

Мне нужен способ объединить массив прямоугольных объектов (объекты со свойствами x, y, w, h ), только если они пересекаются. Так, например:

merge ([{x: 0, y: 0, w: 5, h: 5}, {x: 1, y: 1, w: 5, h: 5}])

вернет: [{x: 0, y: 0, w: 6, h: 6}]


объединить ([{x: 0, y: 0, w: 1, h: 1}, { x: 5, y: 5, w: 1, h: 1}])

вернет: [{x: 0, y: 0, w: 1, h: 1}, {x: 5 , y: 5, w: 1, h: 1}]


объединить ([{x: 0, y: 0, w: 5, h: 5}, {x: 1, y: 1, w: 5 , h: 5}, {x: 15, y: 15, w: 1, h: 1}])

вернет: [{x: 0, y: 0, w: 6, h: 6}, {x: 15, y: 15, w: 1, h: 1}]


Если два прямоугольника пересекаются, минимальный ограничивающий прямоугольник должен заменить два прямоугольника. Список необходимо будет снова проверить после слияния, если новая MBR вызывает пересечение с другими прямоугольниками. Да хоть убей, я не могу этого понять.

7
задан Louis 2 March 2011 в 07:23
поделиться