Мне нужен алгоритм, который будет принимать n прямоугольников любых размеров и вычисляет прямоугольник, достаточно большой, чтобы соответствовать всем этим, сводя к минимуму его площадь, чтобы потерянная площадь была минимальной, а также возвращала положение всех меньших прямоугольников внутри.
Конкретная задача, для которой мне нужно это реализовать, заключается в компиляторе листа спрайтов, который будет принимать отдельные PNG файлы и создавать большой PNG со всеми изображениями в нем, поэтому отдельные кадры могут быть смешаны с этой поверхности во время выполнения.
Приятно иметь особенность в том, что она нацелена на конкретное заданное отношение ширины/высоты, но это не обязательно.
Я бы предпочел простой, общий код, который я могу переносить на другой язык.