summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2015-03-31 08:28:38 +0200
committerStanislaw Halik <sthalik@misaki.pl>2015-03-31 08:28:38 +0200
commit43c5c2e109868812f0d9365f08bc53acdb56d0d7 (patch)
treec61bbd92da08de57d6195c44e19d63aa92bb1b86
parentd7d37e480207bfa48da05172594f8a305345e4d4 (diff)
accela: show exact parameter values in the ui
-rw-r--r--ftnoir_filter_accela/ftnoir_accela_filtercontrols.ui154
-rw-r--r--ftnoir_filter_accela/ftnoir_filter_accela.cpp27
-rw-r--r--ftnoir_filter_accela/ftnoir_filter_accela.h3
-rw-r--r--ftnoir_filter_accela/ftnoir_filter_accela_dialog.cpp21
4 files changed, 113 insertions, 92 deletions
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 @@
<rect>
<x>0</x>
<y>0</y>
- <width>479</width>
- <height>255</height>
+ <width>501</width>
+ <height>302</height>
</rect>
</property>
<property name="windowTitle">
<string>Accela filter settings</string>
</property>
<property name="windowIcon">
- <iconset resource="../ftnoir_filter_ewma2/ewma-filter.qrc">
+ <iconset resource="../facetracknoir/ui-res.qrc">
<normaloff>:/images/filter-16.png</normaloff>:/images/filter-16.png</iconset>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
@@ -30,91 +30,118 @@
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_3">
- <item row="1" column="0">
- <widget class="QLabel" name="lblSensYaw_6">
+ <item row="3" column="3">
+ <widget class="QSlider" name="translation_slider">
+ <property name="maximum">
+ <number>99</number>
+ </property>
+ <property name="pageStep">
+ <number>5</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="tickPosition">
+ <enum>QSlider::TicksAbove</enum>
+ </property>
+ <property name="tickInterval">
+ <number>25</number>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="3">
+ <widget class="QSlider" name="rotation_slider">
+ <property name="maximum">
+ <number>99</number>
+ </property>
+ <property name="pageStep">
+ <number>5</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="tickPosition">
+ <enum>QSlider::TicksAbove</enum>
+ </property>
+ <property name="tickInterval">
+ <number>25</number>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="styleSheet">
- <string notr="true">color:#0;
-background:none;</string>
- </property>
<property name="text">
- <string>Rotation smoothing</string>
+ <string>Translation sensitivity</string>
</property>
</widget>
</item>
- <item row="3" column="1">
- <widget class="QComboBox" name="ewma">
- <item>
- <property name="text">
- <string>None</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Low</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Normal</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>High</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Extreme</string>
- </property>
- </item>
- </widget>
- </item>
- <item row="2" column="0">
- <widget class="QLabel" name="label">
+ <item row="1" column="0">
+ <widget class="QLabel" name="lblSensYaw_6">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
+ <property name="styleSheet">
+ <string notr="true">color:#0;
+background:none;</string>
+ </property>
<property name="text">
- <string>Translation smoothing</string>
+ <string>Rotation sensitivity</string>
</property>
</widget>
</item>
- <item row="2" column="1">
- <widget class="QSlider" name="translation_slider">
- <property name="maximum">
- <number>99</number>
+ <item row="0" column="1">
+ <widget class="QLabel" name="ewma_label">
+ <property name="minimumSize">
+ <size>
+ <width>32</width>
+ <height>0</height>
+ </size>
</property>
- <property name="pageStep">
- <number>5</number>
+ <property name="text">
+ <string>0 ms</string>
</property>
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLabel" name="rot_gain">
+ <property name="text">
+ <string>0°</string>
</property>
- <property name="tickPosition">
- <enum>QSlider::TicksAbove</enum>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Smoothing</string>
</property>
- <property name="tickInterval">
- <number>24</number>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QLabel" name="trans_gain">
+ <property name="text">
+ <string>0mm</string>
</property>
</widget>
</item>
- <item row="1" column="1">
- <widget class="QSlider" name="rotation_slider">
+ <item row="0" column="3">
+ <widget class="QSlider" name="ewma_slider">
<property name="maximum">
- <number>99</number>
+ <number>100</number>
+ </property>
+ <property name="singleStep">
+ <number>10</number>
</property>
<property name="pageStep">
- <number>5</number>
+ <number>25</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
@@ -123,14 +150,7 @@ background:none;</string>
<enum>QSlider::TicksAbove</enum>
</property>
<property name="tickInterval">
- <number>24</number>
- </property>
- </widget>
- </item>
- <item row="3" column="0">
- <widget class="QLabel" name="label_2">
- <property name="text">
- <string>Spiking noise reduction</string>
+ <number>25</number>
</property>
</widget>
</item>
@@ -201,7 +221,7 @@ background:none;</string>
<tabstop>buttonBox</tabstop>
</tabstops>
<resources>
- <include location="../ftnoir_filter_ewma2/ewma-filter.qrc"/>
+ <include location="../facetracknoir/ui-res.qrc"/>
</resources>
<connections/>
<slots>
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;