js 判斷一個點是否在一個多邊形之內

來源:互聯網
上載者:User

標籤:length   style   cti   point   htm   bst   git   code   www   

出處: 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 判斷一個點是否在一個多邊形之內

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.