void Move(int x_offset, int y_offset) //将圆心坐标平移 { int x1=Getx( ); //存取基类的私有成员 int y1=Gety( ); // D x1 += x_offset; y1 += y_offset; Setxy(x1, y1); // E }
void work(int d){ int i,j,x; double k=(double)(Y1-Y2)/(X1-X2),b=Y1-k*X1,y,ty=Y1; g=gcd(abs(X1-X2),abs(Y1-Y2)); L=abs(X1-X2)/g; for (x=X1;x!=X2;x+=d){ y=k*(x+d)+b; j= Y1>Y2 ? Gety(ty,x,-1)-floor(y+1e-8)+1 : Gety(y,x+d,1)-floor(ty+1e-8)+1; if (j>=n){ int x0= d>0 ? x : x-1,y0= Y1>Y2 ? Gety(ty,x,-1) : floor(ty+1e-8); for (;n>1;n--) y0+= Y1>Y2 ? -1 : 1; printf("%d %d\n",x0,y0); return; } n-=j; ty=y; } printf("no solution\n"); }