Funktionsgraphen zeichnen!!

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
robbe327
Beiträge: 10
Registriert: Di 23. Feb 2016, 11:54

Funktionsgraphen zeichnen!!

Beitrag von robbe327 »

Hallo.

Ich versuche mich zurzeit an einem Programm zur rechnerischen und grafischen Darstellung von mechanischen Würfen.
Die Berechnungen sind nicht das Problem, sondern das Zeichnen.

Ich habe ein Image.canvas Feld erstellt und einen Koordinatenquadrant zeichnen lassen (v(t)-Diagramm für den senkrechten Wurf nach oben).
Die Anfangsgeschwindigkeit v0 und die Konstante g werden über Edit-Felder eingelesen und konvertiert. Die Fläche beträgt 500x500 Pixel.


Die Funktionsgleichung lautet: v=v0-g*t
t=x
v=y

In Foren habe ich 2 Möglichkeiten zum Zeichnen gefunden:
1. über "LineTo(...)":
var
t,v :Real;

t:= 1;
while t<10 do
begin
t:=t+1;
v:=v0-g*t;
image1.canvas.LineTo(round(t),(-1)*round(v));


end;

2. über "Pixels[...]..."

var
t,v,scalex,scaley :Real;

scalex:=45;
scaley:=10;
t:=0;
while t<10 do
begin
t:=t+1;
y:=v0-g*t;
image1.Canvas.Pixels[round(scalex*t+25),round(-1*scaley*y)+25]:=clblack;

end;
Bin damit leider nicht sehr erfolgreich gewesen. :/
Alles läuft über einen Button.


Das ganze soll eher Qualitativ sein und muss daher nicht exakt skaliert sein.

Kann mir jemand bitte helfen, die Kurve Zeichnen zu lassen?


Ich habe leider kaum Erfahrung und Fachwissen im Umgang mit Lazarus, lediglich auf Schulniveau und brauche daher Hilfe!! :cry:

Danke (:

Mathias
Beiträge: 6918
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Funktionsgraphen zeichnen!!

Beitrag von Mathias »

Kann mir jemand bitte helfen, die Kurve Zeichnen zu lassen?
Suchst du so was ?

Code: Alles auswählen

procedure TForm1.FormPaint(Sender: TObject);
var
  i: integer;
begin
  Canvas.MoveTo(200,100);
  for i := 0 to 100 do begin
    Canvas.LineTo(round(cos(i / 20) * 100 + 100), round(sin(i / 20) * 100 + 100));
  end;
end;      
Die Punkt können auch in einem Array sein, anstelle sie in Echtzeit zu berechnen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

robbe327
Beiträge: 10
Registriert: Di 23. Feb 2016, 11:54

Re: Funktionsgraphen zeichnen!!

Beitrag von robbe327 »

Mathias hat geschrieben: Suchst du so was ?
Ja so ähnlich, nur wenn ich es auf die Art mit meiner Formel mache, komm ich zu keinem ordentlichen Graph.
Die Punkt können auch in einem Array sein, anstelle sie in Echtzeit zu berechnen.
Was ist ein Array bzw. wie wird das angewendet?

Mathias
Beiträge: 6918
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Funktionsgraphen zeichnen!!

Beitrag von Mathias »

Ja so ähnlich, nur wenn ich es auf die Art mit meiner Formel mache, komm ich zu keinem ordentlichen Graph.
Ich denke, deine Werte werden bei der Skalierung falsch gerechnet.
Gib doch deine Werte mal mit Writeln aus, dann siehst du, wie du sie skalieren musst.
Was ist ein Array bzw. wie wird das angewendet?
http://wiki.freepascal.org/Array/de
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten