Алгоритм
Рассмотрим этот макет:
+-------------+ | | | | | +--+ | | |##| | | |##| | | +--+------+ | |######| | |######| +------+------+
Черная часть - занимаемое пространство. Теперь мне нужен алгоритм, который возвращает наибольшие оставшиеся прямоугольные пространства. (Упорядочено сверху вниз, слева направо.)
Вот так:
1 2 3 4 +-------------+ +---- -------+ |#############| |### ######| |#############| |### ######| | +--+ | |###+ +######| |###| |######| |###| |######| |###+ +------| | +--+ |### |######| |### |######| +---- +------+
Ввод
Ширина и высота вмещающего контейнера. (Страница в моем коде.)
Список уже занятых прямоугольников. Они могут быть в любой форме, которая вам нравится. Например. (x, y, width, height) или (x1, y1, x2, y2)
Я имею дело с поплавками, поэтому было бы предпочтительным математическое решение.