我正在努力确定两个3D物体(三角形面)之间的关系(边界/内部交叉点),偶然发现shapely,我有兴趣使用它而不是实现我自己的点/段/ ray /三角交叉函数。
但是,我遇到了以下问题:
>>> 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),但是形状正在说他们是平等的,相交的。
是否有一些魔法我缺少在3维中做出身材健康的思考?我一直在谷歌搜索,但到目前为止我看到的每一个例子都只是两个维度。
答案 0 :(得分:5)
根据Shapely manual,它指出几何对象的z坐标平面如下:
构造实例时可以使用第三个z坐标值,但对几何分析没有影响。所有操作均在x-y平面中执行。
如果您的计算需要z坐标平面,那么Shapely可能不适合您。当然,您可以尝试将多边形的点作为列表并将其与其他多边形进行比较。但是,如果您想要一个可以处理z维度的Python几何库,您可以找到一些here。