zoukankan      html  css  js  c++  java
  • js 判断一个点是否在一个多边形之内

    出处: https://github.com/substack/point-in-polygon/blob/master/index.js

    github: https://github.com/substack/point-in-polygon

    module.exports = function (point, vs) {
        // ray-casting algorithm based on
        // http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html
        
        var x = point[0], y = point[1];
        
        var inside = false;
        for (var i = 0, j = vs.length - 1; i < vs.length; j = i++) {
            var xi = vs[i][0], yi = vs[i][1];
            var xj = vs[j][0], yj = vs[j][1];
            
            var intersect = ((yi > y) != (yj > y))
                && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
            if (intersect) inside = !inside;
        }
        
        return inside;
    };
    //example:
    var
    inside = require('point-in-polygon'); var polygon = [ [ 1, 1 ], [ 1, 2 ], [ 2, 2 ], [ 2, 1 ] ]; //左上, 右上, 右下, 左下 console.dir([ inside([ 1.5, 1.5 ], polygon), inside([ 4.9, 1.2 ], polygon), inside([ 1.8, 1.1 ], polygon) ]);

    判断一个点是否在一个圆这内:

    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
    }
  • 相关阅读:
    为知笔记使用备注
    困惑激发的正能量
    再多坚持一会,相信自己就好!
    看博文《前路漫漫,何为终点?》的一点小感想
    前端的杂谈
    JS 客户端检测
    DOM
    JavaScript & XML
    我所认识的XPath
    Javascript 面向对象编程
  • 原文地址:https://www.cnblogs.com/zlog/p/6042270.html
Copyright © 2011-2022 走看看