java - 如何找到一组 vector 的质心?

标签 java algorithm math

<分区>

所以,我有一组位置 vector (本质上是点)。我怎样才能找到这些点的“质心”?将它们全部相加然后除以点数似乎不起作用。我正在使用 Java,但我们将不胜感激,这几乎不是特定于语言的问题。

编辑:好的,听起来我还不够清楚。每个点的权重相同,我想找到这组点的中心。当我手动对它们进行平均时,我得到了正确的答案,但是当我尝试在程序中以相同的方式进行计算时,它给出的答案大约大了 10-20%。我正在尝试制作一个植绒算法。这是应该计算所有 boid 的质心的位。 flock.boidlist是一个Boid的ArrayList,position是每个boid的一个Vector字段。我的 Vector 类具有加法和标量乘法函数

c=new Vector(0,0);
for(Boid b: flock.boidList){
        c.x+=b.position.x;
    c.y+=b.position.y;

    }
c.x=c.x/flock.boidList.size();
c.y=c.y/flock.boidList.size();

最佳答案

据我所知,这就是您要找的东西 http://en.wikipedia.org/wiki/Centroid#Of_a_finite_set_of_points .对点进行平均应该可行,您能解释一下它是如何失败的吗?

关于java - 如何找到一组 vector 的质心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8370339/

相关文章:

python - 一次性验证可比较项的二叉搜索树

java - Java 中的 Math.random()

javascript - '时光倒流' xkcd

java - 如何使用正则表达式提取成员

java - 使用 jcraft.jsch 更改目录时文件夹不存在

java - 光线转换未报告碰撞

algorithm - 用算法计算最坏情况的时间复杂度

algorithm - 确定给定的集合是否可以划分为两个子集,使得两个子集中的元素之和相同

haskell - 如何表示自然数以提供恒定时间加法?

java - 使用FilterInputStream的skip方法