Einzelnen Beitrag anzeigen

flossinger

Registriert seit: 22. Aug 2005
Ort: südlich der Alpen
109 Beiträge
 
Delphi 5 Standard
 
#2

Re: Funktionsgraphen zeichnen

  Alt 24. Dez 2006, 09:18
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:while Image1.Left + u_achse < breite do Dann zeichnet das Programm.

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