Re: testing if a point is inside a polygon
- To: mathgroup at smc.vnet.net
- Subject: [mg96369] Re: testing if a point is inside a polygon
- From: "Sjoerd C. de Vries" <sjoerd.c.devries at gmail.com>
- Date: Thu, 12 Feb 2009 06:38:41 -0500 (EST)
- References: <gmp0mt$btn$1@smc.vnet.net>
Since timing is often important for functions like this one, I've compared the various algorithms posted here using David's two tests. The results are below: { {"Daniel", 0.828, 1.219}, {"Daniel/Sjoerd", 0.688, 1.078}, {"Sedgewick/Sjoerd", 0.688, 0.954}, {"David1", 41.766, 81.89}, {"David2", 1.578, 2.531}, {"Godkin/Frank", 1.485, 2.359} } In the "Daniel/Sjoerd" method I have used Daniel's code and taken out every intermediate step. This saves an additional 20%. The code is now completely gibberish, but it still works ;-) PointInsidePolygonQ[pt_, poly_] := Module[{}, Equal @@ Sign@MapThread[ Dot, {pt - # & /@ poly, {{0, 1}, {-1, 0}}.# & /@ (Subtract @@ # & /@ Partition[Append[poly, poly[[1]]], 2, 1])}] ] Cheers --Sjoerd On Feb 9, 12:31 pm, Mitch Murphy <mi... at lemma.ca> wrote: > is there a way to test whether a point is inside a polygon? ie. > > PointInsidePolygonQ[point_,polygon_] -> True or False > > i'm trying to do something like ... > > ListContourPlot[table,RegionFunction->CountryData["Canada= ","Polygon"]] > > to create what would be called a "clipping mask" in photoshop. > > cheers, > Mitch
- Follow-Ups:
- Re: testing if a point is inside a polygon
- From: "Sjoerd C. de Vries" <sjoerd.c.devries@gmail.com>
- Re: Re: testing if a point is inside a polygon
- From: Andrzej Kozlowski <akoz@mimuw.edu.pl>
- Re: testing if a point is inside a polygon