/* * n_graph5.java * * Created on 29 Δεκέμβριος 2003, 10:46 πμ */ /** * * @author gauss * @version */ import java.awt.*; import java.applet.*; import java.awt.event.*; public class n_graph5 extends Applet implements ActionListener { Button button1 = new Button(); Button button2 = new Button(); Label label1 = new Label(); int vxmin,vymin,vxmax,vymax; //screen coordinates double xmin,ymin,xmax,ymax; //imaginary coordinates double dx; //interval of x double a; // parameter double da; //interval of a /* initializing */ public void init(){ String str; xmin=-5;xmax=5;ymin=-3;ymax=7; vxmin=0;vxmax=300;vymin=0;vymax=300; dx=0.1; a=1;da=0.1; setLayout(null); //free layout setSize(400,300); //size of this applet add(button1); button1.setLabel("+"); button1.setFont(new Font("Dialog", Font.PLAIN, 16)); button1.setBounds(320,40,20,20); button1.addActionListener(this); add(button2); button2.setLabel("-"); button2.setFont(new Font("Dialog", Font.PLAIN, 16)); button2.setBounds(350,40,20,20); button2.addActionListener(this); add(label1); str="a = "+Double.toString(a); label1.setText(str); label1.setFont(new Font("Dialog", Font.PLAIN, 16)); label1.setBounds(320,60,60,40); } public void paint(Graphics g) { double x1,y1,x2,y2; //axes and scale scale(g); //graph g.setColor(Color.blue); x2=xmin;y2=func(x2); for(x1=xmin;x1<=xmax;x1=x1+dx){ y1=func(x1); Line(g,x1,y1,x2,y2); x2=x1;y2=y1; } } /* Convert imaginary coordinates to screen cordinates. */ public int mapX(double x){ int sx; sx=vxmin+(int)((x-xmin)/(xmax-xmin)*(double)(vxmax-vxmin)) ; return sx; } public int mapY(double y){ int sy; sy=vymin+(int)((ymax-y)/(ymax-ymin)*(double)(vymax-vymin)); return sy; } /* Drawing Line */ public void Line(Graphics g,double x1,double y1,double x2,double y2){ g.drawLine(mapX(x1),mapY(y1),mapX(x2),mapY(y2)); } /* Defining function */ public double func(double x){ double y; y=a*x*x; return y; } /* axes and lattice */ public void scale(Graphics g){ double x,y; //back color g.setColor(new Color(255, 255, 192)); g.fillRect(vxmin,vymin,vxmax-vxmin,vymax-vymin); // scale g.setColor(Color.lightGray); for (x=xmin;x<=xmax;x=x+1){ Line(g,x,ymin,x,ymax); } for (y=ymin;y<=ymax;y=y+1){ Line(g,xmin,y,xmax,y); } // xy-axes g.setColor(Color.black); Line(g,0,ymin,0,ymax); Line(g,xmin,0,xmax,0); } public void actionPerformed(ActionEvent event) { String str; Object object = event.getSource(); if (object == button1){ a=a+da; a=(double)(Math.round(10*a))/10; repaint(); str="a = "+Double.toString(a); label1.setText(str); } if (object == button2){ a=a-da; a=(double)(Math.round(10*a))/10; repaint(); str="a = "+Double.toString(a); label1.setText(str); } } }