quadratische funktion grafisch darstellen

behles

Grünschnabel
Hallo,

wie kann ich denn eine quadratische Funktion mit Delphi grapisch darstellen lassen

Danke schonmal im vorraus für eure Antworten

Gruß
Oliver
 
eine Quadratische Funktion ist z.b f(x) = x²
Ich hatte mal einen Grafischen Taschenrechner in Planung, der Funktionen zeichnen sollte, aber damals bin ich auch dran gescheitert quadratische Funktionen darzustellen.

Die einige Möglichkeit die ich sah, (die auch sinnig erscheint solang du mit Canvas arbeiten willst ) ist eine Ellipse zu zeichen, die übers Koordinatensystem hinaus geht. Dabei must du halt dieses imaginäre Viereck das du fürs Ellipse zeichnen brauchst erst berechnen, und anschließend an der richtigen Stelle ein Vierreck drüberzeichnen, was den unbrauchbaren Rest der Ellipse überdeckt. Dann hast du eine Parabel dargestellt, und must nurnoch drumherum ein Koordinaten system zeichnen.

MFG
Van

edit:
P.S. falls du dich mit Canvas zeichnen nicht auskennst probier mal das Tutorial hier:
http://www.delphi-treff.de/content/tutorials/einsteigerkurs/index.php4?kat=13
 
Zuletzt bearbeitet:
So nem wir mal an du willst in ein Zeichenbereich mit der Größe 300x300px zeichnen. Auf einem TImage z.B.
Als erstes legst du eine Funktion an, die den Wert deiner Quadratischen Funktion zurückgibt(dann kannst du nachher die Funktion leicht ändern).
Code:
function graph(x: Integer): Integer;
begin
 result:=x*x; //Beispielfunktion
end;

Dann bei der Zeichenroutine legst du folgende Variablen fest. Dann werden in einer for-Schleife alle x Werte durchgegangen und der y-Wert dazu gezeichnet.
Dazu muss erstmal der zurückgegebene Wert
Code:
procedure TForm1.draw(dest: TCanvas;width,height: Integer);
var x,y: Integer; //x- und y-Werte im Zahlenbereich
      i,j: Integer; //x- und y-Werte im Zeichenbereich
begin
 i:=0;
 x:=i-(width div 2); //damit wird der x-Wert von der Mittedes Bildes aus nach rechts gezeichnet
 y:=graph(x);
 j:=(height div 2)-y; //damit wird der y-Wert von der Mitte des Bildes aus nach oben gezeichnet
 dest.MoveTo(0,j);
 for i:=1 to width-1 do
 begin
  x:=i-(width div 2);
  y:=graph(x);
  j:=(height div 2)-y; //damit wird der y-Wert von der Mitte des Bildes aus nach oben 
gezeichnet
  dest.LineTo(i,j);
 end;
end;

Das ganze kannst du dann so aufrufen:

Form1.draw(Image1.Canvas,Image1.Width,Image1.Height);

Falls du das alles oft neuzeichnen musst, ist es empfehlenswert Form1.DoubleBufffered(da is jez irgendwo in schreibfehler drin sry) auf True zu setztn. Auf die Zeichenfläche des Formulars:
Form1.draw(Canvas,ClientWidth,ClientHeight);
solltest du gar nicht zeichnen, da es immer ziemlich flackert. Dann lieber ein Image machen, was sich bei Größenänderung des Formulars mit ändert. Dazu Autosize von dem Image auf True und bei Form_OnResize dann das hier
Code:
 Image1.Left:=0;
 Image1.Top:=0;
 Image1.Picture.Bitmap.Width:=ClientWidth;
 Image1.Picture.Bitmap.Height:=ClientHeight;
Dann auf das Image zeichnen.
Falls du wissen willst, wie de damit in die Funktion rein/rauszoomen kannst, oder dich hin und herbewegen kannst.... musste mir 10€ auf mein Bankkonto überbuchen. Sende mir dazu einfach ne EMail. :) Nene nur n Scherz! Frag einfach dann danach. Will hier nicht ewig viel umsonst posten.

@Van-Fanel: Coole Idee eigentlich, wär ich wohl nich auf sowas gekomme. Aber so hier is besser, wegen anderen möglichen Funktionen.

Wenn man die Funktion selber im Programm(als Benutzer) eingeben können soll, wirds schon schwieriger. ne einfache Methode kann ICH da nich sagn..

Hoffe ich hab geholfen. Bei Unverständnis bitte fragn.
 
Komponente

Ich habe für Delphi 6 eine Komponente geschrieben, die Funktionen Graphisch darstellen kann.
Da sie noch einige Bugs enthält habe ich noch kein release veröffentlicht.
Wer jedoch schonmal einen Blick reinwerfen möchte kann sich bei mir melden
entweder per icq: 77676146
oder über unsere homepage: http://www.upg.de.tf

Grüße
Kartoffel
 

Neue Beiträge

Zurück