Código Java:
Ver original
import java.awt.*; import java.awt.geom.*; import javax.swing.*; int x0,xN,y0,yN; double xmin,xmax,ymin,ymax; int apAncho, apAlto; int h=getHeight(); int w=getWidth(); final int PAD = 20; super.paintComponent(g); double x1,y1,x2,y2; int j1,j2; x0 = y0 = 0; xN = apAncho-1; yN = apAlto-1; xmin = -5.0; xmax = 5.0; ymin = -7.0; ymax = 1.0; j1 = ValorY( 0 ); for( int i=0; i < w; i++ ){ j2 = ValorY( i+1 ); g2.fillRect(i,j1,i+1,j2 ); j1 = j2; } } private int ValorY( int valor ) { double x,y; int retorno; // Cartesianas equivalentes al punto de la pantalla x = (valor * (xmax-xmin) / (h-1)) + xmin; // Calculamos LA FUNCION y = (3*x*x) -6; // Escalamos la coordenada y dentro de los limites de la ventana retorno = (int)( (y-ymin) * (w-1) / (ymax-ymin) ); // Reconvertinos el valor cartesiano a punto de pantalla retorno = h - retorno; return( retorno ); } f.add(new GraphingData()); f.setSize(600,400); f.setLocation(200,200); f.setVisible(true); } }