Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Mathematische Formeln als dynamisches Bild [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Mathematische Formeln als dynamisches Bild


 
Martin2506
02-07-2009, 23:19 
 
Guten Tag,

ich möchte euch hier meinen "dynamischen Bild-Formel-Editor" vorstellen.

http://math.q-soft.ch/ (http://math.q-soft.ch/)

Mit diesem Webservis ist es möglich eine mathematische Formel mittes URL direkt als Bild in einem Forum oder Website anzuzeigen.

Es ist u.a. für Foren gedacht, die keinen eigenen Formel-Code haben.
_______

Beispiel:

http://math.q-soft.ch/@Sum_{n.is.1}^{.inf.}{@Fr1{n^2}}.is.@Fr{$p^2}6.png

Diese Bild-URL versteht jedes (auch altes) Forum, da es nur erlaubte Zeichen hat, und ein Bildtyp, sodass auch ältere Foren es als echtes Bild erkennen.

Ergebnis:
http://math.q-soft.ch/@Sum_{n.is.1}^{.inf.}{@Fr1{n^2}}.is.@Fr{$p^2}6.png

Vorteil dieses Webservice ist, das keine zwischenschritte nötig sind, um ein Bild zu erzeugen, sondern nur die URL ändern muss.

Da das Bild auch mit Header übermittelt wird, speichern es die Browser auch temporär wie jedes andere Bild, somit wird es nicht immer wieder erzeugt.
_______

Auf der oben angegebenen Website findet ihr eine Hilfe für den Syntax.

Wäre gut wenn ihr mit ein Feedback geben könntet und mir ggf. Fehler oder Wünsche mitteilt.

 
unset
02-07-2009, 23:21 
 
Ich bin zwar eine Mathe-Neite, aber trotzdem: Coole Sache!

 
PHP-Desaster
03-07-2009, 00:20 
 
Sehr praktisches Tool. Kannst du ein wenig zu der Implementation erzählen? Das wird ja wohl nicht mit der GD gezeichnet werden, oder?

 
Martin2506
03-07-2009, 00:47 
 
Sehr praktisches Tool. Kannst du ein wenig zu der Implementation erzählen? Das wird ja wohl nicht mit der GD gezeichnet werden, oder?

Zur ersten Frage, ja kann ich machen.

Zur zweiten, doch.
____

Hier nun ein paar Fixpunkte:

.htaccess fängt die Bilder ab und senden den URL-Quelltextcode an php.
Der Quelltext wird analysiert und es wird eine ElementListe erstellt

Diese Liste besteht aus den einzelnen Objekten, wie Texte oder verknüpfungen (Brüche, Summen, usw.)
Die Elemente haben alle genaue Parameter wie Breite, Höhe, usw.
Die Elemente werden immer weiter zusammengefast bis das Hauptobjekt erreicht ist.

Nun wird erst das eigentliche Bild erstellt, indem rekursiv vom Hauptobjekt immer tiefer gegangen wird und die einzelnen Zeichen dargestellt werde.
Es werden also nicht einzelnde Bilder kopiert oder zusammengeschnitten (was sehr viel länger dauern würde), sondern es wird "mit einem Rutsch" alles auf ein einziges Bild gezeichnet.
Das ganze kommt mir nur sehr wenigen Funktionen aus:

u.a. imagettfbbox und imagettftext
der Hauptteil des Code besteht aus der Analyse und den verschiedenen Verknüpungen, die unterschiedlichen einfluss das das übergeordnete Element haben.

Wer sich für das "verschachteln" der Elemente interessiert, kann mal
&debug=2 in die URL einfügen, dann sieht man die Elemente.

Hier mal etwas größer:
http://math.q-soft.ch/@Sum_{n.is.1}^{.inf.}{@Fr1{n^2}}.is.@Fr{$p^2}6@@40&debug=2.png

Bin auch gerne für genauere Fragen offen.

 
PHP-Desaster
03-07-2009, 01:02 
 
Klasse, ein sehr tolles Projekt. Dass das ganze nur mit PHP entstanden ist gefällt mir noch viel mehr. Und die Generierungszeit ist einfach super. :respekt:

 
pekka
03-07-2009, 01:20 
 
Wow, ich bin zwar auch eine Mathe-Niete und kann es nicht wissenschaftlich bewerten, aber es sieht super aus und riecht so, als würde eine Menge Herzblut drinstecken. Die Umsetzung von URLEncoded in mathematische Notation war bestimmt eine Riesenarbeit. Hut ab!

 
mermshaus
03-07-2009, 14:33 
 
Ich finde es auch extrem cool. Hut ab!

Zwei Fragen, die sich mir spontan aufdrängen:

- Wieso nicht mit LaTeX?
- Dürfen die Bilder nur von deinem Server gezogen werden oder ist's gestattet, die auf den eigenen Server rüberzukopieren?

Gruß Marc

 
Martin2506
03-07-2009, 15:29 
 
- Wieso nicht mit LaTeX?
ich kenne zwar LaTeX, ahbe aber keine erfahrung damit und wüsste auch nicht wie ich es hätte einbinden sollen in php.

- Dürfen die Bilder nur von deinem Server gezogen werden oder ist's gestattet, die auf den eigenen Server rüberzukopieren?

Du meinst wenn das Bild erstellt ist, ob du das dann "runterladen" kann und dnan selber hochladen darfst?
Klar, das würde ja meinen Server entlasten, nur dann könntest du ja auch LaTeX oder Word nehmen und dort das Bild hochladen ^^

 
unset
03-07-2009, 15:33 
 
Naja, vielleicht lässt man sich das Bild ja dynamisch generieren und speichern. :-)

 
Berni
03-07-2009, 15:59 
 
wow, finde ich echt cool!

Wo genau liegt die Anwendung? Word und Co bieten doch ausreichende Editoren.

PS: Als Student habe ich gerne Mathematica for Students: The Software Solution for Your Math and Science Homework (http://www.wolfram.com/products/student/mathforstudents/index.html) verwendet.

 
mermshaus
03-07-2009, 16:27 
 
Du meinst wenn das Bild erstellt ist, ob du das dann "runterladen" kann und dnan selber hochladen darfst?
Klar, das würde ja meinen Server entlasten, nur dann könntest du ja auch LaTeX oder Word nehmen und dort das Bild hochladen ^^

Ja, genau. Der Hintergrund ist, auf legale Weise unabhängig von der Erreichbarkeit des Webservices zu sein. Wie unset sagte, könnte man das ja alles soweit automatisieren, dass man einen BBCode-Tag (oder wie auch immer) einfügt und PHP beim Parsen das erzeugte Bild von deinem Server rüberholen lässt. Ich hätte gerade nicht übel Lust, sowas zu basteln. :)

@LaTeX: Ich glaube, zum Beispiel Wikipedia erzeugt die Formelgrafiken mit LaTeX. Denke mal, die haben das auf einem Server installiert und rufen es mit shell_execute-Funktionen auf, wobei PHP nur der "Mittelmann" ist. Das klappt natürlich nicht so ohne Weiteres auf normalem 5 EUR Webspace. Ich wünsche mir deshalb schon lange 'nen Webservice, der das aus dem Absatz hier drüber ermöglicht.

 
Martin2506
03-07-2009, 16:45 
 
Vorab, erst mal Danke für das positive Feedback
_____

-Wo genau liegt die Anwendung?
Welche Anwendung ? Der Service ist doch "nur" ein php-Script.
_____

@mermshaus
Ja schon, aber wie gesagt An den Forenbaukästen gibs halt nicht immer ein .
Außrdem ist frisst das speichern der Bilder ja wieder Webspace, um damit nirgsn anzeige fehler kommen müssen auch alle erstellten Formel da bleiben. Mein Script speichert ja nix, das machen die Browser von sich aus, außer man klickt aktuallisieren.

Und zu LaTeX:
Der Hintergrund war ja von anfang an, "selber" sowas zu schreiben.
Klar könnte man den LaTeX Compiler auf den Server laden udn dann php ihn starten lassen, fertig ...
Aber ich persönlich finde den Syntax von LaTeX nicht so toll, das war dann auch n Grund selber sowas zu machen.

Der Service ist auch nicht dafür gedacht ganze Bücher zu schreiben ^^ sondern nur um schnell eine Formel irgendeinem zu zeigen ...

 
wahsaga
03-07-2009, 17:22 
 
@Martin2506: Bitte nutze auch du künftig die [quote]-Tags, wenn du Vorpostings zitierst.

 
TobiaZ
04-07-2009, 23:36 
 
Finde es auch sehr brauchbar!
Ein entsprechender Editor auf der Seite wäre sehr wünschenswert.

Wo genau liegt die Anwendung? Word und Co bieten doch ausreichende Editoren.Wer lesen kann ist klar im Vorteil! :teach:

 
Martin2506
05-07-2009, 00:42 
 
Ich verstehe nicht ganz was du mit Editor meinst ?

Oben gibt es eine eingabe Zeile, in die du das QuellCode eingibst und das Ergebnis siehst.

Wenn du meinst, dass es noch einen WYSIWYG-Editor geben soll, nein.
Denn eigentlich soll man ja nicht immer auf die seite gehen wenn man was will, sonst "später" wenn man den Syntax kennt einfach direkt die URL schreibt ...

Also ein Editor wo man die sachen anklicken kann die man will, wie zB in Word oder so wird nicht geben ...

 
onemorenerd
05-07-2009, 13:36 
 
Super Idee und ansprechendes Ergebnis!
Schreib noch eine saubere Webservice-Schnittstelle und Anbindungen für die bekanntesten Forumsysteme und CMS. Dann kannst du damit sicherlich auch ein paar Groschen verdienen.

Einen grafischen Editor wie in Word braucht es nicht. Aber so etwas wie ein Taschenrechner zur Eingabe der Formel wäre nett. Damit könnte man dann schnell mal ein Bild erzeugen ohne sich die Syntax zu Gemüte führen zu müssen.

Übrigens fehlt das d bei Änderungen in deinem Inhaltsverzeichnis.


Edit: Mit sauberer Schnittstelle meine ich z.B. dass sehr lange Formeln keinen 403er und eine Apache-Fehlermeldung liefern sondern den passenden Statuscode und vielleicht ein 0x0 Pixel Bild.

 
TobiaZ
05-07-2009, 13:38 
 
Schade, denn genau das würde das System gerade für Gelegenheitsnutzer anwendungsfreundlicher machen. Auf die Dauer werden IMHO gerade diese User das ganze benutzen. Die die sowas häufiger brauchen, werden drauf pochen, dass ein entsprechendes Mod im Forum eingebaut wird und sind dann nicht mehr auf deinen Service angewiesen.

Aber so etwas wie ein Taschenrechner zur Eingabe der Formel wäre nett.Genau sowas meine ich. Damit man sich halt nicht immer auf der Tastatur abmühen muss.

Aber nichts desto trotz, die Realisierung sieht wirklich gut aus.

 
Martin2506
05-07-2009, 19:01 
 
OKe, ich verstehe was ihr meint.
Also einfach so ähnlich wie hier im Forum die Buttons für Link, Fett, usw.,
sodass man nur noch auf "Summe" klickt und dann die Forlage bekommt:
@Sum_{ }^{ }{ }
und dann nur noch ausfüllen muss.
Das kann ich durchaus noch einbauen.

ich werde auch den Vorschlag von onemorenerd aufnahmen, sodass bei fehlerhaften URLs nicht einfach nur "schrott" oder garnix angezeigt wird, sondern dann einafch ein Bild indem der Fehler steht:
- Klammer wurde nicht geschlossen
- Unzulässige zeichen
- usw.

Das wäre nun die Sachen die ich demnächst in angriff nehmen, und natürlich die Rechtschreibfehler entfernen :(

 
combie
05-07-2009, 19:33 
 
Moin Martin, mir gefällt dein Projekt auch sehr!

Wohl auch weil es eine gute Ergänzung zu einem meiner bilden würde.
Vorführung: formelparser Doku (http://combie.de/fragmente/formelparser/NeuerParser/)
Noch etwas buggy, aber man kann schon sehen wo es hinführen soll. Als nächster Schritt sind Schleifen(o.ä.) und jpgraph Ausgaben geplant. Deine Formelpräsentation würde schön dazu passen :D

 
Berni
06-07-2009, 12:46 
 
auch nicht schlecht!

 
piratos
06-07-2009, 15:31 
 
Prima Angebot.

Allerdings sind einige bekannte Editoren wie Xinha in der Lage Formeln in der Art darstellen zu können.

 
TobiaZ
06-07-2009, 15:35 
 
Das hat der TO ja eingangs schon geschrieben. Aber gerade für die Foren, Blogs, etc. die sowas nicht integriert haben und dort wo es halt mal sporadisch gebraucht wird, ist es ne vernünftige alternative.

 
piratos
06-07-2009, 15:47 
 
ist es ne vernünftige alternative.

So ist es deswegen ja ein prima Angebot.


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:47 Uhr.