//FlyingClocks.java import java.awt.*; import EinsteinObject; public class FlyingClocks extends EinsteinObject { int rad = 30; Einstein EIN; Color color1 = Color.blue,color2 = Color.red; public FlyingClocks(double v,Einstein EIN) { super(v,EIN); length = rad; this.EIN = EIN; } public void drawClock(double xdraw, double ydraw, double time, Color c, Graphics g) { g.setColor(new Color(241,195,161)); g.fillOval((int)(xdraw-rad),(int)(ydraw-rad),2*rad,2*rad); g.setColor(new Color(207,107,34)); g.drawOval((int)(xdraw-rad+2),(int)(ydraw-rad+2),2*rad-4,2*rad-4); g.drawOval((int)(xdraw-rad),(int)(ydraw-rad),2*rad,2*rad); g.setColor(new Color(209,169,139)); g.drawOval((int)(xdraw-rad+3),(int)(ydraw-rad+3),2*rad-6,2*rad-6); g.setColor(new Color(165,86,29)); g.drawOval((int)(xdraw-rad+1),(int)(ydraw-rad+1),2*rad-2,2*rad-2); double innerrad = 11*rad/16; double outerrad = 13*rad/16; for (int loop=0;loop<12;loop++) { g.drawLine((int)(xdraw+innerrad*Math.cos(loop*Math.PI/6)),(int)(ydraw+innerrad*Math.sin(loop*Math.PI/6)),(int)(xdraw+outerrad*Math.cos(loop*Math.PI/6)),(int)(ydraw+outerrad*Math.sin(loop*Math.PI/6))); } double arrLength = 15*rad/16; g.setColor(Color.black); double b = Math.PI/30; EIN.time.Arrow(xdraw,ydraw,xdraw+arrLength*Math.sin(b*time),ydraw-arrLength*Math.cos(b*time),g); g.setColor(c); g.fillOval((int)(xdraw-3),(int)(ydraw-3),6,6); } public void draw(boolean whichFrame,Graphics g) { Rectangle r = EIN.space.getBounds(); if (whichFrame == Reality.OBSERVER_FRAME) { Reality real = EIN.getReality(); drawClock(5+rad,r.height-5-rad,real.myTime,Color.red,g); drawClock(EIN.space.mapX(real.theirX),EIN.space.mapY(0),real.theirTime,Color.blue,g); } else { Reality real = EIN.mover.getReality(); drawClock(5+rad,r.height-5-rad,real.theirTime,Color.red,g); drawClock(EIN.space.mapX(real.myX),EIN.space.mapY(0),real.myTime,Color.blue,g); } } public void timeDraw(boolean whichFrame,Graphics g) { Reality real = EIN.getReality(); if (EIN.frame == Reality.OBJECT_FRAME) { real = EIN.mover.getReality(); color1 = Color.blue; color2 = Color.red; } else { color1 = Color.red; color2 = Color.blue; } EIN.offscr2.setColor(color1); EIN.time.drawPoint(real.myX,real.myTime,g); EIN.offscr2.setColor(color2); EIN.time.drawPoint(real.theirX,real.myTime,g); } }