Grafik-Bibliotheken für Javascript

Es gibt eine riesige Zahl von Javascript-Bibliotheken, um (auch interaktive) Grafiken in Webseiten einzubinden. Die meisten haben einen speziellen Fokus, beispielsweise die Entwicklung von Spielen oder die Visualisierung von Daten. Es gibt auch mehrere Bibliotheken, die speziell zur Illustration von Mathematik gedacht sind.

JSXGraph

Mit der Bibliothek JSXGraph (Code auf Github), die am Lehrstuhl für Mathematik und ihre Didaktik University of Bayreuth entwickelt wird, habe ich einige kleine Applets für die Lineare Algebra 1 gemacht. Alle wichtigen graphischen Objekte der Ebene sind verfügbar (viel mehr, als ich benötigt habe) und können miteinander verknüpft werden. Es ist leicht, Objekte mit einer linearen Abbildung zu "transformieren" und interaktive Elemente einzubauen, das heißt, dass die Benutzer*in Punkte, Geraden usw. selbst verschieben kann und sich davon abhängige Objekte automatisch mitverändern.

Ein Beispiel: Ziehen Sie die roten Punkte - dies sind die Bilder der Standardbasisvektoren von $\mathbb R^2$ unter einer linearen Abbildung $f_A$. Hier ist das vollständige Applet, bei dem auch die zugehörige Abbildungsmatrix angezeigt wird und wo man die Abbildung durch Angabe der Abbildungsmatrix definieren kann.

Was ich noch nicht herausgefunden habe, ist, ob (wie?) man mit JSXGraph 3-dimensionale Objekte darstellen kann (ohne zu viel "per Hand" zu programmieren).

Fabric.JS

Mit Fabric.JS habe ich auch schon mal ein Applet gemacht. Hier handelt es sich um eine "allgemeinere" 2D-Grafikbibliothek, die nicht speziell auf die Darstellung von Mathematik fokussiert ist, aber dafür vielleicht etwas vielseitiger ist.

Cinderella, CindyJS

Ein anderes System, das interessant aussieht, ist CindyJS (Code auf Github), eine Javascript-Version von Cinderella (das auf Java beruht und damit heutzutage für den Einsatz im Webbrowser nicht mehr so richtig in Frage kommt).

Bei mir hat es nicht ohne weiteres geklappt, CindyJS mit anderen Javascript-Elementen auf derselben Seite (zum Beispiel Texteingabefeldern für die Einträge einer Matrix, die dann von dem CindyJS-Applet "ausgelesen" und verwendet werden können) zu verbinden (mit hoher Wahrscheinlichkeit ein Fehler meinerseits). Weil das mit JSXGraph funktioniert hat, habe ich das dann nicht weiter verfolgt.

D3

Mit D3.js habe ich in einem anderen Kontext mal gearbeitet. Es handelt sich hier um eine sehr umfangreiche und mächtige, modular aufgebaute Bibliothek, die in erster Linie der Visualisierung von Daten dient, aber gleichzeitig sehr flexibel ist. Wegen des großen Funktionsumfangs war aber (für mich jedenfalls) eine längere Einarbeitungszeit erforderlich, um zu einem funktionierenden Ergebnis zu kommen.

Geogebra

Eine andere sehr bekannte Software, die sowohl als "eigenes Programm" genutzt als auch in Webseiten eingebunden werden kann, ist GeoGebra. Ein Grund, warum ich mir das nicht genauer angeschaut habe, ist die - für mich - undurchsichtige Lizenzsituation, siehe etwa den letzten Absatz auf der Lizenz-FAQ-Seite, dessen erster Satz lautet GeoGebra is open source software and available free of charge for non-commercial users. - aus meiner Sicht in dieser Form ein Widerspruch in sich. Und es ist natürlich auch so, dass die Teile von GeoGebra, die tatsächlich Open source sind (und andere Open-source-Programme verwenden), auch kommerziellen Nutzern im Rahmen der entsprechenden Lizenzen zur Verfügung stehen.

Dass die Autoren von GeoGebra mit ihrem Produkt Einnahmen erzielen möchten, ist legitim und vernünftig und kann hoffentlich die nachhaltige Weiterentwicklung des Systems sichern. Das "Lizenzmodell" bzw. die Kommunikation darüber macht das Programm für mich persönlich unattraktiv. Insbesondere, dass einerseits die Open-Source-Karte gezogen wird und auf andere Open-Source-Programme zurückgegriffen wird, ich aber andererseits das Gefühl habe, dass die Nutzung der Open-Source-Komponenten allein unerwünscht ist. Und außerdem, dass die Rahmenbedingungen einer "kommerziellen" Nutzung (wie ist es, wenn ich in einem Buch einen Link auf ein solches Applet angebe?) individuell ausgehandelt werden müssten.

Kommentare