Мне нужен способ объединить массив прямоугольных объектов (объекты со свойствами 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 вызывает пересечение с другими прямоугольниками. Да хоть убей, я не могу этого понять.