Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi brauche dringend ein programm das funktionen zeichnet (https://www.delphipraxis.net/21074-brauche-dringend-ein-programm-das-funktionen-zeichnet.html)

silva 27. Apr 2004 17:12


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

alcaeus 27. Apr 2004 17:15

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

CalganX 27. Apr 2004 17:16

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

Ultimator 27. Apr 2004 17:16

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

yankee 27. Apr 2004 17:25

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:
paintbox1.Canvas.MoveTo(0,0);
paintbox1.Canvas.LineTo(100,100);
Das geht zumindest ein bißchen. Aber der doof fängt mit seiner Linie oben Links an. Dann habe ich mal was "parableartiges" probiert:
Delphi-Quellcode:
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;
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.

silva 27. Apr 2004 17:38

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

sakura 27. Apr 2004 17:42

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 27. Apr 2004 17:42

DP-Maintenance
 
Dieses Thema wurde von "sakura" von "Projekte" nach "Sonstige Fragen zu Delphi" verschoben.
Ist kein DP-Projekt ;)

Luckie 27. Apr 2004 18:00

Re: brauche dringend ein programm das funktionen zeichnet
 
Das gibt schon mal eine Parabel:
Delphi-Quellcode:
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;
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.

Alexander 27. Apr 2004 18:53

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 03:14 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