code: public static RectangleLength2D_I32 boundBox( int srcWidth , int srcHeight ,
  												  Point2D_F32 work,
  												  PixelTransform<Point2D_F32> transform )
  	{
  		int x0,y0,x1,y1;
  
  		transform.compute(0,0,work);
  		x0=x1=(int)work.x;
  		y0=y1=(int)work.y;
  
  		for( int i = 1; i < 4; i++ ) {
  			if( i == 1 )
  				transform.compute(srcWidth,0,work);
  			else if( i == 2 )
  				transform.compute(0,srcHeight,work);
  			else if( i == 3 )
  				transform.compute(srcWidth-1,srcHeight,work);
  
  			if( work.x < x0 )
  				x0 = (int)work.x;
  			else if( work.x > x1 )
  				x1 = (int)work.x;
  			if( work.y < y0 )
  				y0 = (int)work.y;
  			else if( work.y > y1 )
  				y1 = (int)work.y;
  		}
  
  		return new RectangleLength2D_I32(x0,y0,x1-x0,y1-y0);
  	}
docs: Finds an axis-aligned bounding box which would contain a image after it has been transformed.
  The returned bounding box can be larger then the original image.
  
  @param srcWidth Width of the source image
  @param srcHeight Height of the source image
  @param transform Transform being applied to the image
  @return Bounding box