From 8a1fe2dbbb65d445f0bcb0c94e3b1b1b2c6ac634 Mon Sep 17 00:00:00 2001 From: Bill Kuker Date: Tue, 21 Apr 2009 17:00:48 +0000 Subject: [PATCH] Limit to 200 points in graph --- .../rocketry/motorsim/visual/Chart.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/com/billkuker/rocketry/motorsim/visual/Chart.java b/src/com/billkuker/rocketry/motorsim/visual/Chart.java index 997b030..5f5a648 100644 --- a/src/com/billkuker/rocketry/motorsim/visual/Chart.java +++ b/src/com/billkuker/rocketry/motorsim/visual/Chart.java @@ -3,6 +3,7 @@ import java.awt.BorderLayout; import java.awt.Color; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.Collection; import java.util.Iterator; import javax.measure.quantity.Area; @@ -124,17 +125,22 @@ public class Chart extends JPanel { @SuppressWarnings("unchecked") public void setDomain(Iterable> d) { - - //double low = d.low.doubleValue(xUnit); - //double high = d.high.doubleValue(xUnit); - //double step = (high - low) / 50; - //for (double x = low; x < high; x += step) { - //Amount ax = Amount.valueOf(x, xUnit); + int skip = 1; + int sz = 0; + if ( d instanceof Collection ){ + sz = ((Collection)d).size(); + if ( sz > 200 ) + skip = sz / 200; + } series.clear(); + int cnt = 0; for( Amount ax: d){ try { - Amount y = (Amount)f.invoke(source, ax); - add(ax, y); + if ( cnt % skip == 0 || cnt == sz-1 ){ + Amount y = (Amount)f.invoke(source, ax); + add(ax, y); + } + cnt++; } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); -- 2.47.2