package kukaWii.wiiHandle.filter; import kukaWii.wiiHandle.packet.AbstractPacket; import kukaWii.wiiHandle.packet.AccelerometerPacket; import kukaWii.wiiHandle.packet.MotionPlusPacket; public class NearestNeighbourFilter extends AbstractPacketFilter { private AbstractPacket[] queue = new AbstractPacket[5]; int i = 0; @Override public AbstractPacket compute(AbstractPacket input) { double x = 0; double y = 0; double z = 0; boolean processed = false; if (input instanceof AccelerometerPacket) { x = ((AccelerometerPacket) input).getX(); y = ((AccelerometerPacket) input).getY(); z = ((AccelerometerPacket) input).getZ(); logValues(x, y, z); queue[i] = input; i++; } if (input instanceof MotionPlusPacket) { // double pitch = ((MotionPlusPacket) input).getPitch(); double pitchdownspeed = ((MotionPlusPacket) input) .getPitchDownSpeed(); // double roll = ((MotionPlusPacket) input).getRoll(); double rollleftspeed = ((MotionPlusPacket) input) .getRollLeftSpeed(); // double yaw = ((MotionPlusPacket) input).getYaw(); double yawleftspeed = ((MotionPlusPacket) input).getYawLeftSpeed(); } //Wenn 5 Pakete gequeued wurden, dann fange die Berechnung an. if (i == 4) { for (int j = 0; j <= i; j++) { } processed = true; i = 0; } //Gebe das neu errechnete Paket zurück wenn processed = true ist, ansonsten null. if (processed == true) { return input; } else return null; } private void logValues(double x, double y, double z) { System.out.println("X Beschleunigung: " + x); System.out.println("Y Beschleunigung: " + y); System.out.println("Z Beschleunigung: " + z); } }