Bueno, como no tenia nada que hacer, programe un pequeño procedimiento que grafica una funcion cuadratica.
Simplemente se crea un form, se ponen 5 edits, un TImage y un boton. Nombrar los Edits de la siguiente manera:
Edita,Editb,Editc,EditEscalax,EditEscalay y a la imagen le puse nombre: Hoja
En el OnClick del boton pegar el siguiente codigo:
Código:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,escx,escy,x,fx: Real;
origenx,origeny,i: integer;
begin
a:= StrToFloat(Edita.Text);//convierto los edits en numeros
b:= StrToFloat(Editb.Text);
c:= StrToFloat(Editc.Text);
escx:= StrToFloat(EditEscalax.Text);
escy:= StrToFloat(EditEscalay.Text);
with Hoja.Canvas do //Hoja es una TImage en este caso
begin
origenx:= Trunc(Hoja.Width/2); //establezco el origen (0,0) en la mitad de la hoja
origeny:= Trunc(Hoja.Height/2);
MoveTo(origenx,0); //dibujo los ejes
LineTo(origenx,Hoja.Height);
MoveTo(0,origeny);
LineTo(Hoja.Width,origeny);
for i:= 0 to Hoja.Width do //genero el grafico en todo el ancho de TImage
begin
x:= -escx + 2*escx*i/Hoja.Width; // simplemente observar los valores extremos de i
fx:= a*x*x + b*x + c; // fx es el valor de la ecuacion en el punto x, esta claro
if i = 0 then //La primera vez solo muevo
MoveTo(0,Trunc(origeny - fx*origeny/escy))
else
LineTo(i,Trunc(origeny - fx*origeny/escy));
end;
end;
end;
Esta funcion, grafica en la imagen una ecuacion cuadratica ax2+bx+c, donde a, b y c son los valores cargados en Edita,Editb y Editc.
En EditEscalax y EditEscalay pondremos los rangos que queremos visualizar, para los ejes x e y respectivamente.
Como se ve, no es muy dificil, ya que el programa ocupa tan solo una pantalla y claro que es mejorable a gusto del consumidor
Bueno, espero que sirva para algo.
PD: ingresando cero en "Edita", tendremos una ecuacion lineal
PD2: podemos cambiar la linea: fx:= a*x*x + b*x + c;
por la funcion que deseemos, por ej fx:= sin(x); funciona a la perfección.