![]() |
|
|
![]()
|
|
| japanes |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 20.1.2007 Репутация: нет Всего: 7 |
Люди, может кто-то видел пример в сети или может помочь: необходимо выводить N-е количество абсолютно позиционированных блоков в хаотичном порядке, но с условием, что ни один из элементов не будет налазить друг на друга. Примерно как должно выглядеть это в итоге в аттаче.
Присоединённый файл ( Кол-во скачиваний: 32 )
example.jpg 18,54 Kb |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 7 Всего: 386 |
Я бы не назвал конструкцию на картинке хаотичной
Можно предложить такой алгоритм. Есть массив div'ов с определенными размерами. - первый элемент выставляем в центр композиции. Каждый следующий выставляем в ЦЕНТР композиции и выбираем для него вектор (случайно). Если пересечение с предыдущими элементами есть - смещаем элемент по вектору на случайное, но не очень большое число. Эффективно определить пересекаются ли прямоугольники не просто. Можно тупо пребирать все уже размещенные, и сравнивать габариты, а можно представить всю композицию как большой 2-х мерный массив (каждый элемент которого изображает квадрат 10х10). при установке элемента нужно отметить соответствующие элементы массива как занятые (Этакий "морской бой"). Если сдвигать элементы не по вектору, а по раскручивающейся спирали, можно получить примерно то, что нарисовано на картинке. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| maxdiver |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
Есть идея простая:
Есть предположение, что такая весчь найдёт ответ, если конечно тест не слишком плотный. Можно её оформить как перебор с возвратом, чтобы выбор позиции первой фигуры не мог оказаться фатальным. Это сообщение отредактировал(а) maxdiver - 7.3.2008, 20:01 |
|||
|
||||
| japanes |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 20.1.2007 Репутация: нет Всего: 7 |
с С++ не совсем знаком, а именно строка:
вызвала вопрос о том, что она делает :-/ |
|||
|
||||
| maxdiver |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
japanes
это значит:
P.S. а я подумал, что на псевдокоде C++ понятнее будет |
|||
|
||||
| japanes |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 20.1.2007 Репутация: нет Всего: 7 |
а intersect() что за функция, чего делает?
P.S. на javascript-е было бы в самый раз ;) Это сообщение отредактировал(а) japanes - 9.3.2008, 18:34 |
|||
|
||||
| maxdiver |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
intersect - проверяет, пересекаются два блока или нет (если один принадлежит другому, то это считается как пересечение).
Эту функцию нужно, конечно, реализовать самому, но её реализация - это особая тема |
|||
|
||||
| japanes |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 20.1.2007 Репутация: нет Всего: 7 |
maxdiver, на самом деле весь вопрос с реализацией построения блоков уперся именно в эту функцию... может через аську решим ? 339-541-633
|
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |