Simple Function Graph

<< Temp Converter | LabTrailIndex | GameStateLab >>

Here we can define a simple function

Function.java


public class Function 
{
    public Function()
    {

    }
    public double of(double x){
    	     return .2*(Math.pow(x,3)+ x*x -17.0*x +15.0);
    }
}

And a simple Applet that scales a graph from -10 to 10 in both directions to a 600 x 400 rectangle, with info on the location of the mouse

SimpleFunctionGraph.java

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;



public class SimpleFunctionGraph extends Applet implements MouseMotionListener
{
	private Function f;
	public static final int WIDTH=600;
	public static final int HEIGHT=400;
	public static final double X_MIN=-10;
	public static final double X_MAX=10;
	public static final double Y_MIN=-10;
	public static final double Y_MAX=10;
	private double xCoord,yCoord;
	public void init()
	{
		f = new Function();
		xCoord=0.0;
		yCoord=0.0;
		this.addMouseMotionListener(this);
	}
	public void paint(Graphics g)
	{
		g.setColor(Color.WHITE);
		g.fillRect(0,0,WIDTH, HEIGHT);
		g.setColor(Color.BLACK);
		int x1=screenX(X_MIN);int y1=screenY(0);
		int x2=screenX(X_MAX); int y2=screenY(0);
		g.drawLine(x1, y1, x2, y2);
		x1=screenX(0);y1=screenY(Y_MIN);
		x2=screenX(0);y2=screenY(Y_MAX);
		g.drawLine(x1, y1, x2, y2);
		g.setColor(Color.RED);
		for (double x=X_MIN; x<X_MAX; x+=.1){

                        // your code here 

			g.drawLine(x1, y1, x2, y2);
		}
		g.drawString("x:"+xCoord, 20, 20);
		g.drawString("y:"+yCoord, 20, 40);

	}
	private int screenY(double y) {
		double p=(y-Y_MIN)/(Y_MAX-Y_MIN);
		return (int)(HEIGHT-p*HEIGHT);
	}
	private int screenX(double x) {
		double p=(x-X_MIN)/(X_MAX-X_MIN);
		return (int)(p*WIDTH);
	}
	@Override
	public void mouseDragged(MouseEvent e) {	}
	@Override
	public void mouseMoved(MouseEvent e) {
		xCoord= X_MIN+e.getX()*(X_MAX-X_MIN)/(WIDTH);
		yCoord= Y_MAX-e.getY()*(Y_MAX-Y_MIN)/(HEIGHT);
		repaint();
	}


}

See if you can add the for loop to draw the function using a double x and the f.of(x) method.