Упаковывать прямоугольники без вращения?

Является ли алгоритм упаковки прямоугольников без вращения?

Может быть, реализация в C ++?

я нашел этот

а также

  • GuillotineBinPack
  • ShelfBinPack
  • SkylineBinPack

Но они вращаться прямоугольники.

2

Решение

Вы можете отсортировать блоки по ширине, а затем поместить их в узел дерева. Затем разделите дерево вдоль оси 2. Для следующей коробки ищите лучшее соответствие, т.е. Наименьшее количество отходов и поместите коробку в свободный узел. Промыть и повторять до тех пор, пока не останется ни коробок, ни узла. Вы можете посмотреть упаковку лайтмапов с kd-деревом от blackpawn.

3

Другие решения

Вы можете сделать ваши коробки квадратными и игнорировать вращение после упаковки. Это потратит некоторое пространство, но не требует изменений в библиотеке гильотины.

2

Вы можете использовать этот небольшой код для упаковки прямоугольников:

http://www.flipcode.com/archives/Rectangle_Placement.shtml

2