/** * sets segment current orientation using TRIAD algorithm * * @param sensor sensor of corresponding sensor */ public void setSegmentOrientationTRIAD(Sensor sensor) { float[][] rotMat = SensorDataProcessing.getRotationTRIAD(sensor.getAccNorm(), sensor.getMagNorm()); // rotate each segment for (int i = 0; i < 4; i++) { SensorDataProcessing.multiplyMatrix(rotMat, initialCross[i], cross[i]); } }
public static void compansateCentersForTilt( Vector<Vector<Segment>> refferenceStateInitial, Vector<Vector<Segment>> refferenceState, float[][] Rreference, float[][] Rcurent) { float[][] R = SensorDataProcessing.multMatMatT(Rcurent, Rreference); // SensorDataProcessing.transpose(R); for (int i = 0; i < refferenceState.size(); i++) { for (int j = 0; j < refferenceState.get(0).size(); j++) { SensorDataProcessing.multiplyMatrix( R, refferenceStateInitial.get(i).get(j).center, refferenceState.get(i).get(j).center); } } }
public static void compansateCentersForTilt( Segment[][] refferenceStateInitial, Segment[][] refferenceState, float[][] Rreference, float[][] Rcurent) { float[][] R = SensorDataProcessing.multMatMatT(Rcurent, Rreference); // SensorDataProcessing.transpose(R); for (int i = 0; i < refferenceState.length; i++) { for (int j = 0; j < refferenceState[0].length; j++) { SensorDataProcessing.multiplyMatrix( R, refferenceStateInitial[i][j].center, refferenceState[i][j].center); } } }