Registriert seit: 4. Mär 2006
34 Beiträge
Delphi 7 Enterprise
|
Problem mit einem Diagramm
25. Mai 2006, 12:29
huhu,
hab nen programm für de schule geschrieben, wo ich am ende nen s-t-diagramm haben will...
ich hab alles hinbekommen, bis auf das mit der kurve... das sieht mir sehr unlogisch aus...
kann mir da mal jmd helfen und gucken, ob das so richtig ist?
die achsen stimmen ja... nur eben die kurve, die er ja anhand von best werten eintragen muss, die sieht nicht richtig aus
danke schonmal.
mfg kos
Delphi-Quellcode:
{$R *.dfm}
Procedure stDiagramm (s,t:integer);
begin
t:=t+30;
s:=370-s;
Form1.Image1.Canvas.LineTo(s,t);
end;
Function Geschwindigkeit (a,v0,t:real):real; // Funktion Geschwindigkeit-Berechnen
begin
result:=a*t+v0; //ergebnis zuweisen
end;
Function Weg (a,t,v0:real):real; // Funktion Weg-Berechnen
begin
result:=(a/2)*sqr(t)+(v0*t); //ergebnis zuweisen
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
with stringgrid1 do begin
cells[0,0]:=' Zeit';
cells[1,0]:=' Geschwindigkeit';
cells[2,0]:=' Weg';
end;
with Image1.Canvas // canvas=leinwand
do begin // Koordinaten-Achsen zeichnen
MoveTo (30,370); // an den Punkt P1(30,370) gehen
LineTo (635,370); // von P1 eine linie nach P2 (635,370) ziehen
MoveTo (635,370); // an den Punkt P2 gehen
LineTo (625,365); // einen Strich nach P3 (625,365) ziehen
MoveTo (635,370); // an den Punkt P2 gehen
LineTo (625,375);// einen Strich nach P4 (625,375) ziehen
MoveTo (30,370); // an den Punkt P1(30,370) gehen
LineTo (30,30); // einen Strich an P5 (30,30) ziehen
MoveTo (30,30); // an den Punkt P5 gehen
LineTo (35,40); // einen Strich an den Punkt P6 (35,40) ziehen
MoveTo (30,30); // an den Punkt P5 gehen
LineTo (25,40); // einen Strich an den Punkt P7 (25,40) ziehen
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
Var a,v,v0,t,za,ez,s:real;
i,o:integer;
begin
Val (Form1.Edit1.Text,a,o); // Beschleunigung
Val (Form1.Edit2.Text,v0,o); // Anfangsgeschwindigkeit
Val (Form1.Edit3.Text,za,o); // Zeitabstände
Val (Form1.Edit4.Text,ez,o); // Endzeit
with Form1.StringGrid1 do begin
rowcount:=round(ez/za+2);
t:=0; // Startwert: zeit=0
Image1.Canvas.MoveTo (30,370); // auf den Ursprung setzen
for i:=1 to rowcount do begin
cells[0,i]:=floattostr(t); // Zeit in SG
v:=Geschwindigkeit (a,v0,t); // Funktion Geschwindigkeit aufrufen
cells[1,i]:=floattostr(v); // Geschw in SG
s:=Weg (a,t,v0); // Funktion Weg aufrufen
cells[2,i]:=floattostr(s); // Weg in SG
t:=t+za; // Zeit um Zeitabstand erhöhen
stDiagramm (round(s),round(t)) // Aufruf Prozedur stDiagramm
end;
end;
end;
end.
|