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.javaimport 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