package ip.gui;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.WindowEvent;
public class Graph extends Frame {
Plot1 Data;
String[] xaxis;
String[] yaxis;
Rectangle r;
public static void main(String args[]) {
double limit = 2 * Math.PI;
double incr = 10;
String xaxis[] = {"X", "1pi", "2pi", "3pi"};
String yaxis[] = {"Sin(x)", "-1.0", "0.0", "1.0"};
int n = (int) (1 + limit / incr);
Plot1 data = new Plot1(n, xaxis, yaxis);
for (double x = 0; x < limit; x += incr)
data.push(x, Math.sin(2 * x), 0);
Graph pf = new Graph("Eye Intensity", data);
pf.setSize(400, 400);
pf.setVisible(true);
}
public Graph(String mark, Plot1 data1) {
super(mark);
Data = data1;
xaxis = data1.getxA();
yaxis = data1.getyA();
}
public void update(Graphics g) {
g.clearRect(0, 0, r.width, r.height);
paint(g);
}
public void paint(Graphics g) {
r = getBounds();
int w = r.width;
int h = r.height;
int leftMargin = 30;
int tickMarkInterval = 10;
int tickMarkWidth = 30;
int middleY = h / 2 - 25;
setBackground(Color.white);
g.drawLine(leftMargin, middleY, w, middleY);
g.drawLine(leftMargin, 0, leftMargin, h);
for (int i = 1; i < w; i += tickMarkInterval)
g.drawLine(i, middleY, i, h / 2 - tickMarkWidth);
for (int j = 1; j < h; j += tickMarkInterval)
g.drawLine(leftMargin, j, 35, j);
g.drawString(yaxis[0], 35, h / 20);
g.drawString(yaxis[1], 3, h / 4 * 3 - 5);
g.drawString(yaxis[2], 5, middleY);
g.drawString(yaxis[3], 5, h / 5 - 30);
g.drawString(xaxis[0], w / 2, h / 4 * 3 + 20);
g.drawString(xaxis[1], w / 3 - 5, h / 2 - 15);
g.drawString(xaxis[2], w / 2 + 20, h / 2 - 15);
g.drawString(xaxis[3], w - 80, h / 2 - 15);
Point p1,p2;
p1 = new Point(leftMargin, h / 3 + 37);
double max = 2 * Math.PI;
for (int t = 0; t < Data.num; t++) {
int x1 = (int) (Data.getx(t) * w / max + leftMargin);
int y1 = (int) (h / 3 - (h / 3) * Data.gety(t) + 37);
p2 = new Point(x1, y1);
g.drawLine(p1.x, p1.y, p2.x, p2.y);
p1 = p2;
}
}
public void actionPerformed(ActionEvent e) {
if (e.getID() == WindowEvent.WINDOW_CLOSING)
dispose();
}
}
class Plot1 {
int num;
String x[];
String y[];
double x_d[];
double y_d[];
double z_d[];
int lct = 0;
public Plot1(int nn, String[] xx, String[] yy) {
num = nn;
x = xx;
y = yy;
x_d = new double[num];
y_d = new double[num];
z_d = new double[num];
}
public String[] getxA() {
return x;
}
public String[] getyA() {
return y;
}
public int getsize() {
return num;
}
public double getx(int dd) {
return x_d[dd];
}
public double gety(int dd) {
return y_d[dd];
}
public double getz(int dd) {
return z_d[dd];
}
public void push(double xxx, double yyy, double zzz) {
x_d[lct] = xxx;
y_d[lct] = yyy;
z_d[lct] = zzz;
lct++;
}
}