package me.drton.flightplot.processors; import java.util.HashMap; import java.util.Map; /** * User: ton Date: 16.06.13 Time: 19:55 */ public class ATan2 extends PlotProcessor { protected String param_Field_X; protected String param_Field_Y; protected double param_Angle_Offset; @Override public Map<String, Object> getDefaultParameters() { Map<String, Object> params = new HashMap<String, Object>(); params.put("Field_X", "LPOS.VX"); params.put("Field_Y", "LPOS.VY"); params.put("Angle Offset", 0.0); return params; } @Override public void init() { param_Field_X = (String) parameters.get("Field_X"); param_Field_Y = (String) parameters.get("Field_Y"); param_Angle_Offset = (Double) parameters.get("Angle Offset"); addSeries(); } @Override public void process(double time, Map<String, Object> update) { Object x = update.get(param_Field_X); Object y = update.get(param_Field_Y); if (x != null && y != null && x instanceof Number && y instanceof Number) { double a = Math.atan2(((Number) y).doubleValue(), ((Number) x).doubleValue()); a += param_Angle_Offset + Math.PI; int a_2pi = (int) Math.round(a / 2.0 / Math.PI - 0.5); a -= (a_2pi * 2.0 + 1.0) * Math.PI; addPoint(0, time, a); } } }