public FImage2D rotate( float angle ) { FImage2D r = new FImage2D( xsize, ysize ); float x,y; float ca = (float) Math.cos( angle); float sa = (float) Math.sin( angle); for (int xa = 0; xa < xsize; xa++) { for(int ya = 0; ya < ysize; ya++) { x = (xa* ca + ya * sa)+127.5f; y = (-xa* sa + ya * ca)+127.5f; r.set(xa,ya,pv(x,y,1)); } // enumerate all (xa, ya) in resultant image // calculate the corresponding (x,y) in original image // use interpolation to set r(xa,ya) to original(x,y) } return r;