如何在Python中判断一个多边形是否在另一个多边形内?

10

我需要定义一个Python函数,可以检测一个凸多边形(多边形A)是否在另一个多边形(多边形B)内。

每个多边形的顶点已给出。

只使用基本库和numpy。

对于人类来说,通过肉眼进行判断很容易。但我不知道如何用Python描述这种方法。我尝试查看一些库的源代码(如Shapely),但无法理解其工作原理。

def isinside(polya, polyb):
     #Polya: [(x1,y1), (x2,y2), (x3,y3),...]
     #Polyb: [(x1,y1), (x2,y2), (x3,y3),...]
    #if polya inside polyb
     return True
     # else 
     return False

能否有人给一些建议或展示一些代码?谢谢!


请尝试查看此处:https://dev59.com/VGLVa4cB1Zd3GeqPvl6k - Aelius
1个回答

18
你可以使用shapely库来做这件事。它会像这样进行
from shapely.geometry import Polygon

polya = Polygon([(0, 0), (0, 1), (1, 1), (1, 0)]) 
polyb = Polygon([(0.5, 0.5), (0.5, 0.8), (0.8, 0.8), (0.8, 0.5)]) 

polya.contains(polyb)
# True

这个模块在大多数几何相关操作上都提供了更多内容,因此请参阅他们的用户手册以获取更多示例和详细说明。(链接)


1
抱歉先生,我想定义自己的函数,只能使用基本的 Python 库和 NumPy。 - user8400129

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接