您的位置:首页 > Web前端 > JavaScript

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

2018-01-20 18:07 274 查看
//判断点是否在多边形内部(边上显示为在外部)

function isInPolygon(point,points){

    var n = points.length;

    var nCross = 0; 

    for (let i = 0; i < n; i++) {  

        var p1 = points[i];  

        var p2 = points[(i + 1) % n];  

        // 求解 y=p.y 与 p1 p2 的交点  

        // p1p2 与 y=p0.y平行  

        if (p1.y == p2.y)  

            continue;  

        // 交点在p1p2延长线上  

        if (point.y < Math.min(p1.y, p2.y))  

            continue;  

        // 交点在p1p2延长线上  

        if (point.y >= Math.max(p1.y, p2.y))  

            continue;  

        // 求交点的 X 坐标  

        var x = (point.y - p1.y) * (p2.x - p1.x) / (p2.y - p1.y) + p1.x;  

        // 只统计单边交点  

        if (x > point.x)  

            nCross++;  

    }  

    return (nCross % 2 == 1);  

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  js 多边形