package advanced.gestureSound.gestures.qualities; import java.util.List; import org.mt4j.input.inputData.AbstractCursorInputEvt; import org.mt4j.input.inputData.InputCursor; import Jama.Matrix; import advanced.gestureSound.gestures.GestureEngine; import advanced.gestureSound.gestures.filters.KalmanFilter; public class Velocity extends Quality { public static String name="velocity"; KalmanFilter filter; float currentValue; public static Quality cursorDetected(GestureEngine engine) { return new Velocity(engine); } public Velocity(GestureEngine engine) { super(engine); filter = KalmanFilter.buildKF(0.2, 5, 10); filter.setX(new Matrix(new double[][]{{0.01}, {0.01}, {0.01}})); filter.predict(); } @Override public void update(InputCursor in) { float val=0.0f; val =findVelocity(in); // //System.out.println("Curvature: "+val); // filter.correct(new Matrix(new double[][]{{val}})); // filter.predict(); // //System.out.println("0:"+filter.getX().get(0,0)); // //System.out.println("1:"+filter.getX().get(1,0)); // //System.out.println("2:"+filter.getX().get(2,0)); // val = (float) filter.getX().get(0,0); // System.out.println("Velocity: "+val); currentValue = val; engine. gestureQualityChange(name, val, in); } private float findVelocity(InputCursor in) { return in.getVelocityVector().length(); } @Override public float getCurrentValue() { return currentValue; } }