javascript - 如何在 JavaScript 中找到凹不规则多边形的质心?

标签 javascript polygon

给定 JavaScript 中的顶点,如何找到凹不规则多边形的质心?

我想将一组 x,y 点传递给 JavaScript 函数并获得一个 x,y 点。

var my_points = [{x:3,y:1},{x:5,y:8},{x:2,y:9}];

function get_polygon_centroid(points){
    // answer
}

var my_centroid = get_polygon_centroid(my_points);
my_points变量只应该表示要给出的点的格式,不代表要给出的具体点数 .

质心 返回的将是多边形内某处的一个点。

最终目标是在 Google Maps V3 应用程序中的多边形质心处添加一个标记。

最佳答案

对于 2D 表面的质心(这可能是您需要的),
最好从 a little bit of maths 开始.

我在这里将其改编为您自己的符号:

function get_polygon_centroid(pts) {
   var first = pts[0], last = pts[pts.length-1];
   if (first.x != last.x || first.y != last.y) pts.push(first);
   var twicearea=0,
   x=0, y=0,
   nPts = pts.length,
   p1, p2, f;
   for ( var i=0, j=nPts-1 ; i<nPts ; j=i++ ) {
      p1 = pts[i]; p2 = pts[j];
      f = p1.x*p2.y - p2.x*p1.y;
      twicearea += f;          
      x += ( p1.x + p2.x ) * f;
      y += ( p1.y + p2.y ) * f;
   }
   f = twicearea * 3;
   return { x:x/f, y:y/f };
}

关于javascript - 如何在 JavaScript 中找到凹不规则多边形的质心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9692448/

相关文章:

javascript - 如何使用 Node.js Crypto 创建 HMAC-SHA1 哈希?

javascript - Google Analytics - 背后的 JavaScript 代码

graphics - 什么是顶点着色?

c# - 如何找到覆盖多边形的圆的最小扇区?

r - 在 R 中绘制多边形

javascript - lodash 将交替插入数组

javascript - Illustrator脚本>使用JS选择所有路径

php - 下拉菜单中未选择任何选项

Javascript从坐标数组中的某个坐标找到最远的坐标

python - 使用 osmnx 从多边形检索数据