Shapely пересечение: параллельные плоскости - PullRequest
3 голосов
/ 27 февраля 2012

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

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

>>> 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 говорит они равны и пересекаются.

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

1 Ответ

5 голосов
/ 28 февраля 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...