if (origAOI == null)
origAOI = getBounds2D();
Rectangle2D aoiR = origAOI.getBounds2D();
RenderContext srcRc = new RenderContext(srcAt, aoiR, rh);
RenderedImage mapRed = map.createRendering(srcRc);
if (mapRed == null) return null;
// Grow the area of interest in user space. to account for
// the max surround needs of displacement map.
aoiR = new Rectangle2D.Double(aoiR.getX() - scale/2,
aoiR.getY() - scale/2,
aoiR.getWidth() + scale,
aoiR.getHeight() + scale);
Rectangle2D displacedRect = displaced.getBounds2D();
if ( ! aoiR.intersects(displacedRect) )
return null;
aoiR = aoiR.createIntersection(displacedRect);
srcRc = new RenderContext(srcAt, aoiR, rh);
RenderedImage displacedRed = displaced.createRendering(srcRc);
if (displacedRed == null) return null;
mapRed = convertSourceCS(mapRed);