UNPKG

552 BJavaScriptView Raw
1module.exports = function (point, vs) {
2 // ray-casting algorithm based on
3 // https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html
4
5 var x = point[0], y = point[1];
6
7 var inside = false;
8 for (var i = 0, j = vs.length - 1; i < vs.length; j = i++) {
9 var xi = vs[i][0], yi = vs[i][1];
10 var xj = vs[j][0], yj = vs[j][1];
11
12 var intersect = ((yi > y) != (yj > y))
13 && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
14 if (intersect) inside = !inside;
15 }
16
17 return inside;
18};