summaryrefslogtreecommitdiffstats
path: root/src/misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/misc.c')
-rw-r--r--src/misc.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/misc.c b/src/misc.c
new file mode 100644
index 0000000..a01a70d
--- /dev/null
+++ b/src/misc.c
@@ -0,0 +1,23 @@
+#include "misc.h"
+
+double linearConversion(double min_from, double max_from, double value,
+ double min_to, double max_to, bool clip) {
+ // prevent division by zero
+ if (max_from == min_from) {
+ return min_to;
+ }
+
+ // main formula
+ double result = min_to + (value - min_from) * (max_to - min_to) / (max_from - min_from);
+
+ // check clipping
+ if (clip) {
+ if (result < min_to) {
+ result = min_to;
+ } else if (result > max_to) {
+ result = max_to;
+ }
+ }
+
+ return result;
+}