15inline constexpr T abs(
const T& rhs)
17 return rhs < 0 ? -rhs : rhs;
26 constexpr double Pi = 3.1415926535897932384626433832795;
29 constexpr double HalfPi = 1.5707963267948966192313216916398;
32 constexpr double TwoPi = 6.283185307179586476925286766559;
35 constexpr double DegToRad = 0.017453292519943295769236907684886;
38 constexpr double RadToDeg = 57.295779513082320876798154814105;
46 template <
typename A,
typename B>
48 Min(
const A& lhs,
const B& rhs) ->
decltype(lhs, rhs)
50 return lhs < rhs ? lhs : rhs;
54 template <
typename A,
typename B>
56 Max(
const A& lhs,
const B& rhs) ->
decltype(lhs, rhs)
58 return lhs > rhs ? lhs : rhs;
66 template <
typename A,
typename B,
typename C>
68 Constrain(
const A& amt,
const B& low,
const C& high)
70 return Min(
Max(amt, low), high);
100 return rhs < 0 ? -rhs : rhs;
106 template <
typename T>
117 return x - (int)x < 0 ? (
int)x - 1 : (int)x;
124 return x - (int)x >= 0.5 ? (
int)x + 1 : (int)x;
131 return x - (int)x > 0 ? (
int)x + 1 : (int)x;
135 inline constexpr double
136 Map(
const double value,
const double inputMin,
const double inputMax,
const double outputMin,
const double outputMax)
138 return (value - inputMin) * (outputMax - outputMin) / (inputMax - inputMin) + outputMin;
156 const auto cycle = max - min;
158 const auto modValue = fmod((value - min), cycle) + min;
162 return modValue + cycle;
177 return sqrt(x * x + y * y);
constexpr T Abs(const T &rhs)
絶対値を返す (std::abs)
Definition Math.hpp:98
constexpr auto Max(const A &lhs, const B &rhs) -> decltype(lhs, rhs)
2つの値のうち大きい方を返す (std::max)
Definition Math.hpp:56
constexpr T ToRadians(const T &rhs)
度数法の角度を弧度法に変換する
Definition Math.hpp:78
double Hypotenuse(double x, double y)
三平方の定理を用いて、2辺の長さから斜辺の長さを求める
Definition Math.hpp:175
constexpr double Pi
π
Definition Math.hpp:26
constexpr T Sq(const T &x)
二乗を求める (std::pow(x, 2))
Definition Math.hpp:108
constexpr int Round(double x)
四捨五入 (std::round)
Definition Math.hpp:122
constexpr double DegToRad
度数法から弧度法に変換する係数
Definition Math.hpp:35
double Normalized(double value, double min, double max)
値を正規化する
Definition Math.hpp:154
constexpr double RadToDeg
弧度法から度数法に変換する係数
Definition Math.hpp:38
constexpr T ToDegrees(const T &rhs)
弧度法の角度を度数法に変換する
Definition Math.hpp:88
constexpr A Constrain(const A &amt, const B &low, const C &high)
値を指定された範囲内に収める (std::clamp)
Definition Math.hpp:68
constexpr int Floor(double x)
小数点切り捨て (std::floor)
Definition Math.hpp:115
constexpr auto Min(const A &lhs, const B &rhs) -> decltype(lhs, rhs)
2つの値のうち小さい方を返す (std::min)
Definition Math.hpp:48
constexpr double HalfPi
π/2
Definition Math.hpp:29
constexpr double TwoPi
π*2
Definition Math.hpp:32
constexpr int Ceil(double x)
小数点切り上げ (std::ceil)
Definition Math.hpp:129
constexpr double Map(const double value, const double inputMin, const double inputMax, const double outputMin, const double outputMax)
数値をある範囲から別の範囲に再マッピングする
Definition Math.hpp:136