|
1 / 1 / 0
Регистрация: 10.02.2010
Сообщений: 36
|
|
Разместить прямоугольники внутри прямоугольника29.01.2016, 17:43. Показов 25266. Ответов 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, а также площадь прямоугольника сечения Найти координаты правого верхнего угла минимального прямоугольника, содержащий указанные прямоугольники Найти минимальную площадь прямоугольника, в который можно поместить все заданные прямоугольники Найти координаты левого нижнего и правого верхнего углов минимального прямоугольника, содержащего указанные прямоугольники Окружность внутри прямоугольника Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|