Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   JTM 2 - umfangreicher Funktionsplotter (kartesisch & polar) (https://www.delphipraxis.net/110899-jtm-2-umfangreicher-funktionsplotter-kartesisch-polar.html)

Jakob Ullmann 26. Mär 2008 13:00


JTM 2 - umfangreicher Funktionsplotter (kartesisch & pol
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hi,

JTM ist ein Funktionsplotter für beliebige Funktionen. Features sind:
  • Skalierung von Abszissen- und Ordinatenachse
  • Kopieren als Vektorgrafik (Windows MetaFile)
  • Drucken
  • Erstellen einer Wertetabelle
  • Drucken der Wertetabelle
  • Kopieren der Wertetabelle, um sie zum Beispiel in Excel oder in Word einzufügen
  • Mehrere Funktionen
  • Abspeichern / Öffnen des Plots
  • Grobes Berechnen eines Integrals
  • Bearbeiten von Farben
  • Bearbeiten von Linienstärke
  • Grobes Nähern eines Integrals (Rechteck-Methode)
  • Erste Ableitung
  • Wahlweise zeichnen mit / ohne Grid
  • Gradueller Hintergrund
  • Beliebiges Verschieben einer Funktion in alle Richtungen (Funktion wird aktualisiert)
  • Zeichnen einer Legende
  • Kartesische- und Polarkoordinaten
Würde mich freuen, wenn ihr es mal ausprobiert.

Alte Speicherung
Zitat:

Gespeichert werden die Funktionen (*.jtm) und Farben (*.jcm). Normalerweise haben Farben und Funktionen denselben Namen (außer Dateikennung), aber man kann auch beliebige Listen laden / speichern. Beides erfolgt als Textdatei, die Funktionen sind durch Zeilenumbrüche getrennt, bei den Farben sieht es ungefähr so aus:

Zitat:

ColorA=FF0000
ColorB=0000FF
ColorC=0080FF
ColorD=008000
ColorE=FF0080
...
Also die normale Farbspeicherung eines ColorDialogs.
Neue Speicherung: [Funktionen]|||[Punkte]|||[Farben]|||StartX|||StartY|||TickX|||TickY
Also fast ein bisschen CSV... Kann man also mit einem Texteditor bearbeiten.

Beispielfunktion:

Zitat:

x^2+2*x+1
oder

Zitat:

sin(4*x)+sin(5*x)
Auf gar keinen Fall "y=..." oder "f(x)=..." schreiben! Für Hinzufügen einfach Enter drücken.

Jakob Ullmann 21. Jun 2008 13:29

Re: JTM 2.0.3 - umfangreicher Funktionsplotter
 
Nach langer Pause poste ich hier auch mal ein Update: 2.0.3. Seitdem ich die letzte Mal hier das Programm hochgeladen habe, hat sich viel geändert. Das Programm kann jetzt zum Beispiel Punkte zeichnen, Raster zeichnen, Zoomen, Abstände zwischen Ticks verändern, verschieben mit der Maus, sodass es eigentlich ganz nützlich sein kann.

Die Muhkuh 21. Jun 2008 13:35

Re: JTM 2.0.3 - umfangreicher Funktionsplotter
 
Hi,

schaut ganz nett aus. Allerdings ist das Ableiten noch etwas "komisch".

Wenn ich x^2 ableite (was ja 2x wäre), spuckt das Programm "(((x+0,1)^2)-((x-0,1)^2))/0,2" aus. Ist zwar auch richtig, aber ... ;)

Jakob Ullmann 21. Jun 2008 13:42

Re: JTM 2.0.3 - umfangreicher Funktionsplotter
 
Ja, das muss man noch schön verpacken, so dass es in der Funktionsliste und in der Legende als f'(x) = x² eingetragen wird, kommt in 10 min.

//EDIT: Fehler wurde behoben, der User merkt rein gar nichts von der im Hintergrund erzeugten Formel.

Das habe ich nun immer noch so, weil man so aus jeder Funktion die Ableitung bestimmen kann und nicht erst auf irgendwelche Muster kontrollieren muss, nur halt sieht der User davon nichts mehr, außer im Eingabefeld, aber das wird ihn ja nicht stören. Jetzt habe ich auch eine Funktion für die zweite Ableitung eingebaut. Falls jemanden der Code für die Ableitungs-Funktion interessiert:

Delphi-Quellcode:
function Ableitung: string;
var old_edited1, old_edited2: string;
    newformula: string;
begin
  Form1.Edit1.Text := Copy(Form1.Edit1.Text, 2,
    Length(Form1.Edit1.Text) - 1);
  ... // Alle Funktionsnamen, in denen "x" vorkommt, ersetzen: exp -> joker, usw.
  old_edited1 := StringReplace(Form1.Edit1.Text,
                              'x', '(x+0,1)', [rfReplaceAll]);
  old_edited2 := StringReplace(Form1.Edit1.Text,
                              'x', '(x-0,1)', [rfReplaceAll]);
  ... // Zurück ersetzen: joker -> exp, usw.
  newformula := '(('+old_edited1+')-('+old_edited2+'))/0,2';
  Result := newformula;
end;

Jakob Ullmann 22. Jun 2008 14:21

Re: JTM 2 - umfangreicher Funktionsplotter (kartesisch &
 
Jetzt kann man auch auf Polarkoordinaten zeichnen. :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:31 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