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