#include #include main(int argc,char **argv) { FILE *fp,*fpi; int width, height, i,j,x,y; double r,d,dx,dy; double r2; char buf[80]; char *img,*p; fpi = fopen(*++argv,"rb"); fgets(buf,50,fpi); fgets(buf,50,fpi); sscanf(buf,"%d %d",&width,&height); fgets(buf,50,fpi); img = (char *)malloc(width*height); p = img; for(j=0;j0.0)?r2:0.0000000000001; r = sqrt(r2); d = 0.5 * r - 0.0001 * r * r * r; /* printf("%f %f\n",r,d); */ dx = d*(i-width/2)/r; dy = d*(j-height/2)/r; x = i - (int)dx; if (x < 0) x = 0; if (x >= width) x = width -1; y = j - (int)dy; if (y < 0) y = 0; if (y >= height) y = height -1; /* printf("%d %d %d %d\n",i,j,x,y); */ fputc(*(img+y*width+x),fp); } } fclose(fp); }