На основании ответа Аарона, который, как я считаю, содержит ошибку:
- Превратите два прямоугольника в две плоскости (просто возьмите три из четырех вершин и постройте из этого плоскость).
- Пересечь две плоскости, чтобы получить бесконечную линию (*).
- Пересечь эту линию с ограничивающими линиями первого прямоугольника.
- Пересечь результат 3 с ограничивающими линиями второго прямоугольника.
Если вы пропустите шаг 4, вы получите ложное пересечение, когда первый прямоугольник пересекает плоскость второго прямоугольника, но не сам прямоугольник. Пример:
rectangle1=[(-1,-1,0),(-1,1,0),(1,1,0),(1,-1,0)]
rectangle2=[(0,50,50),(0,50,40),(0,40,40),(0,40,50)]
Plane1 - это z = 0, plane2 - это x = 0, их пересечение - это ось y, которая пересекает прямоугольник 1 в 1 и -1. Однако прямоугольники не пересекаются.
(*) Если плоскости перекрываются, пересечение прямоугольников все еще может быть линией, но это довольно неприятный случай.