flat.js 586 B

123456789101112131415
  1. module.exports = function pointInPolygonFlat (point, vs, start, end) {
  2. var x = point[0], y = point[1];
  3. var inside = false;
  4. if (start === undefined) start = 0;
  5. if (end === undefined) end = vs.length;
  6. var len = (end-start)/2;
  7. for (var i = 0, j = len - 1; i < len; j = i++) {
  8. var xi = vs[start+i*2+0], yi = vs[start+i*2+1];
  9. var xj = vs[start+j*2+0], yj = vs[start+j*2+1];
  10. var intersect = ((yi > y) !== (yj > y))
  11. && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
  12. if (intersect) inside = !inside;
  13. }
  14. return inside;
  15. };