![]() |
Problem mit einem Diagramm
Liste der Anhänge anzeigen (Anzahl: 1)
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. |
Re: Problem mit einem Diagramm
Hallo KosMottchen,
Zitat:
Delphi-Quellcode:
s und t vertauschen, da t bestimmt auf der x-Achse augetragen werden soll.
Form1.Image1.Canvas.LineTo(s, t)
Auf jeden Fall solltest du die Werte noch skalieren. Der Weg nimmt Werte zwischen 0 und 4600 an, und soll auf einer Höhe von 370 gezeichnet werden. Sobald der Weg den Wert von 370 überschreitet, wird außerhalb des Canvas gezeichnet. Hier mal ein bisßchen Pseudo-Code, der hoffentlich weiterhilft :-D Skalierung von s: s := Round(s / (MaxS - MinS) * ZeichenHöhe); Skalierung von t: t := Round(t / (MaxT - MinT) * ZeichenBreite); Gruß, pszopp |
Re: Problem mit einem Diagramm
Zitat:
vielen dank schonmal... also da muss ich aber nicht nur oben in der prozedur das s und t vertauschen, sondern dann auch komplett im ganzen quellcode das s und das t umtauschen gelle? und kannst du mir zu dem skalieren ei bissel mehr sagen? mfg kos |
Re: Problem mit einem Diagramm
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
schau mal in meinen Anhang. Grüß, pszopp |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz