0

データ セットの 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;
}

このセットの重心を計算するにはどうすればよいですか?

4

2 に答える 2

5

私がこれを正しく解釈している場合:

ポイントは重み付けされていないため、中心点は(avg(x)、avg(y))になります。

平均xポイントを計算するには、すべてのx値を加算し、ポイント数で除算します。平均yポイントを計算するには、すべてのy値を加算し、ポイント数で除算します。

于 2012-04-11T19:59:29.593 に答える
1

重心を求めるには、重さも必要です。重みが set[i].w であると仮定すると、 x=すべての set[i].xの平均、y=すべての set[i].y の平均、およびw=合計のポイント構造を返すように関数を変更する必要があります。すべて set[i].w

于 2012-04-11T20:09:02.757 に答える