/*********************** * Document: SysEu_G.java ***********************/ import java.awt.*; public class SysEu_G extends Canvas { final int MaxN = 1000; //Maximum number of subintervals Dimension d; double[] tArray = new double[MaxN+1]; double[] xArray = new double[MaxN+1]; double[] yArray = new double[MaxN+1]; double x_0D, y_0D, bD, xmin, xmax, ymin, ymax, h, hspan, vspan; int[] horizCoords = new int[4]; int[] vertCoords = new int[4]; int tick, deltaTick, nI, counter = -1; Color lightLilac = new Color(204,204,255); Color lilac = new Color(153,153,204); Color darkLilac = new Color(102,102,153); Color lightGreen = new Color(204,255,204); Color darkGreen = new Color(102,153,102); public void paint(Graphics gr) { if (counter > -1) { d = this.size(); hspan = 1.25*bD; vspan = (3*(ymax - ymin) + (xmax - xmin)); gr.setColor(lightGreen); //left plane horizCoords[0] = horizScaler(0,xmin,ymin); horizCoords[1] = horizScaler(0,xmax,ymin); horizCoords[2] = horizScaler(0,xmax,ymax); horizCoords[3] = horizScaler(0,xmin,ymax); vertCoords[0] = vertScaler(0,xmin,ymin); vertCoords[1] = vertScaler(0,xmax,ymin); vertCoords[2] = vertScaler(0,xmax,ymax); vertCoords[3] = vertScaler(0,xmin,ymax); gr.fillPolygon(horizCoords,vertCoords,4); gr.setColor(Color.lightGray); //bottom plane horizCoords[0] = horizScaler(0,xmin,ymin); horizCoords[1] = horizScaler(0,xmax,ymin); horizCoords[2] = horizScaler(bD,xmax,ymin); horizCoords[3] = horizScaler(bD,xmin,ymin); vertCoords[0] = vertScaler(0,xmin,ymin); vertCoords[1] = vertScaler(0,xmax,ymin); vertCoords[2] = vertScaler(bD,xmax,ymin); vertCoords[3] = vertScaler(bD,xmin,ymin); gr.fillPolygon(horizCoords,vertCoords,4); gr.setColor(Color.gray); gr.drawLine(horizScaler(0,0,ymin), vertScaler(0,0,ymin), horizScaler(bD,0,ymin), vertScaler(bD,0,ymin)); //bottom t-axis gr.drawLine(horizScaler(0,xmin,ymin), vertScaler(0,xmin,ymin), horizScaler(0,xmax,ymin), vertScaler(0,xmax,ymin)); //bottom x-axis gr.setColor(lightLilac); //back plane horizCoords[0] = horizScaler(0,xmax,ymin); horizCoords[1] = horizScaler(0,xmax,ymax); horizCoords[2] = horizScaler(bD,xmax,ymax); horizCoords[3] = horizScaler(bD,xmax,ymin); vertCoords[0] = vertScaler(0,xmax,ymin); vertCoords[1] = vertScaler(0,xmax,ymax); vertCoords[2] = vertScaler(bD,xmax,ymax); vertCoords[3] = vertScaler(bD,xmax,ymin); gr.fillPolygon(horizCoords,vertCoords,4); gr.setColor(lilac); gr.drawLine(horizScaler(0,xmax,0), vertScaler(0,xmax,0), horizScaler(bD,xmax,0), vertScaler(bD,xmax,0)); //back t-axis gr.drawLine(horizScaler(0,xmax,ymin), vertScaler(0,xmax,ymin), horizScaler(0,xmax,ymax), vertScaler(0,xmax,ymax)); //back y-axis gr.setColor(Color.black); gr.drawLine(horizScaler(0,0,0), vertScaler(0,0,0), horizScaler(bD,0,0), vertScaler(bD,0,0)); //t-axis gr.drawString("t", horizScaler(bD,0,0)+2, vertScaler(bD,0,0)); gr.drawLine(horizScaler(0,xmin,0), vertScaler(0,xmin,0), horizScaler(0,xmax,0), vertScaler(0,xmax,0)); //x-axis gr.drawString("x", horizScaler(0,xmax,0)+2, vertScaler(0,xmax,0)-2); gr.drawLine(horizScaler(0,0,ymin), vertScaler(0,0,ymin), horizScaler(0,0,ymax), vertScaler(0,0,ymax)); //y-axis gr.drawString("y", horizScaler(0,0,ymax), vertScaler(0,0,ymax)-3); deltaTick = 1 + (int)(bD - x_0D)/12; tick = deltaTick; do { gr.drawLine(horizScaler(tick,0,0), vertScaler(tick,0,0) - 2, horizScaler(tick,0,0), vertScaler(tick,0,0)); gr.drawString(tick+"", horizScaler(tick,0,0) - 4, vertScaler(tick,0,0) + 11); tick = tick + deltaTick; } while (tick <= bD); //end of t-ticks if (counter > 0) { for (int i = 1; i <= counter; i++) { gr.setColor(Color.darkGray); gr.drawLine(horizScaler(tArray[i-1],xArray[i-1],ymin), vertScaler(tArray[i-1],xArray[i-1],ymin), horizScaler(tArray[i],xArray[i],ymin), vertScaler(tArray[i],xArray[i],ymin)); gr.setColor(darkLilac); gr.drawLine(horizScaler(tArray[i-1],xmax,yArray[i-1]), vertScaler(tArray[i-1],xmax,yArray[i-1]), horizScaler(tArray[i],xmax,yArray[i]), vertScaler(tArray[i],xmax,yArray[i])); gr.setColor(darkGreen); gr.drawLine(horizScaler(0,xArray[i-1],yArray[i-1]), vertScaler(0,xArray[i-1],yArray[i-1]), horizScaler(0,xArray[i],yArray[i]), vertScaler(0,xArray[i],yArray[i])); } for (int i = 1; i <= counter; i++) { if (i%2 == 0) gr.setColor(Color.red); else gr.setColor(Color.magenta); gr.drawLine(horizScaler(tArray[i-1],xArray[i-1],yArray[i-1]), vertScaler(tArray[i-1],xArray[i-1],yArray[i-1]), horizScaler(tArray[i],xArray[i],yArray[i]), vertScaler(tArray[i],xArray[i],yArray[i])); } } } } private int horizScaler(double t, double x, double y) { return (int)(5 + (d.width - 10)*(0.25*bD*(x - xmin)/(xmax - xmin) + t)/hspan); } private int vertScaler(double t, double x, double y) { return (int)(5 + (d.height - 16)*(3*(ymax - y) + (xmax - x))/vspan); } } //end of SysEu_G