![]() |
Funktionsgraphen zeichnen
Liste der Anhänge anzeigen (Anzahl: 1)
Abend,
Ich hab mich jetzt mal daran versucht ein Programm zu schreiben, welches funktionen zeichnet. Ich bin jetzt schon mal so weit, dass der Quelltext steht und auch keine Fehlermeldungen kommen. Das Programm will aber einfach nicht den Graphen zeichnen. Da die Suchfunktion im Moment nicht funzt, muss ich ein neuen Thread eröffnen, da er ja ein immenser Aufwand wär, dass Forum ohne Sufu zu durchsuchen. Also, ich hab jetzt 2 Probleme. Das 1.( und unwichtigere): Wenn ich den Befehl zum zeichnen der Achsen und den Befehl zur einzeichnung der Einheiten auf einen Button mache, entstehen die Graphen nur für einen Bruchteil einer Sekunde udn verschwinden dann wieder. Das Problem hab ich jetzt erstmal provisorisch so gellöst das ich auf die Form.procedure den Befehl zum zeichnen der Einheiten und auf den Button "Achsen" das Zeichnen der Achsen gelegt habe. Diese Problem ist aber nicht weiter wichtig sondern nur eine Feinheit. Das 2.Problem: Ich hab jetzt den Befehl zum zeichnen der Funktion geschrieben. Es kommen ja auch wie gesagt keine Fehlermeldungen, aber der Graph wird einfach nicht gezeichnet. Ich hab schon den moveTo und lineTo-Befehl an jede mögliche Stelle gesetzt, aber es geht einfach nicht. Desweiteren weis ich nicht wie man eine Funktion aus einen Editfeld herauslesen kann und dann mit in die Berechnung reinnehmen kann, z.B. x²*3x+8 oder so, sodass das Eidtfeld, welches dazu vorgesehen ist im Moment ohne Nutzen ist und die Funtkino direkt in den Quelltext geschrieben werden muss (im Moment y=x+1). Könnt ihr mir weiterhelfen |
Re: Funktionsgraphen zeichnen
Morgen,
Du hast da ein paar seltsame Dinge in deinem Programm. Du zeichnest einmal auf der canvas vom image und einmal auf der canvas vom form. Das bringt unerwartete Ergebnisse. Deine procedure TForm1.Button3Click zeichnet so überhaupt nichts. Wenn du dein eigenes Programm mit dem debugger ansiehst,dann erkennst du sofort, warum das so ist. Schau dir die Funktion der Tasten F4 F8 und F7 an und teste, was dein Programm macht. Ohne dieses debuggen wirst du kein Programm entwickeln können. Das ist einfach notwendig. In der TForm1.Button3Click wird die while schleife niemals durchlaufen, weil du den Vergleichsoperator verkehrt verwendest. Es muss heissen:
Delphi-Quellcode:
Dann zeichnet das Programm.
while Image1.Left + u_achse < breite do
Was gezeichnet wird, ist aber nicht, das was du willst. Eine sehr seltsame Treppenlinie kommt da raus. Vielleicht hast du moveto und lineto verwechselt. Wenn du das eimal ansiehst, wirst du schon draufkommen, wie es geht. edit: meine Vermutung war falsch. Im Nachhinein habe ich gesehen, woran es liegt: Du veränderste mit den Eineheiten gleichzeitig die Auflösung der gezeichneten Kurve. Das ist nicht gut. die Auflösung sollte schon feiner sein, als die Unterteilung der Einheiten. Das Verhältnis 1:10 bis 1:50 sollte da gut sein. Dein Vorhaben, die zu plottende Funktionsgleichung aus einem edit Feld zu beziehen, ist sehr schwierig um zu setzen und stellt ein grösseres Vorhaben dar. Dazu sollte man schon recht fit sein. Etwas leichter umzusetzen sind zwei andere Varianten: 1. Formeln auf dem form auswählen lassen: y=x, y=x*x, y=x*x*x usw. 2. Formeln durch Koeffizientenangaben modifizieren lassen: y=k1+k2*x+k3*x*x .... wobei die Koeffizienten in edit Felder eingetragen werden können. Die nicht benötigten Formelteile werden durch Koeffizienten mit der Grösse 0 automatisch deaktiviert. grüsse, der flossinger |
Re: Funktionsgraphen zeichnen
Danke.
Jetzt bin ich schon soweit, dass das Prog. den y-Wert richtig ausrechnet, jedoch kommt ja beim y-Wert ein real-wert raus. Jetzt brauch ich aber einen Integer-Wert, also Ganzzahlig. Ist es überhaupt machbar eine Gleitkomazahl in die Koordinaten eines Canvas zu bringen? |
Re: Funktionsgraphen zeichnen
Zitat:
Flare |
Re: Funktionsgraphen zeichnen
Siehe auch
![]() 21.000 Postings :firejump: :mrgreen: |
Re: Funktionsgraphen zeichnen
Jetzt bleibt mir nur noch ein Problem. Wenn ich 2mal auf den Zeichnen-Button klicke, erstellt er noch eine andere Linie die vollkommen schwachsinig ist. Ich schätz mal, dass kommt daher, dass er noch Werte aus den 1.Durchlauf speichert oder das ich lineTo und moveTo verdreht habe. Ich muss aber die 2 Befehle verdrehen, da er sonst nichts zeichnet
|
Re: Funktionsgraphen zeichnen
Mit dem Debugger wirst du schnell herausfinden, in welcher Reihenfolge dein Programm seine Aktionen ausführt. Dann kannst du leicht die nötigen Korrekturen anbringen. In Posting #2 steht, welche Tasten du verwenden kannst.
grüsse, der flossinger |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 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