|
1 / 1 / 0
Регистрация: 10.02.2010
Сообщений: 36
|
|
Разместить прямоугольники внутри прямоугольника29.01.2016, 17:43. Показов 25326. Ответов 26
Метки нет (Все метки)
Привет!
Решаю следующую задачу: есть прямоугольная область определенных размеров, в нее нужно добавлять в случайные места другие прямоугольники, так, чтобы они не вылезали за пределы области и не наползали друг на друга. Пожалуйста, обратите внимание, что это НЕ задача о ранце, мне НЕ нужно набить как можно больше прямоугольников в наименьшую площадь. Задача в том, чтобы после постановки очередного прямоугольника в область разбить ее на свободные прямоугольные подобласти. Приложил иллюстрацию к тому что хочу сделать. 1) Пустое поле 2) Поставили прямоугольник в ПРОИЗВОЛЬНОЕ место Области A, B, C, D (да, они ПЕРЕСЕКАЮТСЯ) обозначают места, в которые можно поставить новый прямоугольник площадью меньшей чем площадь этой области. Чтобы был ясен контекст задачи - я расставляю в случайные места карты домики, соотвествкенно после постановки одного, мне нужно узнать куда я могу поставить новый.
0
|
|
| 29.01.2016, 17:43 | |
|
Ответы с готовыми решениями:
26
Вычисление 2 точек на границе прямоугольника, зная точку внутри прямоугольника и Тангенс угла наклона
|
|
1 / 1 / 0
Регистрация: 10.02.2010
Сообщений: 36
|
|||||||
| 30.01.2016, 22:35 [ТС] | |||||||
|
Приведу цитату из задания
Еще раз - если вы пытаетесь разместить что-то на сетке из непересекающихся прямоугольников - вы получаете эту проблему. Я уже не знаю как еще объяснить.
0
|
|||||||
| 31.01.2016, 07:01 | ||
|
- накидать пр-ков "как получится" и определить правила взаимодействия (напр притяжение/отталкивания) - запустить симуляцию, т.е сделать N шагов, каждый пр-к будет смещаться согласно правилам и в конце-концов система "само-сбалансируется" Если так, то нечто подобное я недавно делал, и, к моему удивлению, ожидаемого "провала по скорости" не последовало Но устраивает ли Вас это? Ведь такая расстановка совсем не "последовательная"
0
|
||
|
1 / 1 / 0
Регистрация: 10.02.2010
Сообщений: 36
|
|
| 31.01.2016, 12:18 [ТС] | |
|
Тут все бы хорошо, только вот в задании говорится, что карту нужно не только сгенерировать, но и уметь в рантайме поставить домик на свободное место. В итоге я сейчас использую совсем плохое решение - тыкаю "пальцем в небо" и смотрю, можно ли было туда поставить домик или нет, если нет, то следует еще один тычок в случайное место и так до тех пор, пока свободное место не будет найдено. Ну или не пройдет 100 попыток.
0
|
|
| 31.01.2016, 13:11 | ||
Сообщение было отмечено Fennec как решение
РешениеХорошо, вернемся к Вашей постановке. Я пытался вспомнить как я действовал, но это было неск лет назад, все очень смутно. Я хранил "уголки" - пр-ков, но не все и не только. Базовый алгоритм примерно такой. - берем уголок у которого есть свободная область справа и/или снизу. Находим все уголки образующие с ним пр-к не содержащий др уголков. Все это быстрые операции по 2 сортированным контейнерам. Дальше я пытался "расширять" найденный пр-к так и сяк, но это хлопотливо и найденные пр-ки повторяются. Правильно взять "хорошие" уголки. Словами затрудняюсь объяснить, см аттач. Точка A - вроде бы "уголок", но на деле выясняется что нет, "правильный" уголок A1 (хотя он вовсе не уголок пр-ка). Поэтому сначала нужно отбросить ненужные уголки и добавить новые, а потом просто "брать пары" (базовый алгоритм). Дальше - ниче не помню
2
|
||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 31.01.2016, 16:44 | |
|
Покажите часть карты которую рисовали.
0
|
|
|
1 / 1 / 0
Регистрация: 10.02.2010
Сообщений: 36
|
|
| 31.01.2016, 17:04 [ТС] | |
|
окей, спасибо!
Видимо все-таки дальше решение на мне
0
|
|
| 02.02.2016, 11:26 | |
|
Fennec
А почему бы вам не задать числовую матрицу. 0 - клетка свободна. 1 - клетка занята Имея матрицу несложно определить и прямоугольник нужного вам размера, если таковой существует. Все просто. Вы берете в матрице нулевой элемент и начинаете присоединять к нему со всех четырех сторон свободные клетки (строки и столбцы), если таковые имеются в наличии. В конечном счете вы получите 4 индекса (по сути местоположение прямоугольника) Кроме того Вы можете контролировать заполненность исходного прямоугольника, вычисляя количество ненулевых элементов матрицы.
0
|
|
| 02.02.2016, 11:26 | |
|
Определить, пересекаются ли прямоугольники R1 и R2, а также площадь прямоугольника сечения Найти координаты правого верхнего угла минимального прямоугольника, содержащий указанные прямоугольники Найти минимальную площадь прямоугольника, в который можно поместить все заданные прямоугольники Найти координаты левого нижнего и правого верхнего углов минимального прямоугольника, содержащего указанные прямоугольники Окружность внутри прямоугольника Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|