擅长:python、mysql、java
<p>您可以使用来自<code>matplotlib.path</code>的<code>contains_point</code>函数,并具有较小的负半径和正半径(小技巧)。像这样:</p>
<pre><code>import matplotlib.path as mplPath
import numpy as np
crd = np.array([[0,0], [0,1], [1,1], [1,0]])# poly
bbPath = mplPath.Path(crd)
pnts = [[0.0, 0.0],[1,1],[0.0,0.5],[0.5,0.0]] # points on edges
r = 0.001 # accuracy
isIn = [ bbPath.contains_point(pnt,radius=r) or bbPath.contains_point(pnt,radius=-r) for pnt in pnts]
</code></pre>
<p>结果是</p>
^{pr2}$
<p>默认情况下(或<code>r=0</code>)不包括边界上的所有点,结果是</p>
<pre><code>[False, False, False, False]
</code></pre>