AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Problem mit einem Diagramm

Ein Thema von KosMottchen · begonnen am 25. Mai 2006 · letzter Beitrag vom 25. Mai 2006
Antwort Antwort
KosMottchen

Registriert seit: 4. Mär 2006
34 Beiträge
 
Delphi 7 Enterprise
 
#1

Problem mit einem Diagramm

  Alt 25. Mai 2006, 11: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.
Angehängte Dateien
Dateityp: rar beschleunigung_-_funktionen_prozeduren_und_grafik_140.rar (207,1 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat
pszopp

Registriert seit: 7. Sep 2005
Ort: Alsdorf
95 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Problem mit einem Diagramm

  Alt 25. Mai 2006, 16:20
Hallo KosMottchen,

Zitat von KosMottchen:
Delphi-Quellcode:
{$R *.dfm}

Procedure stDiagramm (s,t:integer);
begin
  t:=t+30;
  s:=370-s;
  Form1.Image1.Canvas.LineTo(s,t);
end;
...
Du musst bei
Form1.Image1.Canvas.LineTo(s, t) s und t vertauschen, da t bestimmt auf der x-Achse augetragen werden soll.
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
www.pstipp.de | Tippseite zur Formel 1 und Fußball WM/EM - kostenlos und Just-For-Fun
  Mit Zitat antworten Zitat
KosMottchen

Registriert seit: 4. Mär 2006
34 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Problem mit einem Diagramm

  Alt 25. Mai 2006, 17:14
Zitat von pszopp:
Hier mal ein bisßchen Pseudo-Code, der hoffentlich weiterhilft

Skalierung von s:
s := Round(s / (MaxS - MinS) * ZeichenHöhe);

Skalierung von t:
t := Round(t / (MaxT - MinT) * ZeichenBreite);


Gruß,
pszopp
huhu,

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
  Mit Zitat antworten Zitat
pszopp

Registriert seit: 7. Sep 2005
Ort: Alsdorf
95 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Problem mit einem Diagramm

  Alt 25. Mai 2006, 18:03
Hi,

schau mal in meinen Anhang.

Grüß,
pszopp
Angehängte Dateien
Dateityp: pas unit1_138.pas (3,8 KB, 11x aufgerufen)
www.pstipp.de | Tippseite zur Formel 1 und Fußball WM/EM - kostenlos und Just-For-Fun
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz