查找点是否包含在两条曲线之间

Finding if points are contained between two curves

我遇到了一些问题,但在任何地方都找不到令人满意的答案。

我正在寻找包含在两条曲线之间的点,事实上这两条曲线都是参数化的,并且没有相同数量的 x 元素。

matplotlib 函数 fill 完美地用多边形填充曲线之间的区域。我偶然发现了来自 matplotlib_pathcontains_point 函数,但我找不到一种方法来获取 fill 输出的 matplotlib.patches.Polygon 的属性来使用它。

有没有办法使用它,或者我是否应该采取另一种可能的方法,直接执行 fill 函数获取多边形的操作(但如何)?

说明问题的情节:

对于任何感兴趣的人,我设法解决了我的问题。 使用 shapelydescartes(一个简单的 pip 安装就可以了),

from shapely.geometry.polygon import Polygon
from shapely.geometry import Point
from descartes import PolygonPatch

您可以使用 Polygon 函数创建所需的多边形,方法是为其提供一个附加了两条曲线的 x 和 y 的元组。您可以使用 shapely 中的 PolygonPatch 函数创建多边形面片,并使用以下方法绘制它:

ax.add_patch(name_of_your_patch)

要检查点是否包含在多边形内,您可以使用 shapely 创建一个 Point 对象和函数:

name_of_your_polygon.contains(point) 

将 return 一个布尔值。

这是一个示例脚本(记得导入 shapelydescartes):

main=rand(4,2)
main=tuple(map(tuple,main))    #Transform into tuple
poly=Polygon(main)             #Create filling Polygon
poly_patch=PolygonPatch(poly)  #Create Polygon Patch

fig = plt.figure()
ax = fig.add_subplot(111)

ax.add_patch(poly_patch)       #Draws the patch
point=Point(0.5,0.5)
print(poly.contains(point))
ax.scatter(0.5,0.5,s=10000,color='gold',marker='+')

在我下面绘制的案例中,poly.contains(point) 函数 returns True.

Example: