2016-05-30 23:58:58 -04:00
|
|
|
#pragma once
|
2016-05-19 10:41:06 -04:00
|
|
|
|
|
|
|
#include <algorithm>
|
|
|
|
|
2016-06-14 23:32:35 -04:00
|
|
|
#include "common.hpp"
|
|
|
|
|
|
|
|
LEMONBUDDY_NS
|
|
|
|
|
2016-10-19 08:46:43 -04:00
|
|
|
namespace math_util {
|
2016-06-14 23:32:35 -04:00
|
|
|
/**
|
|
|
|
* Limit value T by min and max bounds
|
|
|
|
*/
|
2016-10-19 08:46:43 -04:00
|
|
|
template <typename T>
|
|
|
|
T cap(T value, T min_value, T max_value) {
|
2016-05-19 10:41:06 -04:00
|
|
|
value = std::min<T>(value, max_value);
|
|
|
|
value = std::max<T>(value, min_value);
|
|
|
|
return value;
|
|
|
|
}
|
2016-10-19 08:46:43 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Calculate the percentage for a value
|
|
|
|
* within given range
|
|
|
|
*/
|
|
|
|
template <typename T>
|
|
|
|
int percentage(T value, T min_value, T max_value) {
|
|
|
|
T percentage = ((value - min_value) / (max_value - min_value)) * 100.0f + 0.5f;
|
|
|
|
return cap<T>(std::ceil(percentage), 0, 100);
|
|
|
|
}
|
2016-05-19 10:41:06 -04:00
|
|
|
}
|
2016-06-14 23:32:35 -04:00
|
|
|
|
|
|
|
LEMONBUDDY_NS_END
|