summaryrefslogtreecommitdiffhomepage
path: root/qfunctionconfigurator
diff options
context:
space:
mode:
authorDaMichel <mw.pub@welter-4d.de>2015-02-15 12:20:07 +0100
committerDaMichel <mw.pub@welter-4d.de>2015-02-15 12:20:07 +0100
commit622d5bd3c0553ebbff09f86801fa561231694595 (patch)
tree50a5a4567c96e301984522e44a93d087f932cd76 /qfunctionconfigurator
parent6820de3418ee3816b99de5d15dfa7416304cde0d (diff)
lerp ftw
Diffstat (limited to 'qfunctionconfigurator')
-rw-r--r--qfunctionconfigurator/functionconfig.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/qfunctionconfigurator/functionconfig.cpp b/qfunctionconfigurator/functionconfig.cpp
index 4f808c80..1ed6d54f 100644
--- a/qfunctionconfigurator/functionconfig.cpp
+++ b/qfunctionconfigurator/functionconfig.cpp
@@ -24,8 +24,12 @@ Map::Map() :
float Map::getValue(float x) {
QMutexLocker foo(&_mutex);
- int x2 = x * (double) MEMOIZE_PRECISION;
- float ret = getValueInternal(x2);
+ double q = x * (double) MEMOIZE_PRECISION;
+ int xi = (int)q;
+ float yi = getValueInternal(xi);
+ float yiplus1 = getValueInternal(xi+1);
+ float f = (q-xi);
+ float ret = yiplus1 * f + yi * (1.0f - f); // at least do a linear interpolation.
last_input_value.setX(x);
last_input_value.setY(ret);
return ret;