描述不清楚。
这个应该不是很难,提供思路。
现在界面上话一个圆形,得到圆形边的坐标的集合-》循环集合-》在循环中依次在每个点画一个图片(充当球)但是每次循环不要忘记将前一个点重绘成点。
ok 过程完毕。现在去找资料吧。应该很好找的啊
印象中圆的公式:x^2 + y^2 = N,如果真是这样(我现在已经忘的差不多了)
上半圆(滑过去) y = (N - x^2)^(1/2) (x: 0 -> 2r)
下半圆(滑回来) y = -(N-x^2)^(1/2) (x: 2r -> 0)
在滑的过程中,步幅取决于 x 在变化的过程中的单位增加值,单位增加值越小,则圆圈越细致!
int r, step;//半径以及步幅
N = (1/2)(pi)r^2;//面积?shit, 真忘记了!
for(int x = 0; x < 2r; x+= step){//上半圆
y = (N - x^2)^(1/2);
DrawPoint(x, y);
}
for(int x = 2r ; x > 0; x-= step){//下半圆,注意,这里有一点点的错位,需要你调整边界值。x: 2r - step -> 0;
y = -(N - x^2)^(1/2);
DrawPoint(x, y);
}
补充:
如果要画移动的球,而不是圆圈,那么记录一下前一步画的点,每次画现在位置的球的时候擦除前一步画的轨迹即可(所谓擦除就是用背景颜色重画一下)。
至于移动速度,取决于你的 step 步幅以及相邻绘制动作间的时间间隔。可考虑在 DrawPoint(...) 前增加 Sleep(...) 一定时间,以配合人眼的视觉暂留。