2016-05-31 03:58:58 +00:00
|
|
|
#pragma once
|
2016-05-19 14:41:06 +00:00
|
|
|
|
|
|
|
#include <algorithm>
|
|
|
|
|
2016-06-15 03:32:35 +00:00
|
|
|
#include "common.hpp"
|
|
|
|
|
|
|
|
LEMONBUDDY_NS
|
|
|
|
|
2016-10-19 12:46:43 +00:00
|
|
|
namespace math_util {
|
2016-06-15 03:32:35 +00:00
|
|
|
/**
|
|
|
|
* Limit value T by min and max bounds
|
|
|
|
*/
|
2016-10-19 12:46:43 +00:00
|
|
|
template <typename T>
|
|
|
|
T cap(T value, T min_value, T max_value) {
|
2016-05-19 14:41:06 +00:00
|
|
|
value = std::min<T>(value, max_value);
|
|
|
|
value = std::max<T>(value, min_value);
|
|
|
|
return value;
|
|
|
|
}
|
2016-10-19 12:46:43 +00: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 14:41:06 +00:00
|
|
|
}
|
2016-06-15 03:32:35 +00:00
|
|
|
|
|
|
|
LEMONBUDDY_NS_END
|