3

我正在确定两个 3D 对象(三角形面)之间的关系(边界/内部交叉点),并偶然发现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

我似乎遇到的问题是这两个多边形在它们的 2D 正交投影(相同的三角形)中是相等的,但是在不同的平面上(一个在 Z = 1,另一个在 Z = 0),但 Shapely 说他们是相等和相交。

是否有一些我缺少的魔法可以在 3 维中进行匀称的思考?我一直在谷歌搜索,但到目前为止我看到的每个例子都只是二维的。

4

1 回答 1

6

根据Shapely 手册,它指出几何对象的 z 坐标平面如下:

构造实例时可以使用第三个 z 坐标值,但对几何分析没有影响。所有操作都在 xy 平面上进行。

如果您的计算需要 z 坐标平面,那么 Shapely 可能不适合您。当然,您可以尝试将多边形的点作为列表并将其与其他多边形进行比较。但是,如果你想要一个可以处理 z 维度的 Python 几何库,你可以在这里找到一些。

于 2012-02-27T20:40:56.467 回答