~chasedouglas/grail/original-touch-state

« back to all changes in this revision

Viewing changes to src/grail-gestures.c

  • Committer: Chase Douglas
  • Date: 2011-04-08 12:44:41 UTC
  • mfrom: (141.1.1 utouch-grail)
  • Revision ID: chase.douglas@ubuntu.com-20110408124441-bvgxj4jum622fvgz
Merge branch to remove the EWMA move filter

Show diffs side-by-side

added added

removed removed

Lines of Context:
87
87
        return da;
88
88
}
89
89
 
90
 
/* Response-augmented EWMA filter, courtesy of Vojtech Pavlik */
91
 
static float move_filter(const struct filter_model *m, float val)
92
 
{
93
 
        if (val > m->value - m->fuzz / 2 && val < m->value + m->fuzz / 2)
94
 
                return m->value;
95
 
        if (val > m->value - m->fuzz && val < m->value + m->fuzz)
96
 
                return (m->value * 3 + val) / 4;
97
 
        if (val > m->value - m->fuzz * 2 && val < m->value + m->fuzz * 2)
98
 
                return (m->value + val) / 2;
99
 
        return val;
100
 
}
101
 
 
102
90
static void move_reset(struct move_model *m, int i, float x, grail_time_t t)
103
91
{
104
92
        struct filter_model *fm = &m->fm[i];
192
180
                m->single = 1;
193
181
                m->multi = 0;
194
182
        } else {
195
 
                x = move_filter(&m->fm[FM_X], x);
196
 
                y = move_filter(&m->fm[FM_Y], y);
197
183
                r = compute_radius(x, y, frame);
198
 
                r = move_filter(&m->fm[FM_R], r);
199
184
                a = m->fm[FM_A].value;
200
 
                if (!s->is_semi_mt) {
 
185
                if (!s->is_semi_mt)
201
186
                        a += compute_rotation(x, y, r, frame);
202
 
                        a = move_filter(&m->fm[FM_A], a);
203
 
                }
204
187
                move_update(m, FM_X, x, t);
205
188
                move_update(m, FM_Y, y, t);
206
189
                move_update(m, FM_R, r, t);