4 void mean_accumulate(entity e, .float a, .float c, float mean, float value, float weight)
9 e.(a) *= pow(value, weight);
11 e.(a) += pow(value, mean) * weight;
15 float mean_evaluate(entity e, .float a, .float c, float mean)
20 return pow(e.(a), 1.0 / e.(c));
22 return pow(e.(a) / e.(c), 1.0 / mean);
25 #define MEAN_ACCUMULATE(prefix,v,w) mean_accumulate(self,prefix##_accumulator,prefix##_count,prefix##_mean,v,w)
26 #define MEAN_EVALUATE(prefix) mean_evaluate(self,prefix##_accumulator,prefix##_count,prefix##_mean)
27 #define MEAN_DECLARE(prefix,m) float prefix##_mean = m; .float prefix##_count, prefix##_accumulator
33 Returns a random number between -1.0 and 1.0
38 return 2 * (random () - 0.5);
44 Angc used for animations
49 float angc (float a1, float a2)
72 float fsnap(float val,float fsize)
74 return rint(val / fsize) * fsize;
77 vector vsnap(vector point,float fsize)
81 vret.x = rint(point.x / fsize) * fsize;
82 vret.y = rint(point.y / fsize) * fsize;
83 vret.z = ceil(point.z / fsize) * fsize;
88 vector lerpv(float t0, vector v0, float t1, vector v1, float t)
90 return v0 + (v1 - v0) * ((t - t0) / (t1 - t0));