|
- #pragma once
-
- namespace DHE {
-
- inline auto scale(float proportion, float lower_bound, float upper_bound)
- -> float {
- return proportion * (upper_bound - lower_bound) + lower_bound;
- }
-
- class Range {
- public:
- constexpr Range(float lower_bound, float upper_bound) noexcept
- : lower_bound(lower_bound), upper_bound(upper_bound) {}
-
- auto scale(float proportion) const -> float {
- return DHE::scale(proportion, lower_bound, upper_bound);
- }
-
- auto scale(bool state) const -> float {
- return state ? upper_bound : lower_bound;
- }
-
- auto normalize(float member) const -> float {
- return (member - lower_bound) / (upper_bound - lower_bound);
- }
-
- auto clamp(float f) const -> float {
- if (f < lower_bound) {
- return lower_bound;
- }
- if (f > upper_bound) {
- return upper_bound;
- }
- return f;
- }
-
- const float lower_bound;
- const float upper_bound;
- };
- } // namespace DHE
|