>From the matplotlib page, you can reach:
http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html

and just translates the function:

def inside_polygon(p, vertices):
    vx,vy = vertices[:,0], vertices[:,1]
    x,y = p
    c = 0
    j = len(vertices)-1
    for i in xrange(len(vertices)):
        if( ((vy[i] > y) != (vy[j] > y)) and (x < (vx[j]-vx[i]) * (y-vy[i]) / 
(vy[j]-vy[i]) + vx[i]) ):
            c = 1-c
        j = i
    return c

Of course this would be slower than the corresponding C implementation.

Nicolas


On May 9, 2013, at 21:55 , algotr8der wrote:

> I tried to execute the following code:
> 
> http://matplotlib.org/faq/howto_faq.html#test-whether-a-point-is-inside-a-polygon
> 
> However I get errors I describe here:
> 
> http://stackoverflow.com/questions/16452509/matplotlib-pnpoly-example-results-in-error
> 
>>>> import numpy as np
>>>> import matplotlib.nxutils as nx
>>>> verts = np.array([ [0,0], [0, 1], [1, 1], [1,0]], float)
>>>> nx.pnpoly(0.5, 0.5, verts)
> 
> Traceback (most recent call last):
>  File "<console>", line 1, in <module>
>  File "C:\Python27\lib\site-packages\matplotlib\nxutils.py", line 26, in
> pnpoly
>    return p.contains_point(x, y)
>  File "C:\Python27\lib\site-packages\matplotlib\path.py", line 289, in
> contains_point
>    transform = transform.frozen()
> AttributeError: 'float' object has no attribute 'frozen'
> 
>>>> nx.pnpoly(0.5, 1.5, verts)
> 
> Traceback (most recent call last):
>  File "<console>", line 1, in <module>
>  File "C:\Python27\lib\site-packages\matplotlib\nxutils.py", line 26, in
> pnpoly
>    return p.contains_point(x, y)
>  File "C:\Python27\lib\site-packages\matplotlib\path.py", line 289, in
> contains_point
>    transform = transform.frozen()
> AttributeError: 'float' object has no attribute 'frozen'
> 
> Apparently, nxutils is deprecated, which to me means it should still work
> but a user on stackoverflow pointed out that there may be some code rot.
> That said, the documentation on matplotlib.path.Path.contains_point is weak
> (see below). Does anyone have an example of how I can do the exact same
> thing in the code in the howto_faq but using the suggested function
> (contains_point)?
> 
> http://matplotlib.org/1.2.1/api/path_api.html?highlight=contains_point#matplotlib.path.Path.contains_point
> 
> contains_point(point, transform=None, radius=0.0)
> 
>    Returns True if the path contains the given point.
>    If transform is not None, the path will be transformed before performing
> the test.
>    radius allows the path to be made slightly larger or smaller.
> 
> contains_points(points, transform=None, radius=0.0)
> 
>    Returns a bool array which is True if the path contains the
> corresponding point.
>    If transform is not None, the path will be transformed before performing
> the test.
>    radius allows the path to be made slightly larger or smaller.
> 
> 
> 
> 
> 
> 
> --
> View this message in context: 
> http://matplotlib.1069221.n5.nabble.com/re-matplotlib-pnpoly-example-results-in-error-tp41028.html
> Sent from the matplotlib - users mailing list archive at Nabble.com.
> 
> ------------------------------------------------------------------------------
> Learn Graph Databases - Download FREE O'Reilly Book
> "Graph Databases" is the definitive new guide to graph databases and 
> their applications. This 200-page book is written by three acclaimed 
> leaders in the field. The early access version is available now. 
> Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users


------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and 
their applications. This 200-page book is written by three acclaimed 
leaders in the field. The early access version is available now. 
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to