import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.applet.*; import java.awt.geom.*; import java.math.*; public class TorusPartitionMarkings { public TorusPartitionMarkings() {} public void drawFramePlus(Graphics2D g,Manager M,Color COL) { double A= M.PE.A; float x=(float)(1+A); AffineTransform AT=new AffineTransform(); GeneralPath gp=new GeneralPath(); for(int i=-2;i<=2;++i) { for(int j=-2;j<=2;++j) { AT=AffineTransform.getTranslateInstance(i*(1+A)+j*(1-A),j*(1+A)); gp.moveTo(0,0); gp.lineTo(0,x); gp.lineTo(x,x); gp.lineTo(x,0); gp.closePath(); gp.transform(AT); gp=M.PE.transform(gp); g.setColor(COL); g.draw(gp); gp.moveTo(1,0); gp.lineTo(1,x); gp.closePath(); gp.transform(AT); gp=M.PE.transform(gp); g.setColor(COL); g.draw(gp); gp.moveTo(x-1,0); gp.lineTo(x-1,x); gp.closePath(); gp.transform(AT); gp=M.PE.transform(gp); g.setColor(COL); g.draw(gp); gp.moveTo(0,1); gp.lineTo(x,1); gp.closePath(); gp.transform(AT); gp=M.PE.transform(gp); g.setColor(COL); g.draw(gp); gp.moveTo(0,x-1); gp.lineTo(x,x-1); gp.closePath(); gp.transform(AT); gp=M.PE.transform(gp); g.setColor(COL); g.draw(gp); } } } public void drawFrameMinus(Graphics2D g,Manager M,Color COL) { AffineTransform AA=new AffineTransform(); double A= M.PE.A; int shift=M.C.CON_P.PEC.SHIFT.mode; if(shift==0) AA=AffineTransform.getTranslateInstance(2+A,1); if(shift==1) AA=AffineTransform.getTranslateInstance(1,1); if(shift==2) AA=AffineTransform.getTranslateInstance(-1,-1); if(shift==3) AA=AffineTransform.getTranslateInstance(0,0); float x=(float)(1+A); AffineTransform AT=new AffineTransform(); GeneralPath gp=new GeneralPath(); for(int i=-2;i<=2;++i) { for(int j=-2;j<=2;++j) { AT=AffineTransform.getTranslateInstance(i*(1+A)+j*(1-A),j*(1+A)); gp.moveTo(0,0); gp.lineTo(0,x); gp.lineTo(x,x); gp.lineTo(x,0); gp.closePath(); gp.transform(AT); gp.transform(AA); gp=M.PE.transform(gp); g.setColor(COL); g.draw(gp); gp.moveTo(1,0); gp.lineTo(1,x); gp.closePath(); gp.transform(AT); gp.transform(AA); gp=M.PE.transform(gp); g.setColor(COL); g.draw(gp); gp.moveTo(x-1,0); gp.lineTo(x-1,x); gp.closePath(); gp.transform(AT); gp.transform(AA); gp=M.PE.transform(gp); g.setColor(COL); g.draw(gp); gp.moveTo(0,1); gp.lineTo(x,1); gp.closePath(); gp.transform(AT); gp.transform(AA); gp=M.PE.transform(gp); g.setColor(COL); g.draw(gp); gp.moveTo(0,x-1); gp.lineTo(x,x-1); gp.closePath(); gp.transform(AT); gp.transform(AA); gp=M.PE.transform(gp); g.setColor(COL); g.draw(gp); } } } public void drawCoords(Graphics2D g,Manager M) { double A= M.PE.A; float a=(float)(A); GeneralPath gp=new GeneralPath(); g.setColor(new Color(255,0,255)); gp.moveTo(0,-1-a); gp.lineTo(0,1+a); gp=M.PE.transform(gp); g.draw(gp); g.fill(gp); gp.reset(); gp.moveTo(-1-a,0); gp.lineTo(1+a,0); gp=M.PE.transform(gp); g.draw(gp); g.fill(gp); gp.reset(); } public void drawCoordsSpecial(Graphics2D g,Manager M) { double A= M.PE.A; float a=(float)(A); GeneralPath gp=new GeneralPath(); g.setColor(new Color(50,80,240)); int choice=M.C.CON_P.PEC.IS[2].val; gp.moveTo(0,-1-a); gp.lineTo(0,1+a); gp.moveTo(a,-1-a); gp.lineTo(a,1+a); gp.moveTo(1-a,-1-a); gp.lineTo(1-a,1+a); gp.moveTo(1,-1-a); gp.lineTo(1,1+a); gp.moveTo(1+a,-1-a); gp.lineTo(1+a,1+a); gp=M.PE.transform(gp); g.draw(gp); g.fill(gp); gp.reset(); gp.moveTo(-1-a,0); gp.lineTo(1+a,0); gp.moveTo(-1-a,a); gp.lineTo(1+a,a); gp.moveTo(-1-a,1-a); gp.lineTo(1+a,1-a); gp.moveTo(-1-a,1); gp.lineTo(1+a,1); gp.moveTo(-1-a,1+a); gp.lineTo(1+a,1+a); gp=M.PE.transform(gp); g.draw(gp); g.fill(gp); gp.reset(); g.setColor(new Color(255,255,255,100)); gp.moveTo(0,0); gp.lineTo(0,1); gp.closePath(); g.setStroke(new BasicStroke(3)); gp=M.PE.transform(gp); g.draw(gp); g.fill(gp); gp.reset(); gp.moveTo(a,0); gp.lineTo(0,0); gp.closePath(); gp=M.PE.transform(gp); g.draw(gp); g.fill(gp); g.setStroke(new BasicStroke(1)); int[] pp=M.C.getParameter(); int p=pp[0]; int q=pp[1]; for(int i=0;i