Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Funktionsgraph zeichnen (https://www.delphipraxis.net/105045-funktionsgraph-zeichnen.html)

Svenkan 14. Dez 2007 16:48


Funktionsgraph zeichnen
 
Moinsen! :)
Ich wollte mich mal an eine neue Aufgabe wagen und habe auch schon die passende von einem Lehrer bekommen!
Und zwar, soll ich für den Physikunterricht versuchen, den Funktionsgraphen der Funktion y=1/(4d)*(Ua/Ub)*x² zeichnen zu lassen (Ablenkung der Elektronen in einer Elektronenröhre).
Ich habe allerdings noch nicht mit dem Zeichnen von Graphen bisher gearbeitet und weiß eigtl nicht viel mehr, als dass ich eine TBitMap brauche.
Ich brauche somit 2 Achsen (X und Y im positiven Bereich) und der Graph müsste von rechts beginnen zu laufen, statt wie normal von links (damit es mit unserem Versuchsaufbau übereinstimmt!).
Nun fehlen mir allerdings grad mal sämtliche Ansätze, weswegen ich dazu eure Hilfe benötige! :)
Als Komponentenbepakete besitzte ich zusätzlich noch JCL und JVCL. Falls da was bei ist, was man dazu gut benutzen kann, wisst ihr, dass ich das habe. ^^

malo 14. Dez 2007 16:52

Re: Funktionsgraph zeichnen
 
Delphi-Quellcode:
for x := 0 to 100 do
begin
  Bitmap1.Canvas.LineTo(Bitmap1.Width-x, Bitmap1.Top - (1 div (4*d) * (Ua div Ub)*x*x));
end;
Also: Die halbe Koordinate musst du einfach plump erraten und die andere mit der Formel ausrechnen.

Mackhack 14. Dez 2007 17:22

Re: Funktionsgraph zeichnen
 
Svenkan,

such mal nach meinem Namen hier. Ich hab mal Quellcode gepostet fuer einen Funktiongraphen der lineare als auch quadratische Funktionen zeichnen kann. Nichts besonderers, ohne Parser oder so! Straight forward eben!

Muetze1 14. Dez 2007 17:28

Re: Funktionsgraph zeichnen
 
Ich hatte hier auch schonmal ein Beispiel angehangen, um die beiden möglichen Herangehensweisen darszustellen in dem Programm.

Svenkan 14. Dez 2007 17:34

Re: Funktionsgraph zeichnen
 
Hallo Muetze,

danke schonmal für dein tolles Beispiel!
Ich wollte mir das mal in Action anschauen, leider fehlt mir dazu eine dcu (FunctionPainter).

Muetze1 14. Dez 2007 17:53

Re: Funktionsgraph zeichnen
 
Nein, brauchst du nicht. Einfach oben in der Uses Liste rauswerfen. Ist nur noch ein Überbleibsel von der Umstellung. Ich habe nämlich eine kleine Komponente geschrieben, welche das Koordinatensystem kapselt und das Funktionszeichnen. Die Funktionen werden dabei per Event von aussen definiert (also immer ein y zum übergebenen x berechnen). Das Beispiel braucht diese Unit aber nicht, dass ist noch die Originalform.

Svenkan 14. Dez 2007 17:54

Re: Funktionsgraph zeichnen
 
Ah!
Ok :)
Dankeschön! ;-)

FAlter 14. Dez 2007 17:58

Re: Funktionsgraph zeichnen
 
Hi,

ich sollte mal eine Koordinatensystemkomponente machewn, und jetzt gerade verbessere ich das Programm wegen einer neuen Schulaufgabe... Hier im Forum suchenFAlterCalc heißt es, nächste Woche werde ich die neueste Version veröffentlichen (dann ist nämlich Abgabetermin).

Aber wenn du die Herausforderung suchst, wäre es wohl besser, wenn du dich selbst dranwagst und nicht nur mein Koordinatensystem verwendest.

Die Verfahrensweise bei meinem Koordinatensystem funktioniert so, falls du es selbst nachprogrammieren willst:

Erst wird eine Wertesammlung erstellt (Funktionswerte, also X- und Y-Werte, in geordneter Reihenfolge). Beim Zeichnen wird dann aus den tatsächlichen X- und Y-Werten unter Beachtung der Skaleneinteilung der Bildpubkt berechnet und die Bildpunkte werden mit LineTo (siehe malos Beispiel) verbunden. Also angenommen, ein Ursprung ist O mit dem Wertepaar O.X und O.Y, deine Einteilung ist A (A Pixel = 1 Einheit) und deine Werte sind X und Y, der Bildpunkt soll P (P.X und P.Y) werden, dann rechnest du ungefähr so:

Delphi-Quellcode:
P.X := O.X + Round(A * X);
P.Y := O.Y - Round(A * Y); //-, da nach oben
Viel Erfolg!

Mfg
FAlter


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 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