import java.applet.Applet; import java.awt.event.*; import java.awt.*; import java.awt.geom.*; import java.math.*; public class StripRenorm { /**This class contains routines that deal with the calculations that go into the proof of the Fundamental Orbit Theorem and the Near Reduction Theorem. That is, they deal with the A-cores and B-cores that lie in the strip Sigma.*/ /**In these routines the point u is assumed to be an A-marker. That is, theta(u) lies in the A-renorm set. This routine renormalizes u and then takes the point in the band that minimizes the horizontal distance to the origin.**/ public static Complex renorm(Complex u,boolean reverse) { Vector VA=TorusMap.theta(u); Vector VB=mapAtoB(VA); Complex z=matchB(VB); z=minimizeB(z,reverse); return(z); } /**This renormalizes u and returns all the values in the B-band that is the renormalization of the A-band containing u.*/ public static Complex[] renormBand(Complex u,boolean reverse) { Vector VA=TorusMap.theta(u); Vector VB=mapAtoB(VA); Complex z=matchB(VB); return(bandListB(z,reverse)); } /**This routine searches through the A-core of u, and finds the point that minimizes the horizontal distance to the origin.*/ public static Complex minimizeA(Complex u) { Complex[] LIST=bandListA(u); double min=1000; Complex z2=new Complex(u); for(int i=0;itest) { min=test; z2=new Complex(LIST[i]); } } return(z2); } /**This gets the full list of all the points in the A-core of u.**/ public static Complex[] bandListA(Complex u) { Complex[] LIST=new Complex[1000]; PinwheelMap PIN=new PinwheelMap(); Complex z1=new Complex(u); boolean in=false; int count=0; while((count<1000)&&(in==false)) { LIST[count]=new Complex(z1); ++count; z1=PIN.pi(z1); in=testInside(z1,true); } Complex[] LIST2=new Complex[count]; for(int i=0;itest) { min=test; z2=new Complex(LIST[i]); } } return(z2); } /**This routine returns all the points in the B-core of v.**/ public static Complex[] bandListB(Complex v,boolean reverse) { Complex[] LIST=new Complex[1000]; PinwheelMap PIN=new PinwheelMap(); Complex z1=new Complex(v); boolean in=false; int count=0; while((count<1000)&&(in==false)) { LIST[count]=new Complex(z1); ++count; if(reverse==false) z1=PIN.pi(z1); if(reverse==true) z1=PIN.piInverse(z1); in=testInside(z1,false); } Complex[] LIST2=new Complex[count]; for(int i=0;i1) W1.x[0]=W1.x[0]-2; if(W2.x[0]<1) W2.x[0]=W2.x[0]+2; if(W2.x[1]