From 43c5c2e109868812f0d9365f08bc53acdb56d0d7 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Tue, 31 Mar 2015 08:28:38 +0200 Subject: accela: show exact parameter values in the ui --- .../ftnoir_accela_filtercontrols.ui | 154 ++++++++++++--------- ftnoir_filter_accela/ftnoir_filter_accela.cpp | 27 +--- ftnoir_filter_accela/ftnoir_filter_accela.h | 3 + .../ftnoir_filter_accela_dialog.cpp | 21 ++- 4 files changed, 113 insertions(+), 92 deletions(-) (limited to 'ftnoir_filter_accela') diff --git a/ftnoir_filter_accela/ftnoir_accela_filtercontrols.ui b/ftnoir_filter_accela/ftnoir_accela_filtercontrols.ui index 5638fefc..a10d2df4 100644 --- a/ftnoir_filter_accela/ftnoir_accela_filtercontrols.ui +++ b/ftnoir_filter_accela/ftnoir_accela_filtercontrols.ui @@ -9,15 +9,15 @@ 0 0 - 479 - 255 + 501 + 302 Accela filter settings - + :/images/filter-16.png:/images/filter-16.png @@ -30,91 +30,118 @@ QFrame::Raised - - + + + + 99 + + + 5 + + + Qt::Horizontal + + + QSlider::TicksAbove + + + 25 + + + + + + + 99 + + + 5 + + + Qt::Horizontal + + + QSlider::TicksAbove + + + 25 + + + + + 0 0 - - color:#0; -background:none; - - Rotation smoothing + Translation sensitivity - - - - - None - - - - - Low - - - - - Normal - - - - - High - - - - - Extreme - - - - - - + + 0 0 + + color:#0; +background:none; + - Translation smoothing + Rotation sensitivity - - - - 99 + + + + + 32 + 0 + - - 5 + + 0 ms - - Qt::Horizontal + + + + + + - - QSlider::TicksAbove + + + + + + Smoothing - - 24 + + + + + + 0mm - - + + - 99 + 100 + + + 10 - 5 + 25 Qt::Horizontal @@ -123,14 +150,7 @@ background:none; QSlider::TicksAbove - 24 - - - - - - - Spiking noise reduction + 25 @@ -201,7 +221,7 @@ background:none; buttonBox - + diff --git a/ftnoir_filter_accela/ftnoir_filter_accela.cpp b/ftnoir_filter_accela/ftnoir_filter_accela.cpp index 2fad523e..f6a2acea 100644 --- a/ftnoir_filter_accela/ftnoir_filter_accela.cpp +++ b/ftnoir_filter_accela/ftnoir_filter_accela.cpp @@ -42,36 +42,15 @@ void FTNoIR_Filter::filter(const double* input, double *output) const double rot_t = 7. * (1+s.rot_threshold) / 100.; const double trans_t = 5. * (1+s.trans_threshold) / 100.; - + const double dt = t.elapsed() * 1e-9; t.start(); - double RC; - - switch (s.ewma) - { - default: - case 0: // none - RC = 0; - break; - case 1: // low - RC = 0.06; - break; - case 2: // normal - RC = 0.11; - break; - case 3: // high - RC = 0.15; - break; - case 4: // extreme - RC = 0.20; - break; - } + const double RC = 2 * s.ewma / 1000.; // seconds + const double alpha = dt/(dt+RC); for (int i = 0; i < 6; i++) { - const double alpha = dt/(dt+RC); - smoothed_input[i] = smoothed_input[i] * (1.-alpha) + input[i] * alpha; const double in = smoothed_input[i]; diff --git a/ftnoir_filter_accela/ftnoir_filter_accela.h b/ftnoir_filter_accela/ftnoir_filter_accela.h index ec541088..98e5cf1f 100644 --- a/ftnoir_filter_accela/ftnoir_filter_accela.h +++ b/ftnoir_filter_accela/ftnoir_filter_accela.h @@ -55,6 +55,9 @@ private: private slots: void doOK(); void doCancel(); + void update_ewma_display(int value); + void update_rot_display(int value); + void update_trans_display(int value); }; class FTNoIR_FilterDll : public Metadata diff --git a/ftnoir_filter_accela/ftnoir_filter_accela_dialog.cpp b/ftnoir_filter_accela/ftnoir_filter_accela_dialog.cpp index 4fbc482d..35c4b7fa 100644 --- a/ftnoir_filter_accela/ftnoir_filter_accela_dialog.cpp +++ b/ftnoir_filter_accela/ftnoir_filter_accela_dialog.cpp @@ -11,10 +11,14 @@ FilterControls::FilterControls() : ui.setupUi( this ); connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK())); connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel())); + + connect(ui.rotation_slider, SIGNAL(valueChanged(int)), this, SLOT(update_rot_display(int))); + connect(ui.translation_slider, SIGNAL(valueChanged(int)), this, SLOT(update_trans_display(int))); + connect(ui.ewma_slider, SIGNAL(valueChanged(int)), this, SLOT(update_ewma_display(int))); tie_setting(s.rot_threshold, ui.rotation_slider); tie_setting(s.trans_threshold, ui.translation_slider); - tie_setting(s.ewma, ui.ewma); + tie_setting(s.ewma, ui.ewma_slider); } void FilterControls::register_filter(IFilter* filter) @@ -46,6 +50,21 @@ void FilterControls::save() { s.b->save(); } +void FilterControls::update_rot_display(int value) +{ + ui.rot_gain->setText(QString::number(value * 7 / 100. + 1) + "°"); +} + +void FilterControls::update_trans_display(int value) +{ + ui.trans_gain->setText(QString::number(value * 5 / 100. + 1) + "mm"); +} + +void FilterControls::update_ewma_display(int value) +{ + ui.ewma_label->setText(QString::number(value * 2) + "ms"); +} + extern "C" OPENTRACK_EXPORT IFilterDialog* GetDialog() { return new FilterControls; -- cgit v1.2.3