public double[] getCalibratedData() //TAKES THE CURRENT RAW CAPACITANCE AND CALCULATE THE ACTUAL COORDINATE DATA AND RETURN TO GLOVE CONTROLLER { if (calibrationAlgorithm.getTheta() == null) { return(new Double[] {}); } int[] DCbiased = new int[array_capacitance_raw.Length + 1]; DCbiased[0] = 1; for (int index = 0; index < array_capacitance_raw.Length; index++) { DCbiased[index + 1] = array_capacitance_raw[index]; } //Retrieve weightings (theta) from training algo and multiply against current capacitance data double[] Position = calibrationAlgorithm.ApplyTransformation(DCbiased, calibrationAlgorithm.getTheta()); //Set range limits for (int index = 0; index < Position.Length; index++) { if (Position[index] < calibrationAlgorithm.TrainingPositionMinY[index]) { Position[index] = calibrationAlgorithm.TrainingPositionMinY[index]; } else if (Position[index] > calibrationAlgorithm.TrainingPositionMaxY[index]) { Position[index] = calibrationAlgorithm.TrainingPositionMaxY[index]; } } return(Position); }