summaryrefslogtreecommitdiff
path: root/altoslib/AltosState.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2015-06-23 21:38:37 -0700
committerKeith Packard <keithp@keithp.com>2015-06-23 21:42:35 -0700
commit60b8bea12edb954e6140a92c8412364c9581e3c2 (patch)
treec7fc914e0dfe08d186b5d4384e2f3b2362e4f783 /altoslib/AltosState.java
parent1513693602c2a4cab0783833d1844c066edabb71 (diff)
altoslib: Use a longer filter for descent values
This makes descent speeds almost useful, a huge improvement Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altoslib/AltosState.java')
-rw-r--r--altoslib/AltosState.java9
1 files changed, 6 insertions, 3 deletions
diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java
index a120e0c7..8eacf975 100644
--- a/altoslib/AltosState.java
+++ b/altoslib/AltosState.java
@@ -31,8 +31,9 @@ public class AltosState implements Cloneable, Serializable {
public int set;
+ static final double filter_len = 2.0;
static final double ascent_filter_len = 0.5;
- static final double descent_filter_len = 0.5;
+ static final double descent_filter_len = 5.0;
/* derived data */
@@ -64,8 +65,10 @@ public class AltosState implements Cloneable, Serializable {
}
void set_filtered(double new_value, double time) {
- if (prev_value != AltosLib.MISSING)
- new_value = (prev_value * 15.0 + new_value) / 16.0;
+ if (prev_value != AltosLib.MISSING) {
+ double f = 1/Math.exp((time - prev_set_time) / filter_le);
+ new_value = f * new_value + (1-f) * prev_value;
+ }
set(new_value, time);
}