/*********************** * Document: IEM_G.java ***********************/ import java.awt.*; public class IEM_G extends Canvas { final int MaxN = 100; //Maximum number of subintervals Dimension d; double[] xArray = new double[MaxN+1]; double[] yArray = new double[MaxN+1]; double x_0D, y_0D, bD, ymin, ymax, h1, py, dir, scale; int tick, deltaTick, nI, counter = -1, adjust; boolean predict; public void paint(Graphics g) { if (counter > -1) { d = this.size(); g.setColor(Color.black); g.drawLine(0, yScaler(0.0), d.width, yScaler(0.0)); //x-axis if (x_0D*bD <= 0) g.drawLine(xScaler(0.0), 0, xScaler(0.0), d.height - 6); //y-axis tick = (int)x_0D; // start of x-ticks deltaTick = 1 + (int)(bD - x_0D)/12; do { if (tick != 0) { g.drawString(tick+"", xScaler(tick) - 4, yScaler(0.0) + 11); g.drawLine(xScaler(tick), yScaler(0.0) - 2, xScaler(tick), yScaler(0.0)); } tick = tick + deltaTick; } while (tick <= bD); //end of x-ticks if ((nI > 10) || (predict == false)) adjust = 0; else adjust = 1; if (counter > 0) { if ((counter > 1) || (predict == false)) { for (int i = 1; i <= counter - adjust; i++) { if (i%2 == 0) g.setColor(Color.red); else g.setColor(Color.magenta); g.drawLine(xScaler(xArray[i-1]), yScaler(yArray[i-1]), xScaler(xArray[i]), yScaler(yArray[i])); } } if ((nI <= 10) && (counter <= nI) && (predict == true)) { g.setColor(Color.gray); g.drawLine(xScaler(xArray[counter-1]), yScaler(yArray[counter-1]), xScaler(xArray[counter]), yScaler(py)); h1 = (bD - x_0D)/70; scale = 2*(ymax - ymin)/(bD - x_0D); if ((dir > scale) || (dir < -scale)) h1 = h1*scale/Math.abs(dir); g.setColor(Color.black); g.drawLine(xScaler(xArray[counter] - h1), yScaler(py - h1*dir), xScaler(xArray[counter] + h1), yScaler(py + h1*dir)); } } } } private int xScaler(double x) { return (int)(5 + (d.width - 10)*(x - x_0D)/(bD - x_0D)); } private int yScaler(double y) { return (int)(5 + (d.height - 16)*(ymax - y)/(ymax - ymin)); } } //end of IEM_G