viewportTrans static method

AffineTransformation viewportTrans(
  1. Envelope srcEnv,
  2. Envelope viewEnv
)

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;
}