summaryrefslogtreecommitdiffhomepage
path: root/qfunctionconfigurator/functionconfig.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qfunctionconfigurator/functionconfig.cpp')
-rw-r--r--qfunctionconfigurator/functionconfig.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/qfunctionconfigurator/functionconfig.cpp b/qfunctionconfigurator/functionconfig.cpp
index a0715754..70393246 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);
+ float q = x * 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;
@@ -45,7 +49,7 @@ float Map::getValueInternal(int x) {
if (sz == 0)
ret = 0;
else
- ret = cur.data[std::max(std::min(x, sz-1), 0)];
+ ret = cur.data[std::min<unsigned>(x, sz-1)];
return ret * sign;
}