Я ищу простой способ вычислить разницу между двумя прямоугольниками. Я имею в виду все точки, которые принадлежат одному из прямоугольников, но не обоим (так что это похоже на XOR).
В этом случае прямоугольники выровнены по оси, поэтому будут только прямые углы. Я считаю, что область различия может быть выражена в 0-4 прямоугольниках (0, если оба прямоугольника одинаковые, 1, если отличается только один край, 4 в общем случае), и я хотел бы получить область различия в виде списка прямоугольников.
Вы также можете думать об этом как об областях экрана, которые должны обновляться при перемещении / изменении размера сплошного прямоугольника.
Примеры: Удвоение ширины прямоугольника «a» - я хочу добавить область (R).
+----+----+
| a | R |
| | |
+----+----+
Пересекающиеся прямоугольники (a и b) - мне нужна область, заданная T, L, R и B в прямоугольниках (возможно другое разбиение), но исключая X:
+------------+ a
| T |
|·····+------+-----+ b
| L | X | R |
| | | |
+-----+------+·····|
| B |
+------------+
Я бы предпочел питона решение / библиотека, но будет полезен любой надежный алгоритм.