private AffineTransform calcTransform ( Rectangle2D screen , Bounds world ) { // scale to limiting dimension double xs = screen . getWidth ( ) / ( world . getRight ( ) - world . getLeft ( ) ) ; double ys = screen . getHeight ( ) / ( world . getLower ( ) - world . getUpper ( ) ) ; AffineTransform cat = new AffineTransform ( ) ; cat . setToScale ( xs , ys ) ; cat . translate ( - world . getLeft ( ) , - world . getUpper ( ) ) ; if ( debugTransform ) { System . out . println ( "TPanel calcTransform = " ) ; System . out . println ( " screen = " + screen ) ; System . out . println ( " world = " + world ) ; System . out . println ( " transform = " + cat . getScaleX ( ) + " " + cat . getShearX ( ) + " " + cat . getTranslateX ( ) ) ; System . out . println ( " " + cat . getShearY ( ) + " " + cat . getScaleY ( ) + " " + cat . getTranslateY ( ) ) ; Point2D src = new Point2D . Double ( world . getLeft ( ) , world . getUpper ( ) ) ; Point2D dst = new Point2D . Double ( 0.0 , 0.0 ) ; System . out . println ( " upper left pt = " + src ) ; System . out . println ( " transform = " + cat . transform ( src , dst ) ) ; src = new Point2D . Double ( world . getRight ( ) , world . getLower ( ) ) ; System . out . println ( " lower right pt = " + src ) ; System . out . println ( " transform = " + cat . transform ( src , dst ) ) ; } return cat ; }
map world coords to screen coords .