13 #include "ai_constants.h"
73 inline T
MIN(T a, T b)
75 return (a < b) ? a : b;
82 inline T
MAX(T a, T b)
84 return (a > b) ? a : b;
91 inline T
MIN3(T a, T b, T c)
108 template <
typename T>
109 inline T
MIN4(T a, T b, T c, T d)
117 template <
typename T>
118 inline T
MAX4(T a, T b, T c, T d)
126 template <
typename T>
135 template <
typename T>
138 return (
AtInt64) a - (a < (T) 0);
144 template <
typename T>
153 template <
typename T>
156 return FLOOR(a + (T) 0.5);
162 template <
typename T>
165 return (a < 0) ? -1 : 1;
171 template <
typename T>
182 template <
typename T>
185 return (v > lo) ? ((v > hi) ? hi : v) : lo;
191 template <
typename T>
194 return (x >= 1) ? 0 : std::acos(x);
200 template <
typename T>
203 return ((1 - t) * a) + (b * t);
209 template <
typename T>
212 return t * t * ((T) 3 - (T) 2 * t);
218 template <
typename T>
227 template <
typename T>
228 inline T
BILERP(T s, T t, T c00, T c10, T c01, T c11)
230 T c0x =
LERP(t, c00, c01);
231 T c1x =
LERP(t, c10, c11);
232 return LERP(s, c0x, c1x);
238 template <
typename T>
239 inline T
BIHERP(T s, T t, T c00, T c10, T c01, T c11)
241 T c0x =
HERP(t, c00, c01);
242 T c1x =
HERP(t, c10, c11);
243 return HERP(s, c0x, c1x);
249 template <
typename T>
252 return (a > 0) ? ((b == (T) 0.5) ? a : std::pow(a, (std::log(b) * (T)-1.442695041))) : 0;
258 template <
typename T>
261 return (g == (T) 0.5) ? a : ((a < (T) 0.5) ? (
BIAS(a + a, (T) 1 - g) * (T) 0.5) : ((T) 1 -
BIAS((T) 2 - a - a, (T) 1 - g) * (T) 0.5));
267 template <
typename T>
270 return (x < e) ? (T) 0 : (T) 1;
276 template <
typename T>
279 return CLAMP((x + w * (T) 0.5 - e) / w, (T) 0, (T) 1);
287 template <
typename T>
290 return CLAMP((t - lo) / (hi - lo), (T) 0, (T) 1);
298 template <
typename T>
301 return HERP01(
CLAMP((t - e0) / (e1 - e0), (T) 0, (T) 1));