射线法判断点在多边形内,这个在判断什么?

算法:

let inside = false; // flag
let len = poly.length;
let x1, y1, x2, y2;
for (let i = 0, j = len - 2; i < len; j = i, i += 2) {
    x1 = poly[i];
    y1 = poly[i + 1];
    x2 = poly[j];
    y2 = poly[j + 1];
    if (y < y2) { 
        if (y1 <= y) { 
            if ((y - y1) * (x2 - x1) > (x - x1) * (y2 - y1)) inside = (!inside);
        }
    } else if (y < y1) {
        if ((y - y1) * (x2 - x1) < (x - x1) * (y2 - y1)) inside = (!inside);
        }
    }
}

poly的结构:[x1, y1, x2, y2, x3, y3, ...]

这个(y - y1) (x2 - x1) > (x - x1) (y2 - y1)到底在判断什么?

阅读 1.9k
2 个回答

变形一下(y-y1)/(x-x1) > (y2-y1)/(x2-x1)

你看像不像在比较斜率

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题