24 DGM_ASSERT(max > min);
25 float tMin =
static_cast<float>(std::numeric_limits<T>::min());
26 float tMax =
static_cast<float>(std::numeric_limits<T>::max());
27 float a = (tMax - tMin) / (max - min);
28 float b = tMin - a * min;
29 float x = a * val + b;
30 return static_cast<T
>(MAX(tMin, MIN(tMax, std::round(x))));
49 if ((mid == min) || (mid == max))
return linear_mapper<T>(val, min, max);
50 DGM_ASSERT(max > mid);
51 DGM_ASSERT(mid > min);
52 float tMin =
static_cast<float>(std::numeric_limits<T>::min());
53 float tMid =
static_cast<float>(midPoint);
54 float tMax =
static_cast<float>(std::numeric_limits<T>::max());
58 a = (tMid - tMin) / (mid - min);
62 a = (tMax - tMid) / (max - mid);
66 float x = a * val + b;
67 return static_cast<T
>(MAX(tMin, MIN(tMax, std::round(x))));
T two_linear_mapper(float val, float min, float max, float mid, T midPoint)
Two-linear 1D mapping.
T linear_mapper(float val, float min, float max)
Linear 1D mapping.