JavaScript implementation of winding number algorithm to determine whether a point is inside a polygon
//JavaScript implementation of winding number algorithm to determine whether a point is inside a polygon | |
//Based on C++ implementation of wn_PnPoly() published on http://geomalgorithms.com/a03-_inclusion.html | |
function pointInPolygon(point, vs) { | |
var x = parseFloat(point[0]), y = parseFloat(point[1]); | |
var wn = 0; | |
for (var i = 0, j = vs.length - 1; i < vs.length; j = i++) { | |
var xi = parseFloat(vs[i][0]), yi = parseFloat(vs[i][1]); | |
var xj = parseFloat(vs[j][0]), yj = parseFloat(vs[j][1]); | |
if (yj <= y) { | |
if (yi > y) { | |
if (isLeft([xj, yj], [xi, yi], [x,y]) > 0) { | |
wn++; | |
} | |
} | |
} else { | |
if (yi <= y) { | |
if (isLeft([xj, yj], [xi, yi], [x, y]) < 0) { | |
wn--; | |
} | |
} | |
} | |
} | |
return wn != 0; | |
}; | |
function isLeft(P0, P1, P2) | |
{ | |
var res = ( (P1[0] - P0[0]) * (P2[1] - P0[1]) | |
- (P2[0] - P0[0]) * (P1[1] - P0[1]) ); | |
return res; | |
} |
This comment has been minimized.
This comment has been minimized.
Can you tell me how to use it please!? |
This comment has been minimized.
This comment has been minimized.
You are awesome! I needed this magic :) |
This comment has been minimized.
This comment has been minimized.
Take this example in which we want to test if two points
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
You are awesome :)