![]() |
brauche dringend ein programm das funktionen zeichnet
ich muss wissen wie ich, mit delphi, ein programm schreibe, welches funktionen zeichnet.
also lineare funktion, quadratische funktion, wurzelfunktion, tangenzfunktion, und potenzfunktion (sinus und cosinus hab ich schon) das programm sollte so laufen das man einfach nur die parameter (a,b,c)eingibt und das programm dann den graphen in ein koordinatensystem zeichnet |
Re: ich hab nen riesen problem
Frage: sind die Funktionen im Quelltext definiert? Wenn ja, dann ist das relativ einfach:
Du musst programmintern eine Wertetabelle aufstellen. Auf einer TCanvas-Kompo kannst du das dann zeichnen, wichtig ist der richtige Maßstab, du musst für jedes Pixel einen Wert haben, ansonsten wird die Funktion eckig. Dabei darf 1 Pixel aber nicht 1 mathematischen Einheit sein. Falls du noch nichts mit TCanvas gemacht hast, hier auf dem Forum gibts genug infos |
Re: ich hab nen riesen problem
Hi,
1. gebe bitte deinem Beitrag einen sinvolleren Titel, in dem du auf den http://www.delphipraxis.net/template.../icon_edit.gif-Button neben deinem Beitrag klickst und dann den Titel editierst. So kann jeder direkt erkennen was für ein Problem du hast. 2. Generell solltest du das folgendermaßen machen: du sagst eine Spanne von 100px (Pixeln) ist = 1 Einheit. Dann gehst du von einem beliebigen -z (das, wo dein Koordinatensystem links beginnen sollen) bis zu einem +z (Ende rechts). Nun rechnest du für jedes z einen Funktionswert aus. Das Intervall, wie du vergehst ergibt sich aus deiner Spanne (siehe mein erster Satz im 2. Punkt): 1/100. Du zeichnest dann eine Linie, von deinem letzen Punkt zu deinem neuen Punkt. Und die y-Koordinate errechnest du einfach durch deine Funktion. ;) Chris |
Re: ich hab nen riesen problem
Die Funktionen kannst du mit tan(wasauchimmer), sqr(wasauchimmer), sqrt(wasauchimmer) ausrechnen, falls du das auch wissen wolltest.
Hoffe, wenigstens einigermaßen geholfen zu haben |
Re: ich hab nen riesen problem
Das ist ein interessantes Problem. Sowas wollte ich auch schon mal schreiben, mit 'ner Paintbox. Ich versuche mal Quelltext zu rekonstruiren, den ich verwendet habem um mal testweise die Funktion
f(x)=x darzustellen:
Delphi-Quellcode:
Das geht zumindest ein bißchen. Aber der doof fängt mit seiner Linie oben Links an. Dann habe ich mal was "parableartiges" probiert:
paintbox1.Canvas.MoveTo(0,0);
paintbox1.Canvas.LineTo(100,100);
Delphi-Quellcode:
Da kam aber was raus, was nach allem anderen, als nach 'ner Parabel aussah. Aber ich habe mir schon seit längerem mal überlegt 'ne Kompo zu schreiben, die ein Paintbox bedient und in die man nur mit Werten füttern muss, die dann automatisch zeichnet.
var x,y,s:integer;
paintbox1.Canvas.MoveTo(0,0); for s:=1 to 100 do begin inc(x); y :=x*x; paintbox1.Canvas.LineTo(x,y); end; |
Re: brauch nen programm das funktionen zeichnet
sorry bin aber ein wenig unwissend sonst wär ich auch schon weiter aber ich brauch starke hilfe ich bin total verwirrt den ich versuch das schon seit 2 monaten und komm nicht weiter
|
Re: ich hab nen riesen problem
:warn: Du wurdest in der zweiten Antwort bereits gebeten den Titel zu ändern. Tue dieses bitte.
...:cat:... |
DP-Maintenance
Dieses Thema wurde von "sakura" von "Projekte" nach "Sonstige Fragen zu Delphi" verschoben.
Ist kein DP-Projekt ;) |
Re: brauche dringend ein programm das funktionen zeichnet
Das gibt schon mal eine Parabel:
Delphi-Quellcode:
Prinzip ist das: Du hast eine Funktionsgleichung der Art: f(x) = ax³+bx²+cx+d. Wenn du die jetzt Zeichen willst, musst du dir für jeden Punkt auf der y-Achse, f(x), den Funktionswert ausrechnen und dann den Punkt zeichnen.
procedure TForm1.Button1Click(Sender: TObject);
var Loop : Integer; begin Paintbox1.Canvas.MoveTo(0, 0); for Loop := 0 to 10000 do begin Paintbox1.Canvas.LineTo((Loop * Loop) div 100 , Loop); end; end; |
Re: brauche dringend ein programm das funktionen zeichnet
Dieses Thema wurde auch schon einige MAle abgehandelt, eine Suche wäre vielleicht auch angebracht :roll:
PS: Wenn du die Cosinus usw. schon hast, dann kannst du es doch gneau so mit ner Parabel oder anderer Funktion machen, du musst dir nur einen entsprechenden Mathe-Parser schreiben, wenn du eine Eingabe in der Form ax³+bx²+cx+d erstellen willst (und da liegt die eigentliche Schwierigkeit, meiner Meinung nach) ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:00 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