//BarnLadder.java import EinsteinObject; import java.awt.Graphics; import java.awt.Color; public class BarnLadder extends EinsteinObject { int L; Color ladder = new Color(125,69,10); Color barn = new Color(157,4,43); int bstart = 200; int height = 8; public BarnLadder(double v, Einstein EIN) { super(v,EIN); length = 12; L = 2*length; } public void draw(boolean whichFrame, Graphics g) { Reality displayReality; double position,pB; double gamma,bgamma; if (whichFrame == Reality.OBJECT_FRAME) { displayReality = getReality(); position = displayReality.myX; gamma = 1; bgamma = displayReality.gamma; pB = bstart + displayReality.theirX; } else { displayReality = EIN.getReality(); position = displayReality.theirX; gamma = displayReality.gamma; bgamma = 1; pB = bstart; } g.setColor(barn); g.fillRect(EIN.space.mapX(pB-(length/bgamma)),EIN.space.mapY(0)-(int)(0.5*(EIN.space.mapX(L)-EIN.space.mapX(0))),EIN.space.mapX(L/bgamma)-EIN.space.mapX(0),EIN.space.mapX(L)-EIN.space.mapX(0)); int[] xP = {EIN.space.mapX(pB-(length/bgamma)-(1/bgamma)),EIN.space.mapX(pB),EIN.space.mapX(pB+(length/bgamma)+(1/bgamma))}; int[] yP = {EIN.space.mapY(0)-(int)(0.5*(EIN.space.mapX(L)-EIN.space.mapX(0))),EIN.space.mapY(1)-(int)(0.5*(EIN.space.mapX(L)-EIN.space.mapX(0))),EIN.space.mapY(0)-(int)(0.5*(EIN.space.mapX(L)-EIN.space.mapX(0)))}; g.fillPolygon(xP,yP,3); g.setColor(ladder); for (int loop=-1;loop<=-1;loop++) { g.drawLine(EIN.space.mapX(position - L/gamma),EIN.space.mapY(0)+height+loop,EIN.space.mapX(position+L/gamma),EIN.space.mapY(0)+height+loop); g.drawLine(EIN.space.mapX(position - L/gamma),EIN.space.mapY(0)-height+loop,EIN.space.mapX(position+L/gamma),EIN.space.mapY(0)-height+loop); } for (int loop=0;loop<9;loop++) { g.drawLine(EIN.space.mapX(position-L/gamma+((loop*.1111)+.0556)*((2*L)/gamma)),EIN.space.mapY(0)+height,EIN.space.mapX(position-L/gamma+((loop*.1111)+.0556)*((2*L)/gamma)),EIN.space.mapY(0)-height); } EIN.showStatus("x0= "+EIN.space.mapX(position-L/gamma+((0/9)+(1/18))*(L/gamma))+"x1= "+EIN.space.mapX(position-L/gamma+((1/9)+(1/18))*(L/gamma))+"x0= "+EIN.space.mapX(position-L/gamma+((3/9)+(1/18))*(L/gamma))+" y= "+EIN.space.mapY(-length/bgamma)+" w= "+L+" ys= "+(EIN.space.mapY(L)-EIN.space.mapY(0))); } public void timeDraw(boolean whichFrame,Graphics g) { Reality real = EIN.getReality(); double co = 1; double co2= 5; double gamma = real.gamma; double bgamma = 1; double pB = bstart; double pBtime = real.myTime; if (EIN.frame == Reality.OBJECT_FRAME) { gamma = 1; real = EIN.mover.getReality(); g.setColor(Color.blue); EIN.time.drawPoint(real.myX-(L/gamma),real.myTime,g); EIN.time.drawPoint(real.myX+(L/gamma),real.myTime,g); g.setColor(ladder); EIN.time.drawLine(real.myX-(L/gamma),(real.myTime),(-(L/gamma)),0,g); EIN.time.drawLine(real.myX+(L/gamma),(real.myTime),(+(L/gamma)),0,g); bgamma = real.gamma; pB = bstart + real.theirX; pBtime = real.myTime; g.setColor(Color.red); EIN.time.drawPoint((real.theirX),(real.myTime),g); g.setColor(Color.black); EIN.time.drawLine((real.theirX),(real.myTime),0,0,g); } else { g.setColor(Color.red); EIN.time.drawPoint((real.myX),(real.myTime),g); g.setColor(Color.blue); EIN.time.drawPoint((real.theirX-(L/gamma)),(real.myTime),g); EIN.time.drawPoint((real.theirX+(L/gamma)),(real.myTime),g); g.setColor(ladder); EIN.time.drawLine((real.theirX-((L)/gamma)),(real.myTime),-(L/gamma),0,g); EIN.time.drawLine((real.theirX+(L/gamma)),(real.myTime),(L/gamma),0,g); g.setColor(Color.black); EIN.time.drawLine((real.myX),(real.myTime),0,0,g); } g.setColor(barn); EIN.time.drawPoint((pB-(length/bgamma)),(pBtime),g); EIN.time.drawPoint((pB+(length/bgamma)),(pBtime),g); EIN.time.drawLine((pB-(length/bgamma)),(pBtime),(bstart-(length/bgamma)),0,g); EIN.time.drawLine((pB+(length/bgamma)),(pBtime),(bstart+(length/bgamma)),0,g); //EIN.showStatus("pB : "+pB+"Barn Gamma= "+bgamma+"pbTime= "+pBtime+" ? "+(length/bgamma)); } }