gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:16:58 27 4
gpt4 key购买 nike

给定 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com