У меня есть ряд объектов, которые нужно отобразить на HTML5
холсты. Мой вход - упорядоченный список ограничивающих прямоугольник по оси. Эти ящики часто перекрываются, но также часто оставляют большие пространства пустого пространства между ними.
Я хотел бы свести к минимуму площадь поверхности холста, которую я должен создать, чтобы отобразить все эти элементы в правильном порядке, в то же время не имея возможности отображать части одного объекта на нескольких холстах (тем самым предотвращая простое решение просто создавая холсты, которые плотно подходят ко всему занятому пространству).
Итак, в основном, я хочу, чтобы все группы объектов были отображены на одном холсте, а объекты с неперекрывающимися объектами должны отображаться на отдельном холсте. Но не все перекрывающиеся объекты должны отображаться на отдельных холстах - например, очень высокий и очень широкий объект, который слегка перекрывается, чтобы сформировать L, должен все же отображаться на двух отдельных холстах, так как их объединение приводит к большому количеству пространства в пустоте в открытой части L.
Поддержание порядка Z также приводит к некоторым трудным случаям. Например, следующее изображение представляет собой одно возможное расположение:
В этом случае вам может понадобиться объединить синий и зеленый слои в один холст, но вы не сможете создать правильное распределение таким образом, не включая также красный слой, и в итоге вы получите много мертвых пространство.
Но вы также не можете просто ограничить объединение слоев с элементами, которые являются последовательными в порядке Z. Порядок Z может совпадать с приведенным выше изображением, но красный элемент может не совпадать с другими, и в этом случае вы хотите объединить синий и зеленый слои.
Я изо всех сил пытаюсь найти хороший алгоритм для этой проблемы. Кто-нибудь хочет перезвонить?