Я ищу звуковой алгоритм, который бы случайно помещал заданное число прямоугольников того же размера в большой прямоугольник (холст).случайное размещение прямоугольников без перекрытий
Я вижу два способа сделать это:
создать пустой массив, который будет содержать прямоугольники уже размещенные на холсте. начните с пустого холста. в петле, выберите случайную позицию для размещения нового прямоугольника. проверьте, имеет ли массив прямоугольник, который перекрывается с новым прямоугольником. если это не так, поместите новый прямоугольник в массив и повторите цикл. в противном случае выберите новую позицию и снова запустите проверку. и так далее. Я думаю, что это никогда не закончится (теоретически). Мне это не нравится.
используйте сетку и помещайте прямоугольники в ячейки случайным образом. Это может по-прежнему выглядеть как размещение сетки. Мне это тоже не нравится.
любые лучшие способы сделать это? «лучше» означает более эффективный или более визуально «случайный», чем сетка. лучше в любом отношении.
Возможный дубликат (это один имеет дело с неоднородными прямоугольниками): http://stackoverflow.com/questions/716558/place-random- неперекрывающиеся прямоугольники-на-панели – nodakai
обсуждаемый вопрос обсуждает оптимальную 2D-упаковку – akonsu
Если прямоугольники не повернуты (так параллельны оси X и Y), вы можете использовать квадроциклы, чтобы найти перекрытия с другими прямоугольники быстрее. – Patrick