2012-04-11 27 views
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; 
} 

は、どのように私はこのセットの重力の中心を計算することができますか?

答えて

5

私はこれを正しく解釈していた場合:

をあなたのポイントは、非加重されているので、中心点は次のようになります(AVG(x)は、平均(Y))。

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

1

重力センターを見つけるには、重量も必要です。設定されたウェイトを[i] .wとすると、ポイント構造体を返すように関数を修正する必要があります。x =すべての平均[i] .xの平均xy =すべてのセット[i]の平均.yおよびw =すべてのセット[i]の合計.w

関連する問題