viewportTrans static method
Implementation
static AffineTransformation viewportTrans(Envelope srcEnv, Envelope viewEnv) {
// works even if W or H are zero, thanks to Java infinity value.
double scaleW = viewEnv.getWidth() / srcEnv.getWidth();
double scaleH = viewEnv.getHeight() / srcEnv.getHeight();
// choose minimum scale to ensure source fits viewport
double scale = math.min(scaleW, scaleH);
Coordinate centre = srcEnv.centre()!;
Coordinate viewCentre = viewEnv.centre()!;
// isotropic scaling
AffineTransformation trans = AffineTransformation.scaleInstanceScaleXY(
scale, scale, centre.x, centre.y);
// translate using envelope centres
trans.translate(viewCentre.x - centre.x, viewCentre.y - centre.y);
return trans;
}