gpt4 book ai didi

java - 计算形状的中点

转载 作者:太空宇宙 更新时间:2023-11-04 06:27:46 24 4
gpt4 key购买 nike

我想做一些转换,比如旋转和缩放,需要这个方法。

所以,我在上面提到的方法中遇到了问题,其中包括这个方法,但我在相应的方法中找不到任何错误(可能存在)。这种确定形状中心点的方法是否正确?

public Point getCentroid(){
int sumx = 0;
int sumy = 0;
for(int i = 0; i<points.size();i++){
sumx+=points.get(i).getX();
sumy+=points.get(i).getY();
}
Point centroid = new Point(sumx/points.size(), sumy/points.size());
return centroid;
}

先谢谢大家了

//////////////////////////////////////////编辑//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

那么这样的事情肯定会起作用吗? (我问是因为它仍然不起作用,只是想知道它是否仍然是因为计算中心)。

public Point getCentroid() {
Vector<Integer> x = new Vector<Integer>();
Vector<Integer> y = new Vector<Integer>();
for(int i=0; i<points.size();i++){
x.add((int) points.get(i).getX());
y.add((int) points.get(i).getY());
}
Point p = new Point((Collections.max(x)-Collections.min(x))/2, (Collections.max(y)-Collections.min(y))/2);
return p;
}

最佳答案

您的方法正确计算了点集合的质心,但我认为您问题的答案取决于这些点如何定义形状。例如,如果这些点表示任意闭合折线(形状的轮廓),那么我认为很容易找到一个点的质心与封闭区域的质心不重合的示例。想象一下一个正方形区域,在一个角附近有一堆冗余点......

您的方法计算位于给定点集凸包内某处的点。也许这足以满足您想做的事情。

我不知道如何计算任意多边形的精确质心,但您可以通过强力计算近似值:光栅化形状,然后计算落在其中的像素的质心。

------------- 编辑 -------------

您的第二个示例计算边界矩形的中心。再说一遍,这不是真正的质心,但可能令人满意。

你为什么要这样做?如果是用于基于物理的模拟,那么也许您确实需要真正的质心,但如果是用于 GUI,则边界矩形的中心可能将为大多数形状提供令人满意的用户体验。

关于java - 计算形状的中点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26551911/

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