匀称相交:平行平面 [英] Shapely intersection: parallel planes
问题描述
我正在确定两个3D对象(三角形面)之间的关系(边界/内部交点),偶然发现
I'm working on determining relationships (boundary/interior intersections) between two 3D objects (triangular faces) and stumbled on Shapely, which I am interested in using instead of implementing my own point/segment/ray/triangle intersection functions.
但是,我遇到了以下问题:
However, I'm running into the following problem:
>>> 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在说它们相等且相交.
The problem I seem to be running into is that the two polygons are equal in their 2D orthogonal projections (same triangle), but in different planes (one's at Z=1, other at Z=0), but Shapely is saying they're equal and intersect.
是否缺少一些使我在3个维度上进行匀称思考的魔力?我一直在搜索,但是到目前为止,我看到的每个示例都只涉及二维.
Is there some magic I'm missing to make shapely think in 3 dimensions? I've been googling, but every example I've seen so far is only in two dimensions.
推荐答案
According to the Shapely manual, it states that the following for the z coordinate plane for geometric objects:
构造实例时可以使用第三个z坐标值,但对几何分析没有影响.所有操作都在x-y平面上执行.
A third z coordinate value may be used when constructing instances, but has no effect on geometric analysis. All operations are performed in the x-y plane.
如果您的计算需要z坐标平面,则Shapely可能不适合您.当然,您可以尝试获取多边形的点作为列表并将其与其他多边形进行比较.但是,如果您想拥有一个可以处理z维度的Python几何库,则可以找到一些这里.
If your calculations require the z coordinate plane, then Shapely might not be for you. Of course, you could try to get the points of the polygon as a list and compare it to other polygons. However, if you want to have a Python geometric library that can handle the z dimension, you can find some here.
这篇关于匀称相交:平行平面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!