12concept Numeric = std::integral<T> || std::floating_point<T>;
14constexpr float pi = 3.1415926535897932384626433f;
19 return f > 0 ? (int)(f + 0.5f) : (int)(f - 0.5f);
27template<
typename T,
typename TB>
28constexpr T
mix(
const T a,
const T b, TB amount)
30 return a + (b - a) * amount;
33template<
typename T,
typename TB>
34constexpr T
bezier(
const T p0,
const T p1,
const T p2,
const T p3, TB amount)
37 const T c10 =
mix(p0, p1, amount);
38 const T c11 =
mix(p1, p2, amount);
39 const T c12 =
mix(p2, p3, amount);
41 const T c20 =
mix(c10, c11, amount);
42 const T c21 =
mix(c11, c12, amount);
44 return mix(c20, c21, amount);
47template<
typename T,
typename TB>
48constexpr T
mix_polynomial(
const TB time[],
const T data[],
int samples, TB amount, T init)
51 for(
int i = 0; i < samples; i++)
54 for(
int j = 0; j < samples; j++)
56 term = term * (amount - time[j]) / TB(time[i] - time[j]);
64 return rand() / (float)(RAND_MAX);
79 return 2.0f *
pi * (rand() / std::nextafter((
float)RAND_MAX, std::numeric_limits<float>::max()));
127 constexpr operator int()
const
131 constexpr operator float()
const
140 return std::min(a, b);
145 return std::min(std::min(a, b), c);
150 return std::max(a, b);
155 return std::max(std::max(a, b), c);
160 return a < T(0) ? -a : a;
166 return lower <= a && a <= upper;
int value
Definition math.h:106
constexpr int get() const
Definition math.h:113
constexpr void set(int v)
Definition math.h:109
constexpr fxp & operator=(float v)
Definition math.h:122
constexpr fxp & operator=(int v)
Definition math.h:117
constexpr float pi
Definition math.h:14
constexpr T minimum(T a, T b)
Definition math.h:138
constexpr bool in_range(T a, T lower, T upper)
Definition math.h:164
float random_float()
Definition math.h:62
constexpr int fx2i(int v)
Definition math.h:99
constexpr int fxpscale
Definition math.h:82
constexpr float normalized_golden_angle
Definition math.h:15
constexpr T mix_polynomial(const TB time[], const T data[], int samples, TB amount, T init)
Definition math.h:48
constexpr float fx2f(int v)
Definition math.h:89
float random_angle()
Definition math.h:77
constexpr T mix(const T a, const T b, TB amount)
Definition math.h:28
constexpr int i2fx(int v)
Definition math.h:95
constexpr int round_to_int(float f)
Definition math.h:17
constexpr T maximum(T a, T b)
Definition math.h:148
constexpr int f2fx(float v)
Definition math.h:85
constexpr int round_truncate(float f)
Definition math.h:22
constexpr T absolute(T a)
Definition math.h:158
constexpr T bezier(const T p0, const T p1, const T p2, const T p3, TB amount)
Definition math.h:34