diff options
Diffstat (limited to '')
| -rw-r--r-- | src/misc.c | 23 |
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; +} |
