我已经使用python在设备上下文中绘制了一个图像,我想在垂直或水平方向上平滑地移动它/设置动画。
我应该使用什么算法?我在哪里可以获得python中这类任务的信息?
我已经使用python在设备上下文中绘制了一个图像,我想在垂直或水平方向上平滑地移动它/设置动画。
我应该使用什么算法?我在哪里可以获得python中这类任务的信息?
一旦在设备上下文中绘制了一个对象,它就会停留在那里。如果你想移动它,你需要重新绘制它。
您可以保持固定的背景,每次移动时只重新绘制可移动元素。基本上就是这样做的。
要想在一条线上平滑地移动一个对象,你必须这样做(我还没有准备好程序,所以只能给你一个想法):
这就是算法。
我建议您也查看PyGame。也许你可以使用它,它也有一些教程。
要在起始坐标(x1,y1)
和目标坐标之间平滑移动对象,您需要首先问自己,对象到达目的地需要多长时间。假设您希望对象以
t
时间单位(可能是秒、小时或其他)到达那里。一旦你确定了这一点,那么每单位时间锻炼位移就很简单了:
dx = (x2-x1)/t
dy = (y2-y1)/t
现在,您只需在每单位时间将(dx,dy)
添加到对象的位置([x,y)
[x1,y1]),并在对象到达目的地的某个阈值距离内时停止。这是为了说明除法中的错误会累积的事实,所以如果您进行了以下等式检查:
(x,y)==(x2,y2)
这不太可能是真的。
请注意,上面的方法会给你恒定的速度,直线运动。相反,你可能希望使用某种稍微复杂一点的公式,让物体看起来加速,保持巡航速度,然后减速。以下公式可能会有用:
v(t) = u(t) + t*a(t)
x(t) = v(t) + t*v(t)
这只是Euler的方法,并且应该足以用于动画目的。