home *** CD-ROM | disk | FTP | other *** search
- #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 = (float)sqrt((double)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];
- }
-