I've been converting my code that used nxutils.points_inside_poly (for checking 
if a point is inside a polygon) to instead use path.contains_points (since the 
former is now deprecated).
After reading the docs about creating Path objects, I thought I understood that 
I needed to supply the first vertex of the polygon twice - at the start of the 
array and at the end of the array, and that I needed to set the 'closed' 
argument to True in order to get the Path for a polygon.
But when I created Paths like that, I always seemed to get an array of all 
False's from path.contains_points.

Looking at the source code for the nxutils.points_inside_poly wrapper, I see 
that it creates Path's by just passing the polygon vertices (without the extra 
vertex at the end) and without the 'closed' flag. And the Path's created this 
way work correctly with path.contains_points.
Here's example code:

verts1 = [(0,0), (0,1), (1,1), (1,0)]
verts2 = [(0,0), (0,1), (1,1), (1,0), (0,0)]

path1 = Path(verts1)
path2 = Path(verts2, closed=True)

>>> path1
Path([[ 0.  0.]
 [ 0.  1.]
 [ 1.  1.]
 [ 1.  0.]], None)

>>> path2
Path([[ 0.  0.]
 [ 0.  1.]
 [ 1.  1.]
 [ 1.  0.]
 [ 0.  0.]], [ 1  2  2  2 79])

points = [(0.5,0.5), (1.5,0.5)]

>>> path1.contains_points(points)
array([ True, False], dtype=bool)

>>> path2.contains_points(points)
array([False, False], dtype=bool)

The problem seems to occur when some of the points are inside and some are not.
If all of the points are inside, it works fine:

points = [(0.5,0.5), (0.51,0.51)]

>>> path2.contains_points(points)
array([ True,  True], dtype=bool)


--
Cameron Hayne
cameron.ha...@gmail.com





------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to