Suche Javabibliothek zum Zeichnen mathematischer Funktionen

Mostly_Harmless

Aktives Mitglied
Hallo zusammen,

ich bin auf der Suche nach einer Javabibliothek, mit der sich bequem mathematische Funktionen (2- und 3-dimensionale) zeichnen lassen. Die Bibliothek sollte unter freier Lizenz angeboten werden.

Am liebsten wäre mir, wenn schon eine vordefinierte Schnittstelle für Funktionen existiert, von der sich dann z.B. ein JPanel erstellen lässt, welches ich dann in einem JFrame oder Applet weiterverwenden kann.
Also z.B.:
Java:
public interface Function {

	double evaluate(double x, double y);
}

public class IrgendeineLib {

	public JPanel drawFunction(Function f) {
		// ...
	}
}

Zur Zeit nutze ich dafür JFreeChart, aber da muss man halt die Funktionen selbst an einigen Stellen auswerten und plotten.
Vielleicht kennt hier ja jemand eine gute Alternative, die einfacher zu nutzen ist?
 

Marco13

Top Contributor
Ein http://www.java-forum.org/codeschnipsel-u-projekte/122994-einfacher-funktionsplotter.html reicht dafür wohl nicht. Wie soll das in 3D aussehen? Schon bei 2D gibt es "unendlich viele" Mögliche Anforderungen: Soll man mehrere Funktionen gleichzeitig malen können? Soll man die Linienfarbe- und Dicke auswählen können? Soll man Stützstellen anzeigen können? Zusätzliche Infos und MouseOver-Texte?
Vermutlich ist die Antwort: "Ja, wenn das alles gehen würde, wäre das gut" :D Aber auswendig wüßte ich da nichts ;)
 

Mostly_Harmless

Aktives Mitglied
Ein http://www.java-forum.org/codeschnipsel-u-projekte/122994-einfacher-funktionsplotter.html reicht dafür wohl nicht. Wie soll das in 3D aussehen? Schon bei 2D gibt es "unendlich viele" Mögliche Anforderungen: Soll man mehrere Funktionen gleichzeitig malen können? Soll man die Linienfarbe- und Dicke auswählen können? Soll man Stützstellen anzeigen können? Zusätzliche Infos und MouseOver-Texte?
Vermutlich ist die Antwort: "Ja, wenn das alles gehen würde, wäre das gut" :D Aber auswendig wüßte ich da nichts ;)

Sorry, der Funktionsplotter ist schon nicht schlecht, der Funktionsumfang genügt mir aber noch nicht.
Die Darstellung in 3D stell ich mir ungefähr so vor wie bei wolframalpha oder halt der oben genannte Java Surface Plot.
Die Anforderungen werden eigentlich fast alle von JFreeChart erfüllt. Nur muss man da halt die Funktion selbst auswerten und die Stützstellen eintragen; wenn man dann weit genug reinzoomt, sieht man leider die ganzen Ecken und Kanten. Aber vielleicht finde finde ich ja noch eine Möglichkeit über das Rein- und Rauszoomen informiert zu werden. Dann muss ich mir halt selbst ne Funktion basteln, welche die Stützstellen entsprechend genau auswählt.


Danke, das sieht auf den ersten Blick schon brauchbar aus. Werde ich mir mal genauer anschauen :)
 

Marco13

Top Contributor
Die Bibliothek wird anscheinend schon eine ganze Weile nicht weiterentwickelt (und wurde sie anscheinend auch nie: Es ist praktisch noch der "initial commit").

Eigentlich wäre es mal sinnvoll, sowas für 3D zu entwickeln. Danach wird immer wieder mal gefragt. Tatsächlich hatte ich 2003 sowas mal geschrieben, aber damals noch in C, mit einem eigenen Parser auf Basis einer Stack-Machine und Kommandozeilenbedienung... (damit konnte man etlichen kranken S***** machen :reflect: ) ...

Eine Schwierigkeit ganz am Anfang wäre schonmal, dass 2D und 3D schon unterschiedliche Welten sind, und die beiden eigentlich nichts miteinander zu tun hätten. Für 3D würde man wohl schon OpenGL verwenden wollen, weil alles andere immer so nach 1980 aussieht...
 

Mostly_Harmless

Aktives Mitglied
Eigentlich wäre es mal sinnvoll, sowas für 3D zu entwickeln. Danach wird immer wieder mal gefragt. Tatsächlich hatte ich 2003 sowas mal geschrieben, aber damals noch in C, mit einem eigenen Parser auf Basis einer Stack-Machine und Kommandozeilenbedienung... (damit konnte man etlichen kranken S***** machen :reflect: ) ...

Das klingt doch nach einem guten Projekt für das Java-Forum :D
In den anderen Projekten tut sich ja nicht (mehr) viel.
 

Marco13

Top Contributor
Ja, in dem Zusammenhang habe ich mir das wieder gedacht: Eigentlich schade, wenn sowas, wo man relativ viel Zeit investiert hat, dann so "untergeht". Aber das jetzt zu portieren wäre wiederum ziemlich aufwändig. Ich habe nochmal über den Quellcode geschaut, und er sieht eigentlich aufgeräumter aus, als ich es auf Basis verschwommener Erinnerungen gedacht hätte, (gut ein paar "magische" Stellen sind auch drin...
Java:
                    // possibly print coordinates somewhere at current axis...
                    // (it took a while to figure this out...)

                    if (major%(10*coordFactor[k])==0) {

                        bool shift=((k==(1-(vaZs&1)))||(k==2 && (vaZ&1)==1));
                        if (haveToPrint[k][i][vaX&1] & (0x80>>vaZ)) {

                            switch (k) {
                                case 0: glColor3d(0.9, 0.6, 0.6); break;
                                case 1: glColor3d(0.6, 0.9, 0.6); break;
                                case 2: glColor3d(0.6, 0.6, 0.9); break;
                            }

                            double axisPos[3] = { mat[12], mat[13], mat[14] };
                            for (int m=0; m<3; m++) {
                                for (int n=0; n<3; n++) {
                                    axisPos[m]+=mat[m+(n<<2)]*v[2][n];
                                }
                            }

                            printCoord(axisPos, offset, shift);
                        }
                    }

                    // ...and now it looks sooo easy...
... aber insgesamt recht überschaubar), aber die Hauptarbeit damals steckte eigentlich in der StackMachine: Da wollte ich auch noch eigene Funktionen (inklusive Rekursion) definieren können und so... (siehe Anhang) ...
Das wäre ja ein Teil, der in bezug auf die ursprüngliche Frage unwichtig wäre. Stattdessen ginge es erstmal ums Zeichnen, und da würde von dem alten C-Code nicht mehr viel übrig bleiben...
 

Anhänge

  • Plot02.png
    Plot02.png
    26,4 KB · Aufrufe: 47

Mostly_Harmless

Aktives Mitglied
Naja, was das Zeichnen angeht, werd ich jetzt erstmal bei JFreeChart bleiben.
Hab mir grad nochmal ein paar Beispielbilder auf deren Seite angeschaut und festgestellt, dass man wohl nicht so schnell an diese Qualität rankommt: http://www.jfree.org/jfreechart/images/demo_ring_surface.jpg

Aber wie Du schon sagtest wäre es wirklich schade, wenn die Zeit, welche Du damals in das Projekt investiert hast, jetzt verloren wäre (bis auf den Lerneffekt und den Spaß, den Du hoffentlich dabei hattest ;) ). Ich glaube, ich fände es auch mal ganz interessant in dieser Richtung selber was zu basteln.
 

Marco13

Top Contributor
Hmja, das sieht schon cool aus. Werd' mir wohl bei Gelgenheit mal ansehen, wie die das gemacht haben - OpenGL ist das ja anscheinend nicht? Ich kannte von JFreeChart bisher in erster Linie die 2D-Charts, hatte aber bei einem Blick in die API auch schon die ganzen "...3D"s gesehen. Warum packen die sowas nicht auf die Samples-Seite? ???:L Stattdessen irgendwelche Balkendiagramme, die man auch mit 20 Zeilen plain Swing hinhacken könnte :bahnhof: WENN man schon so eine mächtige Bibliothek entwickelt, will man doch auch ein bißchen damit angeben ... :D
 

Mostly_Harmless

Aktives Mitglied
Laut diesem Beitrag vom Projektleiter wird wohl nur Graphics2D verwendet.

Warum die ihre Samples nicht etwas überzeugender auswählen, ist mir auch ein Rätsel.
Dafür ist das Geschäftsmodell recht interessant: Die Bibliothek an sich wird unter freier Lizenz angeboten, für ein Developer Guide zahlt man allerdings knapp 60 € :D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M suche geeignetes Fenster zur Anzeige AWT, Swing, JavaFX & SWT 49
-DD Lobby/Spielerliste aktualisieren bei Suche AWT, Swing, JavaFX & SWT 1
looparda Suche Lib für Visualisierung von Graphen AWT, Swing, JavaFX & SWT 12
L JavaFX Ich suche das passende Textfield Event AWT, Swing, JavaFX & SWT 1
stroggi Swing Suche nach Kurveneditor (UI-Element) AWT, Swing, JavaFX & SWT 1
J Suche nach einer horizontal aufklappbaren Toolbar AWT, Swing, JavaFX & SWT 1
Maks16 JavaFX ominöse Mails in meinem Suche Postfach von Outlook Sharepoint AWT, Swing, JavaFX & SWT 4
S JavaFX Suche Literatur für JavaFX Einstieg AWT, Swing, JavaFX & SWT 8
P LookAndFeel Suche Buch und Beispielprojekte für gute Designs AWT, Swing, JavaFX & SWT 4
L [SUCHE] Tutorial zur grafischen Nutzeroberflächengestaltung AWT, Swing, JavaFX & SWT 6
S Swing Suche Drag & Drop Beispiele AWT, Swing, JavaFX & SWT 1
K Swing Konsolen Programm in GUI - Suche Hilfe bei Konsolenausgabe AWT, Swing, JavaFX & SWT 2
I Suche in einem Text AWT, Swing, JavaFX & SWT 4
TheWhiteShadow Swing suche passenden LayoutManager AWT, Swing, JavaFX & SWT 8
hdi LookAndFeel Suche: Substance L&F AWT, Swing, JavaFX & SWT 4
A Swing Suche Listener für beliebige Änderung an GUI Items/Controls AWT, Swing, JavaFX & SWT 8
G DB-Suche in GUI AWT, Swing, JavaFX & SWT 4
C Live Suche mit TextFeld AWT, Swing, JavaFX & SWT 2
A Swing suche OpenSource Date(Time)Picker Komponente AWT, Swing, JavaFX & SWT 9
A LookAndFeel Suche richtige Technologie für eine bestimme Desginvorlage AWT, Swing, JavaFX & SWT 5
N LayoutManager suche LayoutManager für Tabellenstruktur AWT, Swing, JavaFX & SWT 2
A Suche: Eclipse-GUI-Layout AWT, Swing, JavaFX & SWT 5
Nicer LookAndFeel Suche noch LaFs AWT, Swing, JavaFX & SWT 7
padde479 Suche eine Komponente (->ToolBar) AWT, Swing, JavaFX & SWT 7
E Swing JTree Filter Suche mit Collapse?! AWT, Swing, JavaFX & SWT 4
B Swing Suche JFileChooser zum Speichern AWT, Swing, JavaFX & SWT 2
slawaweis Suche TagCloud Komponente für Swing AWT, Swing, JavaFX & SWT 10
hdi SWT Suche passenden LayoutManager AWT, Swing, JavaFX & SWT 5
Nicer LookAndFeel Suche LaFs AWT, Swing, JavaFX & SWT 12
N Suche nach Komponente / LaF AWT, Swing, JavaFX & SWT 21
V [SUCHE]GUI Programmier Tutorial[Netbeans] AWT, Swing, JavaFX & SWT 8
M Suche passende Chart Library LGPL/kommerziell AWT, Swing, JavaFX & SWT 14
E Swing Suche LayoutManager AWT, Swing, JavaFX & SWT 5
hdi Swing Suche nach passendem Layout AWT, Swing, JavaFX & SWT 8
P Suche freien Date und Time Picker AWT, Swing, JavaFX & SWT 3
hdi Swing Suche passende API Klasse(n) für meine Komponente AWT, Swing, JavaFX & SWT 8
ModellbahnerTT Suche bessere Methode AWT, Swing, JavaFX & SWT 4
M Suche Java Komponente AWT, Swing, JavaFX & SWT 2
newcron Suche die hässlichsten Swing GUIs AWT, Swing, JavaFX & SWT 4
A Suche TreeTable-Komponente AWT, Swing, JavaFX & SWT 12
C Suche fertigen HTML editor AWT, Swing, JavaFX & SWT 2
V Suche "Einblendeffekt" AWT, Swing, JavaFX & SWT 6
V Suche Komponente AWT, Swing, JavaFX & SWT 2
hdi JTable -> Suche passenden Listener AWT, Swing, JavaFX & SWT 10
D Suche Framework um Grafikprogramm zu schreiben. AWT, Swing, JavaFX & SWT 36
Q Suche "Ablaufplan" für Swing-Fensterwechsel? AWT, Swing, JavaFX & SWT 2
R Ich suche einen sehr simplen. AWT, Swing, JavaFX & SWT 2
A Suche analoge Uhr in Java AWT, Swing, JavaFX & SWT 9
M Jlist Eintrag mit suche selektieren AWT, Swing, JavaFX & SWT 4
W Suche großes vollständiges Swing GUI Beispiel nach MVC Model AWT, Swing, JavaFX & SWT 5
G Suche 2 Componenten: Splitpane ausblenden / Stecknadel AWT, Swing, JavaFX & SWT 2
B Suche eine GUI-Komponente AWT, Swing, JavaFX & SWT 2
G Listener Suche für F1 AWT, Swing, JavaFX & SWT 25
D Suche verticale Progressbar AWT, Swing, JavaFX & SWT 2
E Suche kostenloses Iconset für Swing (Ocean) AWT, Swing, JavaFX & SWT 4
M Suche Komponente für mehrere 100.000 Zeile Text AWT, Swing, JavaFX & SWT 3
C suche 1.3er - compatible Version von Swing-layout AWT, Swing, JavaFX & SWT 15
S Ich suche ein Darstellungselement AWT, Swing, JavaFX & SWT 2
T Suche Methode zum anzeigen eines Textteils im JPasswordfield AWT, Swing, JavaFX & SWT 2
N [Suche] JTree Widget/Library. AWT, Swing, JavaFX & SWT 2
M auf der suche nach einer komponente AWT, Swing, JavaFX & SWT 3
G suche Actionlistener der "Loslassen" eines Buttons AWT, Swing, JavaFX & SWT 5
G Suche Tutorial zum Thema jdbc/SQL/Select/JTable AWT, Swing, JavaFX & SWT 9
O Suche einfache Möglichkeit zum Speichern AWT, Swing, JavaFX & SWT 21
H Suche Quelltext für einen einfachen Animationsthread AWT, Swing, JavaFX & SWT 8
EagleEye suche Tutorial(s) für JTable AWT, Swing, JavaFX & SWT 2
G Suche einen KeyEvent für die Taste "ä" AWT, Swing, JavaFX & SWT 7
M Mandelbrot mit BigDecimal erstellen und in der UI zeichnen, funktionierte nicht. AWT, Swing, JavaFX & SWT 1
H JavaFX Canvas neu zeichnen anstoßen AWT, Swing, JavaFX & SWT 34
H Transparent zeichnen mit drawImage in paintComponent Methode AWT, Swing, JavaFX & SWT 3
N JavaFX Unicode zeichnen in javafx Label verwenden AWT, Swing, JavaFX & SWT 2
G 2D-Grafik Grafik in zwei verschiedenen Fenstern gleichzeitig zeichnen AWT, Swing, JavaFX & SWT 9
S Event Handling Neu zeichnen nur wenn Berechnung fertig ist AWT, Swing, JavaFX & SWT 4
W JavaFX Ich kann keinen Kreis richtig zeichnen AWT, Swing, JavaFX & SWT 8
CptK Funktionsgraphen effizient zeichnen und nur Teile von JPanel erneuern AWT, Swing, JavaFX & SWT 2
G Dreieck aus Pixeln zeichnen AWT, Swing, JavaFX & SWT 8
N Mit KeyListener ein rechteck zeichnen AWT, Swing, JavaFX & SWT 9
B 2D-Grafik paintcomponent Probleme beim zeichnen AWT, Swing, JavaFX & SWT 10
Z Swing Graph zeichnen lassen AWT, Swing, JavaFX & SWT 16
O Kann kei neues Panel zum zeichnen aufrufen... AWT, Swing, JavaFX & SWT 4
L Swing zeichnen AWT, Swing, JavaFX & SWT 14
S GUI Kreuz zeichnen und Position ausgeben AWT, Swing, JavaFX & SWT 3
S GUI Kreis zeichnen AWT, Swing, JavaFX & SWT 13
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
L Swing Ein Rechteck in ein Grid Zeichnen AWT, Swing, JavaFX & SWT 5
L JavaFX Animation, erst zeichnen dann anzeigen AWT, Swing, JavaFX & SWT 4
K Mehrere Linien zeichnen AWT, Swing, JavaFX & SWT 8
E Transparent zeichnen AWT, Swing, JavaFX & SWT 2
S AWT Probleme beim Zeichnen AWT, Swing, JavaFX & SWT 3
T Tic Tac Toe - GUI Linien zeichnen AWT, Swing, JavaFX & SWT 14
C Applet Zeichnen über Button-Click AWT, Swing, JavaFX & SWT 13
Soloeco Graph zeichnen AWT, Swing, JavaFX & SWT 1
G Zeichnen Programm AWT, Swing, JavaFX & SWT 1
I Graph mit Swing zeichnen AWT, Swing, JavaFX & SWT 8
H Swing + Paint: Mehrere Objekte zeichnen lassen AWT, Swing, JavaFX & SWT 3
W Swing JPanel nur einmal nach mehreren Änderungen neu zeichnen AWT, Swing, JavaFX & SWT 1
D Quadrat, Rechteck zeichnen AWT, Swing, JavaFX & SWT 3
K Probleme beim zeichnen mit paintComponent() AWT, Swing, JavaFX & SWT 1
JG12111989 mehrere Polyline-Objekte zeichnen AWT, Swing, JavaFX & SWT 3
A Swing JRadioButton zeichnen nicht AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben