实施震动事件?

jma*_*erx 5 c++ algorithm pseudocode

我正在为游戏制作一个gui API,一个请求的功能是震动事件.基本上是一个非常类似于Windows 7的Aero Shake的事件.当鼠标按下时,如果它快速地单向来回移动,则会触发该事件.我只是不确定什么类型的psedocode会进入这个?

Bre*_*ias 9

我可能会考虑这样的事情:

  1. 总是为鼠标最后一次移动的方向创建一个向量
  2. 当你收集下一个向量时(这意味着你总是要评估两个向量),总是保留一个前一个向量的记录.
  3. 当每个鼠标输入到达时,做两个向量的点积.如果点积为正,则忽略它.如果是负数,则用它设置一个时间值并存储在一个数组中,最多可存储五个这样的时间戳.
  4. 重复上述顺序.如果时间戳数组有一组连续的时间戳,每个时间戳都有一些不同的epsilon,那么你可以假设某人正在发抖.:)


Dia*_*cus 6

您需要计算鼠标移动的变化.如果鼠标在小于0.7秒的时间内改变方向超过3次,那么它就是震动.要始终检测方向轨迹的变化,最后5个鼠标坐标.如果P0点是最后一个,P5是倒数第五个,则计算P0-P3和P3-P5之间的角度.如果角度为5度,则鼠标改变方向.