package actions.algos;
import util.Log;
public class DoubleMeanSquareRootBuffer {
private static final boolean DEBUG_SHOW_VALUES = false;
private float mybufferValue;
private int bufferCount;
private float minimumBufferValue;
/**
* uses double mean square root method and sets lower and upper bounds to
* buffer values
*
* @param target
* @param values
* @param buffer
*/
private synchronized void rootMeanSquareBuffer4(float[] target,
float[] values, float buffer) {
/*
* dont set amplification under 150
*/
final float amplification = 200;
mybufferValue = (bufferCount * mybufferValue + buffer)
/ (1 + bufferCount);
if (mybufferValue < minimumBufferValue) {
mybufferValue = minimumBufferValue;
}
if (DEBUG_SHOW_VALUES)
Log.d("Eventmanager", "buffer values: " + mybufferValue);
target[0] += amplification;
target[1] += amplification;
target[2] += amplification;
values[0] += amplification;
values[1] += amplification;
values[2] += amplification;
target[0] = (float) (Math.sqrt(Math.sqrt((target[0] * target[0]
* target[0] * target[0] * mybufferValue + values[0] * values[0]
* values[0] * values[0])
/ (1 + mybufferValue))));
target[1] = (float) (Math.sqrt(Math.sqrt((target[1] * target[1]
* target[1] * target[1] * mybufferValue + values[1] * values[1]
* values[1] * values[1])
/ (1 + mybufferValue))));
target[2] = (float) (Math.sqrt(Math.sqrt((target[2] * target[2]
* target[2] * target[2] * mybufferValue + values[2] * values[2]
* values[2] * values[2])
/ (1 + mybufferValue))));
target[0] -= amplification;
target[1] -= amplification;
target[2] -= amplification;
values[0] -= amplification;
values[1] -= amplification;
values[2] -= amplification;
}
}