12concept Numeric = std::integral<T> || std::floating_point<T>;
14constexpr float pi = 3.1415926535897932384626433f;
18 return f > 0 ? (int)(f + 0.5f) : (int)(f - 0.5f);
26template<
typename T,
typename TB>
27constexpr T
mix(
const T a,
const T b, TB amount)
29 return a + (b - a) * amount;
32template<
typename T,
typename TB>
33constexpr T
bezier(
const T p0,
const T p1,
const T p2,
const T p3, TB amount)
36 const T c10 =
mix(p0, p1, amount);
37 const T c11 =
mix(p1, p2, amount);
38 const T c12 =
mix(p2, p3, amount);
40 const T c20 =
mix(c10, c11, amount);
41 const T c21 =
mix(c11, c12, amount);
43 return mix(c20, c21, amount);
46template<
typename T,
typename TB>
47constexpr T
mix_polynomial(
const TB time[],
const T data[],
int samples, TB amount, T init)
50 for(
int i = 0; i < samples; i++)
53 for(
int j = 0; j < samples; j++)
55 term = term * (amount - time[j]) / TB(time[i] - time[j]);
63 return rand() / (float)(RAND_MAX);
78 return 2.0f *
pi * (rand() / std::nextafter((
float)RAND_MAX, std::numeric_limits<float>::max()));
126 constexpr operator int()
const
130 constexpr operator float()
const
139 return std::min(a, b);
144 return std::min(std::min(a, b), c);
149 return std::max(a, b);
154 return std::max(std::max(a, b), c);
159 return a < T(0) ? -a : a;
165 return lower <= a && a <= upper;
int value
Definition math.h:105
constexpr int get() const
Definition math.h:112
constexpr void set(int v)
Definition math.h:108
constexpr fxp & operator=(float v)
Definition math.h:121
constexpr fxp & operator=(int v)
Definition math.h:116
constexpr float pi
Definition math.h:14
constexpr T minimum(T a, T b)
Definition math.h:137
constexpr bool in_range(T a, T lower, T upper)
Definition math.h:163
float random_float()
Definition math.h:61
constexpr int fx2i(int v)
Definition math.h:98
constexpr int fxpscale
Definition math.h:81
constexpr T mix_polynomial(const TB time[], const T data[], int samples, TB amount, T init)
Definition math.h:47
constexpr float fx2f(int v)
Definition math.h:88
float random_angle()
Definition math.h:76
constexpr T mix(const T a, const T b, TB amount)
Definition math.h:27
constexpr int i2fx(int v)
Definition math.h:94
constexpr int round_to_int(float f)
Definition math.h:16
constexpr T maximum(T a, T b)
Definition math.h:147
constexpr int f2fx(float v)
Definition math.h:84
constexpr int round_truncate(float f)
Definition math.h:21
constexpr T absolute(T a)
Definition math.h:157
constexpr T bezier(const T p0, const T p1, const T p2, const T p3, TB amount)
Definition math.h:33