定义二维结构体数组grid[2][2],存放4个质点的x坐标和y坐标。以步长为1的引用模式求得所有质点x坐标的和,以及y坐标的和。利用右移操作求得质心的x坐标和y坐标。
代码实现
struct position
{
int x;
int y;
};
struct position grid[2][2];
int total_x=0, total_y=0;
int i, j;
void centroid();
void centroid()
{
int m=1;
for(i=0; i<2; i++)
for(j=0; j<2; j++)
{
total_x+=grid[i][j].x;
total_y+=grid[i][j].y;
}
if(total_x>=0)
total_x>>=2;
else
total_x=(total_x+(m<<2)-1)>>2; //若total_x<0, 加偏置量
if(total_y>=0)
total_y>>=2;
else
total_y=(total_y+(m<<2)-1)>>2; //若total_y<0, 加偏置量
}
void main()
{
for(i=0; i<2;i ++)
for(j=0; j<2; ++)
{
grid[i][j].x=2*(i+j)-3;
grid[i][j].y=2*(i+j)-4;
}
centroid();
}