Я использую пространственный 0/0/3 акселерометр phidget в игре xna, которую я разрабатываю, и нашел эту запись здесь, в Stackoverflow
Я пыталсяреализовать указанный код:
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;
}
}
Я использую это для своей реализации: мой акселерометр возвращает значения каждые 168 мс.
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;
}
РЕДАКТИРОВАТЬ:
Я забыл опубликовать проблему.Как заявил г-н Дакетт.
Проблема, с которой я столкнулся, заключалась в том, что после заполнения стека игра перестала реагировать на движение акселерометра.