Python Shapely пересечение: параллельные плоскости

Я работаю над определением отношений (пересечения границ / внутренних пересечений) между двумя 3D-объектами (треугольными гранями) и наткнулся на стройную , которую меня интересует, вместо того, чтобы реализовать собственные функции пересечения точек / сегментов / лучей / треугольников.

Однако я столкнулся с следующей проблемой:

>>> from shapely.geometry import Polygon >>> poly = Polygon([(0,1,1),(1,-1,1),(-1,-1,1)]) >>> poly2 = Polygon([(0,1,0),(1,-1,0),(-1,-1,0)]) >>> poly.intersects(poly2) True >>> poly.equals(poly2) True 

Проблема, с которой я, похоже, сталкиваюсь, состоит в том, что два многоугольника равны в их двумерных ортогональных проекциях (один и тот же треугольник), но в разных плоскостях (один в Z = 1, другой при Z = 0), но, по-видимому, они говорят, что они равны и пересекаются.

Есть ли какая-то магия, которую мне не хватает, чтобы сделать изящную мысль в трех измерениях? Я занимаюсь поиском в Интернете, но каждый пример, который я видел до сих пор, представлен только в двух измерениях.

Согласно руководству Shapely , он утверждает, что для координатной плоскости z для геометрических объектов следующее:

Третье значение координаты z может использоваться при построении экземпляров, но не влияет на геометрический анализ. Все операции выполняются в плоскости xy.

Если ваши вычисления требуют координатной плоскости z, то Shapely может и не быть для вас. Конечно, вы можете попытаться получить точки полигона в виде списка и сравнить его с другими полигонами. Однако, если вы хотите иметь геометрическую библиотеку Python, которая может обрабатывать размер z, вы можете найти ее здесь .