Stifte, Mäuse und Vektorgrafiken Version 2.2

Sooo, habe endlich ein paar Testläufe durchgeführt und die gröbsten Fehler beseitigt.
Nähere Infos zu dem Paket hier. Download der neuen Version hier.
Update: Fehlerhafte Datei hochgeladen, nun korrigiert.

Update: Ich kann mich eines gewissen Stolzes nicht verwehren, dass ich an dieser Stelle SuM mit PyObjVG für PyS60 veröffentlichen kann. Ich freue mich über Rückmeldungen, die es mir ermöglichen, das Paket nicht nur auf dem mir vorliegenden Nokia 5500 zu testen.

Stifte und Mäuse — PyObjVG — Version 2.1

Aus der Versionsgeschichte von PyObjVG.py:
Version 2.1 vom 22. Januar 2009:

  • Zeichenroutinen hinzugefuegt. Das Zeichenobjekt, welches
    als Parameter uebergeben werden muss, muss die jeweiligen
    in der Dokumentation der Funktion angegebenen Methoden
    unterstuetzen.
  • Klasse Farbe: gibSUMFarbe weggelassen, dafuer den Zugriff
    auf die RGB-Werte ueber __getitem__ ergmoeglicht.
    Damit kann eine Farbe ebenfalls als 3-Tupel (wie in Stifte
    und Maeuse) interpretiert werden.
  • BUGFIX: Gruppe sendet bei aktivierten Signalen ebenfalls,
    wenn ein weiteres Objekt zur Gruppe hinzugefuegt wurde.
  • Zusaetzliche import-Anweisung zur Nutzung von
    xml.etree.cElementTree, falls vorhanden.

Passend dazu ist der Grafikzeichner des Stifte und Mäuse Paketes aktualisiert worden.
Version 2.1 vom 22. Januar 2009:

  • Es findet keine Objekterkennung mehr statt, statt dessen
    wird im Grafikzeichner eine abstrahierte Zeichenschnittstelle
    dargeboten, ueber die sich die Objekte sich selbst zeichnen.
    Damit ist die Integration von extern hergestellten
    Klassen vereinfacht. Diese muessen nur eine einzige Methode
    “zeichne(…)” zur Verfuegung stellen und koennen dann
    auf die vom Grafikzeichner abstrahierte Schnittstelle zugreifen.
  • Automatikmodus wird jetzt ueberall klein geschrieben,
    z.B. in der Methode gibAutomatikmodusStatus.
    Die Methode “setzeAutomatikModus” heisst jetzt “setzeAutomatikmodusStatus”.

Download: Stifte und Mäuse Bibliothek Version 2.1

Iterative Verfahren mit dünnbesetzten Matrizen

Im Rahmen eines Seminarvortrages habe ich einen Artikel zu iterativen Verfahren auf dünnbesetzten Matrizen ausgearbeitet. Die Einleitung sei hier zitiert:

Im Rahmen des Seminars Schwachbesetzte Systeme soll die vorliegende Arbeit einen groben
Überblick über verschiedene iterative Methoden zur Lösung linearer Gleichungssysteme
bieten. Dabei wird zwischen stationären und nicht stationären Verfahrensweisen unter-
schieden. Als Beispiel für stationäre Verfahren werden das Jacobi- und Gauss-Seidel-
Verfahren vorgestellt, ohne jedoch auf Details zum Konvergenznachweis einzugehen.
Um den Bezug zu Sparse-Matrizen herzustellen, wurde der Algorithmus des Jacobi-
Verfahren in zwei verschiedenen Codevarianten in Matlab implementiert. Je nach Schreib-
weise werden matlabintern verschiedenen Methoden verwendet, die eine starke Optimie-
rung bei der Rechnung mit dünn besetzten Matrizen ermöglichen.
Als Beispiel für ein nicht stationäres Verfahren wird das Verfahren der konjugierten
Gradienten (CG) näher erläutert. Die Verfahren Steepest Decent und Conjugate Directi-
ons werden dabei erklärt, um ein besonders intuitives Verständnis des CG-Verfahrens zu
ermöglichen (Shewchuk (1994)). Anhand des Implementierungsbeispiels soll o????ensichtlich
werden, dass eine Optimierung für Sparse-Matrizen nicht notwendig ist, da diese implizit
durch Anwendung von Matrix-Vektor-Multiplikationen realisiert wird.
Auf verschiedene andere Verfahren, die keine speziellen Vorbedingungen wie das CG-
Verfahren benötigen, wird nur im Rahmen einer zitierten Aufzählung mit minimaler
Beschreibung eingegangen.

Die Vortragsunterlagen inklusive Artikel und LaTeX-Quelltexte können hier heruntergeladen werden. Die m-Files von Matlab, die die angesprochenen Verfahren implementieren, stehen hier zum Download.

Stifte und Mäuse unter Creative Commons Lizenz

Dank der Erlaubnis von Ingo Linkweiler ist es mir nun möglich, dass Stifte-und-Mäuse-Paket für Python unter der Creative Commons Lizenz by-nc-sa zu veröffentlichen. Damit schnüre ich hier nun ein Paket zusammen, welches zum einen die Orginial SuM-Dateien (mit neuem Lizesierungshinweis), als auch die Grafikzeichnererweiterung inklusive PyObjVG-Modul enthält. Während die genannten Bausteine alle unter der Creative Commons Lizenz veröffentlicht sind, wird der SVG-Import durch das ElementTree-Toolkit mit gesonderten Lizenzbedingungen zur Verfügung gestellt.

Download.

PyObjVG Version 2.0

Im Rahmen eines universitären Projektes habe ich ein Python-Modul entworfen, welches Schülerinnen und Schülern ermöglicht, mit Hilfe von Python Vektorgrafiken zu erstellen. Dabei wurde keine grafische Benutzungsschnittstelle erzeugt, wie sie Vektorgrafikprogramme wie Inkscape benutzen, sondern ein Klassenkonzept zum Erzeugen von grafischen Primitiven, welche nur über passende Python-Befehle gesteuert wird.

Schülerinnen und Schüler müssen also beim Erzeugen eines Bildes Kenntnisse von den Attributen und Methoden der verschiedenen Klassen haben, als auch die syntaktischen Regeln der Programmiersprache Python einhalten.

Um der fehlenden Anschaulichkeit dieser Art und Weise der Grafikerzeugung entgegenzuwirken, sind zwei Erweiterungen vorgesehen.

  1. Der Im- und Export von SVG-Dateien
    Dies ist zum einen die einzige Möglichkeit der Speicherung konstruierter Grafiken (neben in Python eingebauten Methoden zu Serialisierung von Objekten), zum anderen ist damit eine Brücke zur Darstellung von Daten mit Hilfe von XML gezeigt. Da gängige Browser einen Großteil der SVG-Spezifikation darstellen können, ist zumindest eine Anschaulichkeit des Konstruktionsergebnis gegeben.
    Während der SVG-Export recht einfach zu Implementieren war, stellt sich der SVG-Import als sehr komplex dar, weil die Möglichkeiten von PyObjVG im Vergleich zu SVG sehr reduziert sind. Der SVG-Import muss daher in weiteren PyObjVG Versionen stark überarbeitet bzw. überprüft werden.
  2. Zeichnen mit Hilfe der Stifte-und-Mäuse-Bibliothek (vgl. Blog-Eintrag)
    Es wurde neben dem PyObjVG-Modul, welches ein in sich geschlossenes System zur Datenrepräsentation darstellt, eine Erweiterung für die Stifte-und-Mäuse-Bibliothek (in der Python-Desktop-Version nach Ingo Linkweiler) implementiert, welches Vektorgrafikobjekte des PyObjVG-Moduls interpretiert und entsprechende Zeichenroutinen aufruft. Diese neue “Grafikzeichner”-Klasse ist angepasst an das Signalweiterleitungskonzept des PyObjVG-Moduls und kann daher zur automatisierten Verfolgung des Aussehen der Vektorgrafik genutzt werden.

Das Projekt ist noch nicht beendet. Neben einer kleinen ToDo-Liste im Speziellen für den SVG-Import wurden noch keine größeren Testläufe durchgeführt. Ein spezieller Punkt für die Zukunft, der hier noch anzumerken ist, ist derjenige, dass ich ebenfalls an einer Schnittstelle für die Stifte-und-Mäuse-Bibliothek auf Mobiltelefonen arbeite. Da zum Jahreswechsel eine erste Version einer Portierung der Pygame-Bibliothek für PyS60 Systeme veröffentlich wurde, werde ich diese vor der Überarbeitung meiner Alpha-Version noch testen, vielleicht bieten sich dort verbesserte Möglichkeiten.

Zur Nutzung von PyObjVG auf Desktopsystemen werden folgende Teile benötigt.
Update:
Nach Änderung der Lizenzbedingungen (vgl. Blog-Eintrag) nun als Paket verfügbar.

  • Das Modul PyObjVG 2.0
  • Das Toolkit ElementTree (nur für SVG-Import benötigt)
  • Sumwrapper, Modifikation der SuM-Bibliothek, notwendig zur Nutzung der Klasse ‘Grafikzeichner’.
  • Die Klasse Grafikzeichner als Schnittstelle zwischen PyObjVG und SuM