Алгоритм для подбора случайных многоугольников в заданном прямоугольнике
У меня есть набор из 20 (пример) 2D полигонов, начиная от треугольников, 4-сторонних нерегулярных, 5-сторонних и 6-сторонних полигонов. Некоторые из них почти идеальные прямоугольники, некоторые из них совершенно неправильной формы. Все они будут иметь от 3 до 6 сторон, максимум.
У меня также есть некоторый прямоугольник, скажем, это 16 на 9, так как это типичное соотношение сторон экрана.
Моя цель - найти способ ломать голову над полигонами внутри прямоугольника, тратя минимум места.
Я могу вращать их, масштабировать их вверх или вниз, перемещать их в любом месте внутри прямоугольника. Единственное правило - делать это, сохраняя их визуально приятными (не хочу масштабировать их слишком большими или слишком маленькими, не хочу поворачивать их более чем на +- 45 градусов, если это возможно).
Как и просили, вот пример изображения:
Слева мы видим приемлемый результат, а справа - вход.
Я думал о том, чтобы научить ИИ делать эту работу, но есть ли какой-нибудь алгоритм, который может помочь с этим?
Имейте в виду, что после того, как я поместил несколько полигонов в прямоугольник, процедурно я буду добавлять к нему больше по запросу.
1 ответ
Если вы хотите, чтобы ИИ решил ее, вам нужно установить функцию полезности для оптимизации.
Это можно определить с точки зрения:
Смежная используемая область (например: насколько хорошо части соединяются)
Площадь кусков внутри
Площадь кусков снаружи