xx = 0.0; for (i=0;i<64;i++) { lag[0][i] = (float) ((xx)*(xx-1.0)*(xx-2.0) / -6.0); lag[1][i] = (float) ((xx+1.0)*(xx-1.0)*(xx-2.0) / 2.0); lag[2][i] = (float) ((xx+1.0)*(xx)*(xx-2.0) / -2.0); lag[3][i] = (float) ((xx)*(xx+1.0)*(xx-1.0) / 6.0); xx+= 1.0/64.0; } for (i=0;i= 1) && (col >= 1) && (row < IMAGE_HEIGHT - 3) && (col < IMAGE_WIDTH - 3)) { yfrac = (int)((in_y - (float)(row)) * 64.0); xfrac = (int)((in_x - (float)(col)) * 64.0); sum0= (lag[0][xfrac] * input_image[row-1][col-1]) + (lag[1][xfrac] * input_image[row-1][col]) + (lag[2][xfrac] * input_image[row-1][col+1]) + (lag[3][xfrac] * input_image[row-1][col+2]); sum1= (lag[0][xfrac] * input_image[row][col-1]) + (lag[1][xfrac] * input_image[row][col]) + (lag[2][xfrac] * input_image[row][col+1]) + (lag[3][xfrac] * input_image[row][col+2]); sum2= (lag[0][xfrac] * input_image[row+1][col-1]) + (lag[1][xfrac] * input_image[row+1][col]) + (lag[2][xfrac] * input_image[row+1][col+1]) + (lag[3][xfrac] * input_image[row+1][col+2]); sum3= (lag[0][xfrac] * input_image[row+2][col-1]) + (lag[1][xfrac] * input_image[row+2][col]) + (lag[2][xfrac] * input_image[row+2][col+1]) + (lag[3][xfrac] * input_image[row+2][col+2]); output_image[i][j] = (unsigned char)((lag[0][yfrac] * sum0) + (lag[1][yfrac] * sum1) + (lag[2][yfrac] * sum2) + (lag[3][yfrac] * sum3)); } else output_image[i][j] = 0; } }