11#ifndef INCGUARD_MGL_RANGE_H_1746895769
12#define INCGUARD_MGL_RANGE_H_1746895769
37 constexpr Range(T begin, T end) noexcept
49 [[nodiscard]]
constexpr T
Begin() const noexcept
60 [[nodiscard]]
constexpr T
End() const noexcept
98 if constexpr (std::is_floating_point_v<T>)
100 return _end - _begin <= std::numeric_limits<T>::epsilon();
104 return _begin == _end;
115 [[nodiscard]]
constexpr T
Next(T value)
const noexcept
134 [[nodiscard]]
constexpr T
Previous(T value)
const noexcept
154 [[nodiscard]]
constexpr bool Contains(T value)
const noexcept
158 return (value >= _begin) && (value <= _end);
162 return (value <= _begin) && (value >= _end);
173 [[nodiscard]]
constexpr T
Clamp(T value)
const noexcept
181 return std::clamp(value, _begin, _end);
185 return std::clamp(value, _end, _begin);
196 [[nodiscard]]
constexpr float Normalize(T value)
const noexcept
203 const auto fBegin =
static_cast<float>(_begin);
204 const auto fEnd =
static_cast<float>(_end);
205 const auto fValue =
static_cast<float>(value);
207 return (fValue - fBegin) / (fEnd - fBegin);
217 [[nodiscard]]
constexpr T
Scale(
float normalizedValue)
const noexcept
219 const auto fBegin =
static_cast<float>(_begin);
220 const auto fEnd =
static_cast<float>(_end);
222 return static_cast<T
>(fBegin + ((fEnd - fBegin) * normalizedValue));
値の範囲を表現するクラス
Definition mgl_range.h:28
constexpr bool IsSingleValue() const noexcept
値が範囲を持たない単一の値であるかを取得
Definition mgl_range.h:96
constexpr T Clamp(T value) const noexcept
指定した値を範囲内にクランプ
Definition mgl_range.h:173
constexpr bool IsPositive() const noexcept
値が正の方向に進むかを取得
Definition mgl_range.h:72
constexpr bool IsNegative() const noexcept
値が負の方向に進むかを取得
Definition mgl_range.h:84
constexpr bool Contains(T value) const noexcept
指定された値が範囲内に含まれているかを取得
Definition mgl_range.h:154
constexpr float Normalize(T value) const noexcept
値を0.0fから1.0fの値に正規化
Definition mgl_range.h:196
constexpr T Next(T value) const noexcept
指定された値の次の値を取得
Definition mgl_range.h:115
constexpr Range(T begin, T end) noexcept
コンストラクタ
Definition mgl_range.h:37
constexpr T End() const noexcept
終了値を取得
Definition mgl_range.h:60
constexpr T Previous(T value) const noexcept
指定された値の前の値を取得
Definition mgl_range.h:134
constexpr T Scale(float normalizedValue) const noexcept
正規化された値からスケーリング
Definition mgl_range.h:217
constexpr T Begin() const noexcept
開始値を取得
Definition mgl_range.h:49