В основном мне нужно распределить различные прямоугольники в большем прямоугольнике случайным образом. Итак:
- Хотя места достаточно, прямоугольники не перекрываются или перекрываются совсем немного.
- Когда не хватает места, прямоугольники перекрываются, но при этом пытаются перекрывать друг друга возможно (поэтому все они складываются в одном месте).
I не требуется классическая идеальная упаковка сверху-вниз-справа-вниз. Дело в том, что мне нужен случайный спред.
Сначала я попытался перебором, выбрав случайным образом позицию для прямоугольника, а затем сравнил столкновение со всеми уже размещенными прямоугольниками. Очевидно, что это не идеал.
Затем я попытался назначить «точки» пространству и разместить прямоугольники рядом с этими точками. Чем ближе был прямоугольник к точке, тем большее «давление» он оказывал на него. И это давление складывается для каждого прямоугольника, который был помещен. Алгоритм пытался расположить прямоугольники вблизи точек с минимальным давлением. К сожалению, это привело к тому, что прямоугольники сложились рядом с верхним левым и нижним правым углами.
(Если вы закроете это тоже, я не даже знаю, какая дополнительная информация вам нужна).