Оптимальное сочетание прямоугольников

Мне было интересно, знает ли кто-нибудь какие-либо алгоритмы, подходящие для объединения N прямоугольников неизвестного размера в наименьший возможный содержащий прямоугольник.

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

Я хотел бы использовать это для создания CSS-спрайтов из серии изображений.

Большое Спасибо,

Иэн

4 ответов


через упаковка изображений в квадратную текстуру и Симонответ я получил по этой ссылке http://code.activestate.com/recipes/442299/

Я не проверял рецепт, но, похоже, позволяет использовать неквадратные контейнеры.


Я думаю, что то, что вы описываете, является вариантом проблемы "двумерной упаковки бункера". Единственная разница в том, что у вас есть элементы и вы пытаетесь найти самый маленький прямоугольник.

этой статья обзора-хорошее начало.


единственный способ гарантировать и оптимальное решение-это грубая сила ответа. Это быстро становится неуправляемым для персональных компьютеров, когда у вас есть несколько прямоугольников и возможность поворота.

Википедия имеет хорошую статью о проблеме упаковки http://en.wikipedia.org/wiki/Packing_problem


вот хорошее описание алгоритма быстрой упаковки -http://www.codeproject.com/KB/web-image/rectanglepacker.aspx