如何计算一个点数组列表的质心

5
我正在尝试将ArrayList中点的x和y坐标分别相加。
public static ArrayList knots = new ArrayList<Point>();



public Point centroid()  {
        Point center = new Point();
            for(int i=0; i<knots.size(); i++) {
            ????????????????????
        return center;
}

如何找到质心?

2
什么是 ??????????????? - SpringLearner
1
看看维基百科。它只是计算质心,其中假设均匀质量密度,使公式更容易。 - mvw
2个回答

22
public Point centroid()  {
    double centroidX = 0, centroidY = 0;

        for(Point knot : knots) {
            centroidX += knot.getX();
            centroidY += knot.getY();
        }
    return new Point(centroidX / knots.size(), centroidY / knots.size());
}

它是否输出正确? - Philipp Sander
1
@mvw 这个回答对社区有所帮助,如果我可以给你的评论点踩,我会这么做。 - basickarl
1
@kKarlMorrisson 我非常怀疑这个答案。虽然它已经获得了赞同,但它甚至没有尊重原始问题(改变了循环,改变了返回语句),问题的核心(质心)非常简单,与编程无关,除了如何在Java中编写一个非常简单的公式。因此,我不明白除了原帖作者和一群未知的有着相同作业的人之外,为什么还有其他人从这个答案中受益。 - mvw
4
好的,我同意mvn的观点。 - Philipp Sander

0
public Point centroid()  {
    Point center = new Point();
        int sumofx=0,sumofy=0;
        for(int i=0; i<knots.size(); i++) {
        sumofx= sumofx+knot[i].x;
        sumofy=sumofy+knot[i].y;
        }
    center.x=sumofx/knots.size();
    center.y=sumofy/knots.size();
    return center;

}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接