package me.drton.flightplot.processors; import java.util.Map; /** * User: ton Date: 24.06.13 Time: 22:46 */ public class Derivative extends Simple { private double[] valuesPrev; private double[] timesPrev; @Override public Map<String, Object> getDefaultParameters() { Map<String, Object> params = super.getDefaultParameters(); params.put("Fields", "LPOS.VX LPOS.VY"); return params; } @Override public void init() { super.init(); valuesPrev = new double[param_Fields.length]; timesPrev = new double[param_Fields.length]; for (int i = 0; i < param_Fields.length; i++) { valuesPrev[i] = Double.NaN; timesPrev[i] = Double.NaN; } } @Override protected double postProcessValue(int idx, double time, double in) { double out = Double.NaN; if (!Double.isNaN(timesPrev[idx])) { double dt = time - timesPrev[idx]; if (dt > 1.0e-5) { out = (in - valuesPrev[idx]) / dt; } } valuesPrev[idx] = in; timesPrev[idx] = time; return out; } }