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