Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
1 / 1 / 0
Регистрация: 11.08.2020
Сообщений: 11

Алгоритм плотного заполнения прямоугольника случайными прямоугольниками

11.08.2020, 02:12. Показов 9448. Ответов 23

Студворк — интернет-сервис помощи студентам
Доброго времени суток, прошу помощи в составлении алгоритма.

Условия таковы:
Есть прямоугольная область с известными размерами, необходимо ее плотно заполнить случайными прямоугольниками(минимальный и максимальный размер задается пользователем), что бы:
1. между прямоугольниками не было промежутков(совсем не было, все вплотную).
2. каждый прямоугольник "знал" своих соседей(прямоугольники с которыми общий хотя бы один пиксель любой из сторон)
3. Вероятность появления прямой линии проходящей сквозь область должна стремиться к нулю.
4. Допускается выход случайных прямоугольников за рамки области.

Сразу скажу, что алгоритм рекурсивной разбивки области на два, а потом каждой части еще на два и т.д. не годится, т.к. в 100% будет прямая линия(противоречие пункту 3). Случайное размещение случайных прямоугольников с дальнейшей проверкой коллизий с существующими прямоугольниками во первых очень не оптимально, особенно при малых минимальных размерах, а во вторых образуются прямоугольники размером меньше допустимого, не всегда, но часто.

Буду признателен если кто-то подскажет возможные варианты красивого решения.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.08.2020, 02:12
Ответы с готовыми решениями:

Нестандартный алгоритм заполнения случайными числами
Есть ли какое-то решение, чтобы заполнить массив случайными числами, но сумма этих чисел в каждой строке равнялась определенному значению n?

Вставка заполнения массива случайными числами
есть код программы и никак не получается вставить рандомное заполнение массива. Пытался вставить рандом перед циклом и массив заполняется...

Функция заполнения матрицы случайными числами
есть функция выделения динамической памяти под массив int** memory(int n, int m){ int** a = new int*; for (int i = 0; i < n;...

23
1 / 1 / 0
Регистрация: 11.08.2020
Сообщений: 11
31.08.2020, 02:01  [ТС]
Студворк — интернет-сервис помощи студентам
Область известного размера нужна для завершения рекурсивного алгоритма, что бы новые векторы развертки прямоугольника вне области не создавались.
0
1 / 1 / 2
Регистрация: 12.07.2013
Сообщений: 146
03.05.2025, 13:05
глобально все равно будут щели и спирали.
Миниатюры
Алгоритм плотного заполнения прямоугольника случайными прямоугольниками  
0
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,820
01.06.2025, 11:03
Цитата Сообщение от Vasilisk8 Посмотреть сообщение
3. Вероятность появления прямой линии проходящей сквозь область должна стремиться к нулю.
Что это? Пример?

Цитата Сообщение от Vasilisk8 Посмотреть сообщение
Случайное размещение случайных прямоугольников с дальнейшей проверкой коллизий с существующими прямоугольниками во первых очень не оптимально
А вы случайный размер берите не в диапазоне {minimum, maximum}, а в диапазоне {max(minimum, minimum_for_this_rectangle), maximum} и тогда ненужные размеры не будут генериться.

Добавлено через 1 минуту
Ой, тема-то старющая.
0
 Аватар для MallSerg
95 / 64 / 14
Регистрация: 16.11.2018
Сообщений: 300
01.06.2025, 13:48
Чем не устраивает заполнение по спирали например по часовой стрелке?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.06.2025, 13:48

Найти наименьшее количество квадратов, необходимых для заполнения прямоугольника
Срочно! Даны натуральные числа а и b, обозначающие стороны некоторого прямо¬угольника. Найти наименьшее количество квадратов,...

Определить наименьшее количество квадратов, необходимых для заполнения прямоугольника
в состав программы должно входить не менее одной подпрограммы, использующей рекурсивный вызов. Входные данные считать из файла input.txt,...

Найти наименьшее количество квадратов, необходимых для заполнения прямоугольника
Рекурсия. Даны натуральные числа а и b, обозначающие стороны некоторого прямоугольника. Найти наименьшее количество квадратов,...

Написать процедуру заполнения массива случайными числами
Всех приветствую и прошу помощи.Занимаюсь Курсовой работой,программу написал,но нужно сделать в ней процедуру,чтобы заполнять массив...

Заполнения поля базы случайными значениями из списка
Здравствуйте, у меня такой вопрос, подскажите пожалуйста как можно заполнить одно из полей БД например " имя " случайными...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru