code: double b( int i, double t ) {
          switch( i ) {
          case -2:
              return (((-t + 3) * t - 3) * t + 1) / 6;
          case -1:
              return (((3 * t - 6) * t) * t + 4) / 6;
          case 0:
              return (((-3 * t + 3) * t + 3) * t + 1) / 6;
          case 1:
              return (t * t * t) / 6;
          }
          return 0; // we only get here if an invalid i is specified
      }
docs: the basis function for a cubic B spline