javascript 判断点在面内,点在圆内

点在多边形内常用的算法就是使用射线法,作为笔记直接上代码:

   /** 
     *  判断一个点是否在多边形内部 
     *  @param points 多边形坐标集合 
     *  @param testPoint 测试点坐标 
     *  返回true为真,false为假 
     *  */  
	    function insidePolygon(points, testPoint){  
	        var x = testPoint[0], y = testPoint[1];  
	        var inside = false;  
	        for (var i = 0, j = points.length - 1; i < points.length; j = i++) {  
	            var xi = points[i][0], yi = points[i][1];  
	            var xj = points[j][0], yj = points[j][1];  
	  
	            var intersect = ((yi > y) != (yj > y))  
	                    && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);  
	            if (intersect) inside = !inside;  
	        }  
	        return inside;  
	    }

点在圆内

   /** 
     *  判断一个点是否在圆的内部 
     *  @param point  测试点坐标 
     *  @param circle 圆心坐标 
     *  @param r 圆半径 
     *  返回true为真,false为假 
     *  */  
    function pointInsideCircle(point, circle, r) {  
        if (r===0) return false  
        var dx = circle[0] - point[0]  
        var dy = circle[1] - point[1]  
        return dx * dx + dy * dy <= r * r  
    }  
参考链接:1. openlayer 实现多边形选择   2. 判断点在多边形内部  3. 射线法的详解 


猜你喜欢

转载自blog.csdn.net/qq_26991807/article/details/80247525