JS 射线法 判断点是否在多边形内部

function pointInPolygon(point, polygon) {
  var x = point[0];
  var y = point[1];
  var inside = false;
  for (var i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
    var xi = polygon[i][0];
    var yi = polygon[i][1];
    var xj = polygon[j][0];
    var yj = polygon[j][1];
    var intersect = ((yi > y) != (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
    if (intersect) inside = !inside;
  }
  return inside;
}

// 使用示例
var pointA = [1, 1];
var polygonB = [[0, 0], [0, 2], [2, 2], [2, 0]];
var result = pointInPolygon(pointA, polygonB);
console.log(result); // 输出 true 或 false

 

 

posted @ 2024-06-12 16:31  西瓜霜  阅读(1)  评论(0编辑  收藏  举报