import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.applet.*; import java.awt.geom.*; import java.math.*; /**this is a wrapper class for Wedges and Quads**/ public class Poly { Complex[] z=new Complex[4]; int type; int count; public Poly() {} public Poly(Wedge W) { for(int i=0;i<3;++i) z[i]=new Complex(W.z[i]); type=W.type; count=3; } public Poly(Quad W) { for(int i=0;i<4;++i) z[i]=new Complex(W.z[i]); type=W.type; count=4; } public Wedge toWedge() { Wedge W=new Wedge(); for(int i=0;i<3;++i) { W.z[i]=this.z[i]; W.type=type; } return(W); } public Quad toQuad() { Quad W=new Quad(); for(int i=0;i<4;++i) { W.z[i]=this.z[i]; W.type=type; } return(W); } /**This is the complex affine map that carries z1,z2 to w1,w2**/ public static Complex affineMap(Complex z1,Complex z2,Complex w1,Complex w2, Complex A) { Complex[] u=new Complex[10]; u[0]=Complex.times(A,w1); u[1]=Complex.times(A,w2); u[2]=Complex.times(w2,z1); u[3]=Complex.times(w1,z2); u[4]=Complex.minus(z1,z2); u[5]=Complex.minus(u[0],u[1]); u[6]=Complex.minus(u[2],u[3]); u[7]=Complex.plus(u[5],u[6]); u[8]=Complex.divide(u[7],u[4]); return(u[8]); } public static Poly affineMap(Poly Z,Poly W,Poly A) { Complex z1=new Complex(Z.z[0]); Complex z2=new Complex(Z.z[1]); Complex w1=new Complex(W.z[0]); Complex w2=new Complex(W.z[1]); Poly B=new Poly(); for(int i=0;iX[i].z[j].x) x1=X[i].z[j].x; if(x2X[i].z[j].y) y1=X[i].z[j].y; if(y2