summaryrefslogtreecommitdiff
path: root/altoslib/AltosTimeSeries.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2017-05-26 18:22:02 -0700
committerKeith Packard <keithp@keithp.com>2017-05-26 18:22:02 -0700
commit3d29882f5c70e627b0bbfe42c0a31d6cb5f6b6bf (patch)
tree88bc7d8d915646365f0500f902bf020b065239be /altoslib/AltosTimeSeries.java
parentfd738d47bbc46d36698350d5450abe1125d990a3 (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.java19
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);
}