Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.224.62.6] |
|
Сообщ.
#1
,
|
|
|
Есть следующая проблема:
Плоттер и куча чертежей, например, в bmp. Требуется выводить на плоттер эти чертежи не по одному, а заранее компонуя таким образом, чтобы они занимали как можно меньше места на бумаге. Т.е., если мы будем выводить по очереди по одному листочку A4 на плоттер А0, то это довольно расточительно, и лучше создать один большой bmp, где все будет размещено компактно. Если принять допущение, что используются только стандартные форматы чертежей (где каждый следующий в два раза больше другого), то все довольно просто и алгоритм компоновки вопросов не вызывает (ищем два чертежа одинакового формата, склеиваем их в один форматом побольше и так пока есть, что склеивать). Однако все гораздо хуже и чертежи могут быть произвольных размеров. Может кто сталкивался с такой задачей, т.к. я сходу ничего пока не придумал? |
Сообщ.
#2
,
|
|
|
Правильно задача звучит заполение прямоугольника фиксированого размера прямоугольниками произвольного.
Наверное сделай так кладешь БМП 1 Смотришь сколько осталось если место есть кладешь 2 проверешь границы если не влазиет как нибудь двигаешь Короче не тривиально |
Сообщ.
#3
,
|
|
|
Вот только заполнение не прямоугольника а рулона, т.е. есть ограничение только по одной координате, а другая предполагается бесконечной.
|
Сообщ.
#4
,
|
|
|
Попробуй, для начала,
1. Сориентировать прямоугольники например в вертикальные. 2. Затем отсортировать их по убыванию высоты. 3. Далее в цикле распологать прямоугольники начиная с самых "высоких". Не совсем оптимально, но зато довольно быстро. |
Сообщ.
#5
,
|
|
|
Над похожим вопросом работали уже, правда в 3 мерном пространстве,
посмотри...http://pascal.sources.ru/cgi-bin/forum/YaB...;num=1018976347 |