1 | module.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 | };
|