C:\ece538\2019\transform>java Tform transform AffineTransform[[0.866025403784439, -0.5, 3.0], [0.5, 0.866025403784439, 2.0]] Forward transform [ 0.8660 -0.5000 3.000] [ 0.5000 0.8660 2.000] [ 0.000 0.000 1.000] Inverse transform [ 0.8660 0.5000 -3.598] [ -0.5000 0.8660 -0.2321] [ 0.000 0.000 1.000] src 1.00000 2.00000 dst 2.86603 4.23205 inv 1.00000 2.00000 concatenate transforms identity matrix
Tform.java
import java.awt.geom.Point2D; import java.awt.geom.AffineTransform; public class Tform { public static void main(String [] args) { AffineTransform at = new AffineTransform(); at.translate(3.0,2.0); at.rotate(30.0*Math.PI/180.0); System.out.println("transform " + at); System.out.format("%nForward transform %n%n"); showMatrix(at); System.out.format("%nInverse transform %n%n"); try { AffineTransform invT = at.createInverse(); showMatrix(invT); } catch(Exception e) { System.err.println("Exception " + e); } // transform a point Point2D src = new Point2D.Double(1.0,2.0); Point2D dst = new Point2D.Double(); System.out.println(); String fmt1 = "%s %g %g%n"; System.out.format( fmt1,"src" , src.getX(),src.getY()); at.transform(src,dst); System.out.format(fmt1 , "dst" , dst.getX(),dst.getY()); try { Point2D dst2 = new Point2D.Double(); at.inverseTransform(dst,dst2); System.out.format(fmt1,"inv",dst2.getX(),dst2.getY()); } catch(Exception e) { System.err.println("Exception " + e); } // concatenate transforms System.out.format("%nconcatenate transforms%n%n"); AffineTransform cf = (AffineTransform) at.clone(); try { cf.concatenate(cf.createInverse()); if (cf.isIdentity()) System.out.println("identity matrix"); else showMatrix(cf); } catch(Exception e) { System.err.println("Exception " + e); } } static void showMatrix(AffineTransform at) { double [] T = new double[6]; at.getMatrix(T); String fmt = "[ %8.4g %8.4g %8.4g]%n"; System.out.format(fmt,T[0],T[2],T[4]); System.out.format(fmt,T[1],T[3],T[5]); System.out.format(fmt,0.0,0.0,1.0); } }
Maintained by John Loomis, updated Wed Jan 30 14:05:34 2019