Tform.java

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