diff options
author | Keith Packard <keithp@keithp.com> | 2017-05-26 18:22:02 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2017-05-26 18:22:02 -0700 |
commit | 3d29882f5c70e627b0bbfe42c0a31d6cb5f6b6bf (patch) | |
tree | 88bc7d8d915646365f0500f902bf020b065239be /altoslib/AltosTimeSeries.java | |
parent | fd738d47bbc46d36698350d5450abe1125d990a3 (diff) |
altoslib: Get KML export working again
Even annotate the states with avg speed/accel for fun.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altoslib/AltosTimeSeries.java')
-rw-r--r-- | altoslib/AltosTimeSeries.java | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/altoslib/AltosTimeSeries.java b/altoslib/AltosTimeSeries.java index 142c30ef..64fb399e 100644 --- a/altoslib/AltosTimeSeries.java +++ b/altoslib/AltosTimeSeries.java @@ -38,7 +38,7 @@ public class AltosTimeSeries implements Iterable<AltosTimeValue> { if (v0.time == v1.time) return (v0.value + v1.value) / 2; - return (v0.value * (v1.time - t) + v1.value * (t - v0.time)) / v1.time - v0.time; + return (v0.value * (v1.time - t) + v1.value * (t - v0.time)) / (v1.time - v0.time); } private int after_index(double time) { @@ -59,12 +59,18 @@ public class AltosTimeSeries implements Iterable<AltosTimeValue> { /* Compute a value for an arbitrary time */ public double value(double time) { int after = after_index(time); - if (after == 0) - return values.get(0).value; - if (after == values.size()) - return values.get(after - 1).value; + double ret; - return lerp(values.get(after-1), values.get(after), time); + if (after == 0) + ret = values.get(0).value; + else if (after == values.size()) + ret = values.get(after - 1).value; + else { + AltosTimeValue b = values.get(after-1); + AltosTimeValue a = values.get(after); + ret = lerp(b, a, time); + } + return ret; } /* Find the value just before an arbitrary time */ @@ -182,7 +188,6 @@ public class AltosTimeSeries implements Iterable<AltosTimeValue> { } pvalue = v.value; time = v.time; -// System.out.printf("%g %g %g\n", time, v.value, value); integral.add(time, value); } |