#include "proctext.h" #include "noise.h" float catrom2(float d) { #define SAMPRATE 100 /* table entries per unit distance */ #define NENTRIES (4*SAMPRATE+1) float x; int i; static float table[NENTRIES]; static int initialized = 0; if (d >= 4) return 0; if (!initialized) { for (i = 0; i < NENTRIES; i++) { x = i/(float) SAMPRATE; x = sqrtf(x); if (x < 1) table[i] = 0.5 * (2+x*x*(-5+x*3)); else table[i] = 0.5 * (4+x*(-8+x*(5-x))); } initialized = 1; } d = d*SAMPRATE + 0.5; i = FLOOR(d); if (i >= NENTRIES) return 0; return table[i]; }