vrijdag 30 september 2016

Point In Polygon Algorithme

Ik heb lang gezocht naar een GOED point in polygon algorithme.
In mijn geval betekent GOED, dat je geen rekening hoeft te houden met winding-rules, dat het snel is en makkelijk in gebruik voor de developer.

Ook moet het ALLEEN point in polygon doen en geen grote berekeningen, dat doe ik daarna wel op eigen houtje.

Nou, daar is hij dan:
var point={x:10,y:10};
var plgn=[{x:5,y:5},{x:55,y:5},{x:55,y:55},{x:5,y:55}];
console.log(PointInPolygon(point,plgn));

function PointInPolygon(p,pgn)
{
 var i,j,c=false;
 for(i=0,j=pgn.length-1;ip.y)!=(pgn[j].y>p.y))&&
  (p.x<(pgn[j].x-pgn[i].x)*(p.y-pgn[i].y)/(pgn[j].y-pgn[i].y)+pgn[i].x))
  {
   c=!c;
  }
 }
 return c;
};

Test het hier: https://jsfiddle.net/uvr9wt5j/