Я пишу код для забавы, который помещает прямоугольники в холст.
Каждый прямоугольник не сталкивается с другими и представлен следующим образом:
rect = [x,y,w,h]
где, как вы уже догадались, x и y - координаты x, y в плоскости нижнего левого угла прямоугольника, а w и h - ширина и высота прямоугольника.
Я могу легко проверять столкновения, поскольку все они под прямым углом (без паразитных плавающих прямоугольников ..)
Теперь, мой вопрос, имея такой список прямоугольников, какой алгоритм я могу использовать для определения других суб прямоугольников, которые они содержат.
Позвольте мне попытаться объяснить на примере.
допустим, у меня есть:
rectangleList = [[1,0,4,2],[5,0,2,1]]
У меня есть два прямоугольника, которые можно представить так:
y . . . . . . . .
. . . . . . . .
. 1 1 1 1 . . .
0 . 1 1 1 1 2 2 .
0 x
Как я могу определить, что могу уместить прямоугольник шириной 6 и высотой 1 поверх этих двух? (соединяя прямоугольники 1 и 2) как сверху 1 1 1 1 2 2
Полагаю, я мог бы создать и автоматизировать эти тесты для каждой позиции, чтобы увидеть, переполняется ли прямоугольник или что-то в этом роде, но вряд ли это кажется эффективным.
Я предполагаю, что дано третье измерение прямоугольников, как правильно соединить два других измерения, чтобы посмотреть, смогут ли они вместить этот новый прямоугольник.