Registriert seit: 8. Feb 2009
Ort: Berlin
8 Beiträge
|
Graph zeichnen
8. Feb 2009, 16:20
Hallo,
wir haben die Aufgabe, ein Programm zu erstellen (delphi 5), in dem man ein Koordinatenstystem hat, daneben 4 verschiedene Funktionen anklicken kann und im unten stehenden Feld Zahlen für die Variablen eingeben kann.
Die ersten zwei Funktionen funktionieren, aber irgendwie wird die dritte Funktion nicht gezeichnet.
Weiß jemand Rat?
Wir sind leider nicht so gut in Informatik.^^
Vielen Dank im Voraus!
Hier der Quelltext:
Delphi-Quellcode:
implementation
{$R *.dfm}
var a,b,c: real;
procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
with image1.Canvas do
begin
moveto(20,220); lineto(420,220); //x-Achse
moveto(220,20); lineto(220,420); //y-Achse
moveto(410,215); lineto (422,220);
lineto (410,225); //x-Pfeil
moveto(215,30); lineto (220,18);
lineto (225,30); //y-Pfeil
textout(425,225,'x'); //Beschriftung
for i:=-3 to 3 do
begin
moveto(220+50*i,215);
lineto (220+50*i,225); //x-Einteilung
moveto(215,220+50*i);
lineto (225,220+50*i); //y-Einteilung
textout(222+50*i,225,inttostr(i)); //Zahlen x-Achse
if i <> 0 then
textout (205,213+50*i,inttostr(-i)); //Zahlen y-Achse
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i,j: integer;
x,y: real;
begin
a:=strtofloat(Edit1.Text); //Eingabe
b:=strtofloat(Edit2.Text);
i:=20;
while i < 420 do
begin
i:=i+1;
x:=(i-220)/50;
y:=a*x+b;
j:=round((220-y*50));
image1.Canvas.Pixels[i,j]:=clred;
image1.Canvas.Pen.Color:=clred;
image1.Canvas.TextOut(400,42,'y=ax+b'); //Beschriftung
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var i,j:integer;
x,y:real;
begin
a:=strtofloat(Edit1.Text); //Eingabe
b:=strtofloat(Edit2.Text);
c:=strtofloat(Edit3.Text);
i:=70;
while i<420 do
begin
i:=i+1;
x:=(i-220)/50; //x skalieren
y:=a*sqr(x)+b*x+c; //Funktion y=ax²+bx+c
j:=round((220-y*50)); //j berechnen
image1.Canvas.Pixels[i,j]:=clgreen; //zeichnen
image1.Canvas.TextOut(400,100,'y=ax²+bx+c'); //Beschriftung
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var i,j:integer;
x,y:real;
begin
a:=strtofloat(Edit1.Text); //Eingabe
b:=strtofloat(Edit2.Text);
c:=strtofloat(Edit3.Text);
i:=70;
while i<420 do
begin
i:=i+1;
x:=(i-220)/50; //x skalieren
y:=a*sqr(x+b)+c; //Funktion y=a*(x+b)²+c
j:=round((220-y*50)); //j berechnen
image1.Canvas.Pixels[i,j]:=clblue; //zeichnen
image1.Canvas.TextOut(400,100,'y=a*sqr(x+b)+c'); //Beschriftung
end;
end;
end;
end.
Julia
|