#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; }