Алгоритм распределения объектов в блоке (например, InDesign, Illustrator, Draw!)

У меня есть набор прямоугольников с соответствующими им позициями и большой прямоугольник, который служит "ограничительной рамкой" для этих прямоугольников.

Я хотел бы знать об алгоритме, который "равномерно распределяет свободное пространство" по прямоугольникам. Некоторые из вас могут быть знакомы с опцией Распределить интервалы в Adobe InDesign и аналогичных приложениях, ориентированных на макеты. Это было бы то, что я ищу.

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

Наконец, алгоритм не обязательно должен быть точно таким же, как в InDesign: практически любой алгоритм, который "распределяет" объекты внутри области, будет работать нормально. На самом деле, поскольку я в основном стремлюсь к визуальной привлекательности, чем больше предложений, тем лучше. =D

2 ответа

Вы можете посмотреть на алгоритмы макета графа. Алгоритм на основе силы может работать для вас.

Я думаю, что должен быть способ сформулировать это как проблему линейного программирования. максимизируйте общую площадь прямоугольников, но убедитесь, что они никогда не пересекаются как ограничения. Я не могу думать о чем-то нелинейном здесь, поэтому должно работать. Единственное, в чем я не уверен, так это в том, возможно ли создать список ограничений, чтобы предотвратить наложение прямоугольников. Я не могу доказать себе, что это возможно или не возможно... это единственное, о чем я могу думать. Надеюсь, поможет.

Другие вопросы по тегам