我正在开发的xna游戏中使用phidget spatial 0/0/3加速度计,并在Stackoverflow上找到此post
我试图实现显示的代码:
const SIZE = 10;
float[] xVals = new float[SIZE];
float xAvg = 0;
function runAverage(float newX){
xAvg += newX/SIZE;
xVals.push(newX);
if(xVals.length > SIZE){
xAvg -= xVals.pop()/SIZE;
}
}
我正在使用它来实现: 我的加速度计每168ms返回一次值。
private const int SIZE = 10;
private static Stack<Vector3> axisVals = new Stack<Vector3>(SIZE);
private static Vector3 axisAvg = new Vector3();
public static Vector3 runningAverage(Vector3 newAxis)
{
axisAvg += newAxis / SIZE;
axisVals.Push(newAxis);
if (axisVals.Count > SIZE)
{
axisAvg -= axisVals.Pop() / SIZE;
}
return axisAvg;
}
修改
我忘记发布问题了。正如Duckett先生所说。
我遇到的问题是,一旦堆叠满了,游戏就不会对加速计的运动做出长时间的反应。