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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: алгоримт заполнения прямоугольного контейнера

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
DelphinPRO
Отправлено: 27 Ноября, 2012 - 12:34:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




стоит задача заполнить прямоугольный контейнер размерами $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 имеют абсолютное позиционирование.

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

гуглил, вики читал про заполнение контейнеров, но нифига не понял. хотелось объяснения алгоритма попроще.
Прикреплено изображение (Нажмите для увеличения)
cxema.png

(Отредактировано автором: 27 Ноября, 2012 - 12:35:54)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Zuldek
Отправлено: 27 Ноября, 2012 - 13:19:39
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




в принципе алгоритм аналогичен указанному ниже: сортировка по высоте и вычислении размеров пустот

(Отредактировано автором: 27 Ноября, 2012 - 13:44:51)

 
 Top
EuGen Администратор
Отправлено: 27 Ноября, 2012 - 13:29:10
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)






-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Zuldek
Отправлено: 27 Ноября, 2012 - 13:56:27
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




помнится была тулза под никс ей отдаешь картинки, она возвращает их в едином файле и файл координат. Только не помню какая Улыбка
 
 Top
DelphinPRO
Отправлено: 27 Ноября, 2012 - 18:46:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Zuldek пишет:
помнится была тулза
мне решение в виде кода нужно Улыбка
сижу, вкуриваю ссылку выше


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Zuldek
Отправлено: 28 Ноября, 2012 - 11:39:49
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Просили алгоритм - показали алгоритм.
Чего там вкуривать. Алгоритм можно понять по картинкам. Остальное математика и чуток геометрии:
1. Сортировка по высоте
2. Поставили блок, получили 3 пустоты с их размерами
3. поставили блок внутрь пустоты, получили ещё 3 пустоты
4. Заполнили все пустоты (ни один из блоков не влазит) - перешли на пустоты уровнем выше (держать в многомерных массивах).

(Отредактировано автором: 28 Ноября, 2012 - 11:41:31)

 
 Top
DelphinPRO
Отправлено: 28 Ноября, 2012 - 16:25:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




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


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
EuGen Администратор
Отправлено: 28 Ноября, 2012 - 16:26:57
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




DelphinPRO пишет:
спасибо, с алгоритмом-то я уже разобрался.

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

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


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DelphinPRO
Отправлено: 29 Ноября, 2012 - 11:22:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




никакого лукавства. Улыбка просто по-умолчанию ищу в русском сегменте интернета, с соответствующей настройкой в гугле, соответственно эту ссылку не находил.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB