import java.awt.*;
import java.awt.geom.*;

public class CubicFunction {
    CubicPanel panel;

    public CubicFunction(CubicPanel cp) {
	panel = cp;
    }

    public void plot(Graphics2D g) {
	BoundingBox bbox = panel.getBoundingBox();
	AffineTransform transform = panel.getTransform();
        int steps = 50;
        double stepsize = (bbox.urx - bbox.llx)/steps;
        GeneralPath path = new GeneralPath();
        path.moveTo((float) bbox.llx, (float) valueAt(bbox.llx));
        for (int i = 1; i <= steps; i++) {
	    double x = bbox.llx + i*stepsize;
            path.lineTo((float) x, (float) valueAt(x));
	}
        g.setPaint(Color.black);
        g.draw(transform.createTransformedShape(path));
    }

    public double valueAt(double x) {
        return x*x*x - x;
    }
}
        
        
        
