import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.applet.*; import java.awt.geom.*; import java.math.*; /**This is the wrapper class for the configuration of bixes */ public class IntervalBoxConfiguration { IntervalBox[] B=new IntervalBox[5]; public IntervalBoxConfiguration() {} /**prints out the box**/ public void print() { System.out.println(""); for(int i=0;i<4;++i) B[i].print(); } public static IntervalBoxConfiguration create(BoxConfiguration X) { IntervalBoxConfiguration Y=new IntervalBoxConfiguration(); for(int i=0;i<5;++i) { Y.B[i]=IntervalBox.create(X.B[i]); } return(Y); } /**This returns 1 if each dyadic square/segment in the configuration is contained in a small square about the relevant point of the TBP. The small square has sidelength 2^{-k}**/ public static int near(int k,IntervalComplex[] W,IntervalBoxConfiguration X) { if(X.B[0].confine(W[0],k)==0) return(0); if(X.B[1].confine(W[1],k)==0) return(0); if(X.B[2].confine(W[2],k)==0) return(0); if(X.B[3].confine(W[3],k)==0) return(0); return(1); } /**These routines extract thr 128 vertex configurations from a box configuration**/ /**This is the main routine. Here n=0,...,127 **/ public IntervalComplex[] getConfiguration(int n) { int[] q=binary7(n); IntervalComplex[] Z=new IntervalComplex[4]; Z[0]=B[0].getVertex1(q[0]); Z[1]=B[1].getVertex0(q[1],q[2]); Z[2]=B[2].getVertex0(q[3],q[4]); Z[3]=B[3].getVertex0(q[5],q[6]); return(Z); } /**converts the numbers 0,...,127 to binary **/ public static int[] binary7(int n) { int[] x=new int[7]; int m=n; for(int count=0;count<7;++count) { x[6-count]=m%2; m=(m-x[6-count])/2; } return(x); } /**This last routine computes the volume in a way that avoids roundoff error.**/ public static int volumeLog(BoxConfiguration X) { int log = X.B[0].k; for(int i=1;i<4;++i) log=log+2*X.B[i].k; return(log); } }