2

http://dl.dropbox.com/u/779859/speedCalc_puradata.JPG

我在纯数据中实现了它,看看我在想什么的示意图:

  • 从 ctlin 20 和 21 接收 Midi 控制输入
  • 管道延迟它收到的任何信号
  • 毕达哥拉斯
  • 中提琴,输入的速度。单位无关紧要,只要是绝对的。

我正在考虑为鼠标光标做同样的事情,但在 python 中。

基本上,当我移动鼠标时,我想看看鼠标移动的速度。输入数据包的速率恒定为 200hz。

我可能想出了一个方法,虽然我还没有测试过。比如说,在一个列表中收集 51 个值,保持 [0] 是最新的,而 [50] 是最旧的。然后简单地对这两个值进行数学运算?

4

2 回答 2

2

您所描述的将为您提供速度的大小乘以测量时间间隔的长度。实际速度将是一个向量。你可以得到它的第一个坐标(posX - delayed_posX)/t和它的第二个坐标作为测量(posY-delayed_posY)/t之间t的时间间隔。请注意,这满足P final = P start + t V其中P是我们的位置向量。每当您想知道如何测量速度的近似值时,这始终是您的起点。时间间隔越小,您获得的速度图像就越准确。

在回答您关于 的问题time.sleep时,不,它不会减慢您的其他代码:除非它在另一个线程中运行,否则它将完全停止它。

你到底想做什么?很难说是否有更好的方法,除非我们知道您需要数据在哪里,何时需要它,以及您需要它的最新程度。

于 2010-10-18T05:27:27.643 回答
0

原来我需要的只是 X 的差异,然后我用它作为大小。

x_list.insert(0, x)
if len(x_list) > 5:
    x_list.pop()
# Get the velocity
velocity = abs(x_list[0]-x_list[-1])

其中“x”是光标的当前值,以 200hz 更新。

于 2010-10-19T02:21:29.623 回答