我已经使用 python 在设备上下文中绘制了一个图像,我想平滑地移动它/垂直或水平动画。
我应该使用什么算法?我在哪里可以获得有关 python 中此类任务的信息?
一旦在设备上下文中绘制了一个对象,它就会停留在那里。如果要移动它,则需要重新绘制它。
您可以保持固定的背景,并且仅在每次移动时重绘可移动元素。基本上就是这样完成的。
要将对象平稳地移动到一条线上,您必须执行以下操作(我没有准备好程序,所以只能给您一个想法):
那将是算法。
我建议你也看看PyGame。也许你可以使用它,它也有一些教程。
(x1, y1)
要在起始坐标和目标坐标之间平滑移动对象(x2,y2)
,您首先需要问自己,对象需要多长时间才能到达目的地。假设您希望对象以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)
这只是欧拉的方法,应该足以用于动画目的。