我正在使用(美妙的)WiiYourself!图书馆。一切都是用c++ (Visual Studio 2010)开发的。
我试图处理加速度矢量(大小和角度)的移动的遥控器。当这个人挥动它的时候,我想知道它朝哪个方向运动,用了多大的力。
问题是双重的:
-
我需要能够处理WiiMote的初始加速度值,而不是停止远程的减速值。
-
我如何管理来自远程的持续加速数据流以给我有用的信息?
我知道这更多的是一个逻辑问题,但我有麻烦把东西放在一起。
首先,您可以尝试从不同的轴捕获一系列样本,可能会创建一些函数,如矢量大小和求和向量,并将它们全部绘制出来。查看这些值作为信号的行为。
也许你可以通过这种方式看到你想要观察的运动是什么样子的
我会这样做:记录一个"完美"的摆动,并在内部绘制数据,然后将该数据保存在应用程序中的资源中,并在应用程序内部绘制随时间的移动,然后使用矢量比较来比较两者。从最后X秒开始对每个内部存储的动作进行评分,并对无效的动作使用截止值。然后得分最接近的人得到分数。
一旦检测到一个成功的动作,你应该将该时间范围标记为"已使用",因此不适用于任何更多的得分(这是为了阻止在控制器的一个动作中选择多个动作)。
可以通过寻找关键位置随时间变化的点的平均差异来进行比较。ie。以5毫秒为间隔检查每个点,并确定3个加速向量的差值,这些差值之和的平均值可以作为分数。得分最低的手势是最匹配的。