summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--FTNoIR_Filter_Accela/FTNoIR_FilterControls.ui170
-rw-r--r--FTNoIR_Filter_Accela/FTNoIR_Filter_accela.h2
-rw-r--r--FTNoIR_Filter_Accela/ftnoir_filter_accela.cpp10
-rw-r--r--FTNoIR_Filter_Accela/ftnoir_filter_accela_dialog.cpp17
4 files changed, 186 insertions, 13 deletions
diff --git a/FTNoIR_Filter_Accela/FTNoIR_FilterControls.ui b/FTNoIR_Filter_Accela/FTNoIR_FilterControls.ui
index d5b08268..af6522ce 100644
--- a/FTNoIR_Filter_Accela/FTNoIR_FilterControls.ui
+++ b/FTNoIR_Filter_Accela/FTNoIR_FilterControls.ui
@@ -10,7 +10,7 @@
<x>0</x>
<y>0</y>
<width>880</width>
- <height>643</height>
+ <height>673</height>
</rect>
</property>
<property name="windowTitle">
@@ -44,13 +44,13 @@
<property name="minimumSize">
<size>
<width>850</width>
- <height>594</height>
+ <height>574</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>300</width>
- <height>594</height>
+ <height>574</height>
</size>
</property>
<property name="currentIndex">
@@ -60,13 +60,13 @@
<attribute name="title">
<string>Rotation</string>
</attribute>
- <widget class="QFunctionConfigurator" name="scalingConfig" native="true">
+ <widget class="QFunctionConfigurator" name="scalingConfig">
<property name="geometry">
<rect>
<x>20</x>
<y>20</y>
<width>819</width>
- <height>244</height>
+ <height>510</height>
</rect>
</property>
<property name="maxInputEGU" stdset="0">
@@ -87,14 +87,14 @@
<property name="gridDistEGU_Output" stdset="0">
<number>1</number>
</property>
- <property name="colorBezier" stdset="0">
+ <property name="colorBezier">
<color>
<red>255</red>
<green>170</green>
<blue>0</blue>
</color>
</property>
- <property name="colorBackground" stdset="0">
+ <property name="colorBackground">
<color>
<red>192</red>
<green>192</green>
@@ -116,13 +116,13 @@
<attribute name="title">
<string>Translation</string>
</attribute>
- <widget class="QFunctionConfigurator" name="translationScalingConfig" native="true">
+ <widget class="QFunctionConfigurator" name="translationScalingConfig">
<property name="geometry">
<rect>
<x>20</x>
<y>20</y>
<width>819</width>
- <height>244</height>
+ <height>510</height>
</rect>
</property>
<property name="maxInputEGU" stdset="0">
@@ -143,14 +143,14 @@
<property name="gridDistEGU_Output" stdset="0">
<number>1</number>
</property>
- <property name="colorBezier" stdset="0">
+ <property name="colorBezier">
<color>
<red>85</red>
<green>255</green>
<blue>0</blue>
</color>
</property>
- <property name="colorBackground" stdset="0">
+ <property name="colorBackground">
<color>
<red>192</red>
<green>192</green>
@@ -168,6 +168,119 @@
</widget>
</item>
<item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QLabel" name="lblSensYaw_4">
+ <property name="minimumSize">
+ <size>
+ <width>25</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>150</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">color:#0;
+background:none;</string>
+ </property>
+ <property name="text">
+ <string>Reduction factor:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSlider" name="slideReduction">
+ <property name="minimumSize">
+ <size>
+ <width>50</width>
+ <height>15</height>
+ </size>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>100</number>
+ </property>
+ <property name="pageStep">
+ <number>5</number>
+ </property>
+ <property name="value">
+ <number>100</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="tickPosition">
+ <enum>QSlider::NoTicks</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="spinReduction">
+ <property name="minimumSize">
+ <size>
+ <width>35</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:none;</string>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>100</number>
+ </property>
+ <property name="value">
+ <number>100</number>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="lblSensYaw_5">
+ <property name="minimumSize">
+ <size>
+ <width>25</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>400</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">color:#0;
+background:none;</string>
+ </property>
+ <property name="text">
+ <string>(lowering this value will speed up response (in exchange for stability)</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="spacer">
@@ -208,7 +321,40 @@
</customwidget>
</customwidgets>
<resources/>
- <connections/>
+ <connections>
+ <connection>
+ <sender>slideReduction</sender>
+ <signal>valueChanged(int)</signal>
+ <receiver>spinReduction</receiver>
+ <slot>setValue(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>219</x>
+ <y>620</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>310</x>
+ <y>622</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>spinReduction</sender>
+ <signal>valueChanged(int)</signal>
+ <receiver>slideReduction</receiver>
+ <slot>setValue(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>315</x>
+ <y>613</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>170</x>
+ <y>621</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
<slots>
<slot>startEngineClicked()</slot>
<slot>stopEngineClicked()</slot>
diff --git a/FTNoIR_Filter_Accela/FTNoIR_Filter_accela.h b/FTNoIR_Filter_Accela/FTNoIR_Filter_accela.h
index 0a57eb88..77aa59ea 100644
--- a/FTNoIR_Filter_Accela/FTNoIR_Filter_accela.h
+++ b/FTNoIR_Filter_Accela/FTNoIR_Filter_accela.h
@@ -86,6 +86,7 @@ private:
bool first_run;
double kFactor, kFactorTranslation;
double kSensitivity, kSensitivityTranslation;
+ double kMagicNumber; // Stanislaws' magic number (should be 100 according to him...)
FunctionConfig functionConfig;
FunctionConfig translationFunctionConfig;
@@ -124,6 +125,7 @@ private slots:
void doOK();
void doCancel();
void settingChanged(bool) { settingsDirty = true; };
+ void settingChanged(int) { settingsDirty = true; };
};
//*******************************************************************************************************
diff --git a/FTNoIR_Filter_Accela/ftnoir_filter_accela.cpp b/FTNoIR_Filter_Accela/ftnoir_filter_accela.cpp
index a6f9264b..3e4c3bf6 100644
--- a/FTNoIR_Filter_Accela/ftnoir_filter_accela.cpp
+++ b/FTNoIR_Filter_Accela/ftnoir_filter_accela.cpp
@@ -21,6 +21,7 @@ FTNoIR_Filter::FTNoIR_Filter() :
translationFunctionConfig("Accela-Scaling-Translation", 4, 6)
{
first_run = true;
+ kMagicNumber = 100.0f;
loadSettings(); // Load the Settings
}
@@ -54,6 +55,11 @@ void FTNoIR_Filter::loadSettings() {
defPoints.append(defScaleTranslation[i]);
}
translationFunctionConfig.loadSettings(iniFile, defPoints);
+
+ iniFile.beginGroup ( "Accela" );
+ kMagicNumber = iniFile.value ( "Reduction", 100 ).toFloat();
+ iniFile.endGroup ();
+
}
void FTNoIR_Filter::FilterHeadPoseData(THeadPoseData *current_camera_position, THeadPoseData *target_camera_position, THeadPoseData *new_camera_position, bool newTarget)
@@ -123,7 +129,11 @@ void FTNoIR_Filter::FilterHeadPoseData(THeadPoseData *current_camera_position, T
// the idea is that "empty" updates without new head pose data are still
// useful for filtering, as skipping them would result in jerky output.
// the magic "100" is the amount of calls to the filter by FTNOIR per sec.
+ // WVR: Added kMagicNumber for Patrick
double velocity = foo / 100.0;
+ if (kMagicNumber > 0.0f) {
+ double velocity = foo / kMagicNumber;
+ }
double sum = start + velocity * sign;
bool done = (sign > 0 ? sum >= e2 : sum <= e2);
if (done) {
diff --git a/FTNoIR_Filter_Accela/ftnoir_filter_accela_dialog.cpp b/FTNoIR_Filter_Accela/ftnoir_filter_accela_dialog.cpp
index 8af8a280..c230eed8 100644
--- a/FTNoIR_Filter_Accela/ftnoir_filter_accela_dialog.cpp
+++ b/FTNoIR_Filter_Accela/ftnoir_filter_accela_dialog.cpp
@@ -3,7 +3,7 @@
* gamers from Holland, who don't like to pay much for *
* head-tracking. *
* *
-* Copyright (C) 2012 Wim Vriend (Developing) *
+* Copyright (C) 2013 Wim Vriend (Developing) *
* Ron Hendriks (Researching and Testing) *
* *
* Homepage *
@@ -22,6 +22,10 @@
* with this program; if not, see <http://www.gnu.org/licenses/>. *
* *
********************************************************************************/
+/*
+ Modifications (last one on top):
+ 20130102 - WVR: Added 'reduction factor' to accommodate Patrick's need for speed.
+*/
#include "ftnoir_filter_Accela.h"
#include "math.h"
#include <QDebug>
@@ -46,6 +50,9 @@ FilterControls::FilterControls() :
connect(ui.scalingConfig, SIGNAL(CurveChanged(bool)), this, SLOT(settingChanged(bool)));
connect(ui.translationScalingConfig, SIGNAL(CurveChanged(bool)), this, SLOT(settingChanged(bool)));
+ // Connect slider for reduction
+ connect(ui.slideReduction, SIGNAL(valueChanged(int)), this, SLOT(settingChanged(int)));
+
qDebug() << "FilterControls() says: started";
}
@@ -160,6 +167,10 @@ QList<QPointF> defPoints;
ui.translationScalingConfig->setConfig(&translationFunctionConfig, currentFile);
ui.scalingConfig->setConfig(&functionConfig, currentFile);
+ iniFile.beginGroup ( "Accela" );
+ ui.slideReduction->setValue (iniFile.value ( "Reduction", 100 ).toInt());
+ iniFile.endGroup ();
+
settingsDirty = false;
}
@@ -174,6 +185,10 @@ void FilterControls::save() {
qDebug() << "FTNoIR_Filter::save() says: iniFile = " << currentFile;
+ iniFile.beginGroup ( "Accela" );
+ iniFile.setValue ( "Reduction", ui.slideReduction->value() );
+ iniFile.endGroup ();
+
functionConfig.saveSettings(iniFile);
translationFunctionConfig.saveSettings(iniFile);