Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: алгоримт заполнения прямоугольного контейнера
Форумы портала PHP.SU » PHP » Программирование на PHP » алгоримт заполнения прямоугольного контейнера

Страниц (1): [1]
 

1. DelphinPRO - 27 Ноября, 2012 - 12:34:38 - перейти к сообщению
стоит задача заполнить прямоугольный контейнер размерами $w и $h прямоугольными блоками произвольных размеров. Высота внутренних блоков $h_block <= $h. Контейнер заполняется слева направо без промежутков между блоками. Допустимы промежутки между нижней границей блока и нижней границей контейнера. Прилагаю схематический рисунок.
На входе имеем размеры внешнего контейнера в пикселях ($w и $h) и массив с размерами блоков $blocks, где каждый элемент имеет формат

На выходе нужно сгенерировать разметку, где
- внешний контейнер,
CODE (htmlphp):
скопировать код в буфер обмена
  1. <div class="block" style="width:<?=$block[0]['width']?>;height:<?=$block[0]['height']?>;"></div>
- внутренние блоки.
Для начала, ради упрощения, полагаем, что .block имеют абсолютное позиционирование.

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

гуглил, вики читал про заполнение контейнеров, но нифига не понял. хотелось объяснения алгоритма попроще.
2. Zuldek - 27 Ноября, 2012 - 13:19:39 - перейти к сообщению
в принципе алгоритм аналогичен указанному ниже: сортировка по высоте и вычислении размеров пустот
3. EuGen - 27 Ноября, 2012 - 13:29:10 - перейти к сообщению
Rectangle packing
?
4. Zuldek - 27 Ноября, 2012 - 13:56:27 - перейти к сообщению
помнится была тулза под никс ей отдаешь картинки, она возвращает их в едином файле и файл координат. Только не помню какая Улыбка
5. DelphinPRO - 27 Ноября, 2012 - 18:46:54 - перейти к сообщению
Zuldek пишет:
помнится была тулза
мне решение в виде кода нужно Улыбка
сижу, вкуриваю ссылку выше
6. Zuldek - 28 Ноября, 2012 - 11:39:49 - перейти к сообщению
Просили алгоритм - показали алгоритм.
Чего там вкуривать. Алгоритм можно понять по картинкам. Остальное математика и чуток геометрии:
1. Сортировка по высоте
2. Поставили блок, получили 3 пустоты с их размерами
3. поставили блок внутрь пустоты, получили ещё 3 пустоты
4. Заполнили все пустоты (ни один из блоков не влазит) - перешли на пустоты уровнем выше (держать в многомерных массивах).
7. DelphinPRO - 28 Ноября, 2012 - 16:25:08 - перейти к сообщению
Zuldek, спасибо, с алгоритмом-то я уже разобрался. Мой пост выше - это ответ на «помнится была тулза под никс ей отдаешь картинки, она возвращает их в едином файле и файл координат.»
8. EuGen - 28 Ноября, 2012 - 16:26:57 - перейти к сообщению
DelphinPRO пишет:
спасибо, с алгоритмом-то я уже разобрался.

Значит, слукавили. Ведь, между прочим, если учесть
DelphinPRO пишет:
гуглил, вики читал про заполнение контейнеров

- то это странно, поскольку ссылка выше - первая из небезызвестного ресурса, которая мне попалась по данной теме
9. DelphinPRO - 29 Ноября, 2012 - 11:22:59 - перейти к сообщению
никакого лукавства. Улыбка просто по-умолчанию ищу в русском сегменте интернета, с соответствующей настройкой в гугле, соответственно эту ссылку не находил.

 

Powered by ExBB FM 1.0 RC1