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

У меня есть набор из 20 (пример) 2D полигонов, начиная от треугольников, 4-сторонних нерегулярных, 5-сторонних и 6-сторонних полигонов. Некоторые из них почти идеальные прямоугольники, некоторые из них совершенно неправильной формы. Все они будут иметь от 3 до 6 сторон, максимум.

У меня также есть некоторый прямоугольник, скажем, это 16 на 9, так как это типичное соотношение сторон экрана.

Моя цель - найти способ ломать голову над полигонами внутри прямоугольника, тратя минимум места.

Я могу вращать их, масштабировать их вверх или вниз, перемещать их в любом месте внутри прямоугольника. Единственное правило - делать это, сохраняя их визуально приятными (не хочу масштабировать их слишком большими или слишком маленькими, не хочу поворачивать их более чем на +- 45 градусов, если это возможно).

Как и просили, вот пример изображения:

введите описание изображения здесь

Слева мы видим приемлемый результат, а справа - вход.

Я думал о том, чтобы научить ИИ делать эту работу, но есть ли какой-нибудь алгоритм, который может помочь с этим?
Имейте в виду, что после того, как я поместил несколько полигонов в прямоугольник, процедурно я буду добавлять к нему больше по запросу.

1 ответ

Если вы хотите, чтобы ИИ решил ее, вам нужно установить функцию полезности для оптимизации.

Это можно определить с точки зрения:

  • Смежная используемая область (например: насколько хорошо части соединяются)

  • Площадь кусков внутри

  • Площадь кусков снаружи

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