如何计算平面分布的引力中心?

时间:2012-04-11 19:52:33

标签: algorithm

我有一个数据集的2D分布,我想找到这些点的引力中心。

我想做的是像下面的代码,

#include <stdio.h>

#define SIZE 4

struct point {
 short x;
 short y;
};

point find_gravitation(struct point set[], unsigned char size)
{
  point ret;
  .
  .
  .
  ?
  .
  .
  .
  return ret;
}

int
main(int argc, char **argv)
{
 struct point dataset[SIZE];
 struct point ret;

 dataset[0].x = 12;
 dataset[0].y = 24;

 dataset[1].x = 3;
 dataset[1].y = 5;

 dataset[2].x = 71;
 dataset[2].y = -6;

 dataset[3].x = -185;
 dataset[3].y = -26;

 ret = find_gravitation(dataset, SIZE);

 printf("gravitation center is: %d, %d\n", ret.x, ret.y);

 return 0;
}

如何计算此组的引力中心?

2 个答案:

答案 0 :(得分:5)

如果我正确地解释了这一点:

因为您的积分未加权,所以中心点为:(avg(x),avg(y))。

要计算平均x点,请添加所有x值并除以点数。 要计算平均y点,请添加所有y值并除以点数。

答案 1 :(得分:1)

要找到引力中心,您还需要重量。假设要设置权重[i] .w,必须修改您的函数以返回结构,其中 x =所有set [i] .x 的平均值, y =所有set [i] .y 的平均值和 w =所有set [i] .w 的总和。