Dipl. User mit summa cum laude
So ... nun ist es wohl an mir, meinen Beitrag abzugeben ...
Ich koennte nun hier einen riesigen Post verfassen, aber stattdessen habe ich den ganzen Kram uebersichtlich und strukturiert auf einer Webseite praesentiert.
http://ineluki.rpg-atelier.net/Prog/...ki/Readme.html
Dort findet ihr sowohl eine Beschreibung, was ich gemacht habe, als auch die Quelltexte, den Turtle-Code, und die fertigen Graphiken. Das Lesen der Readme ist dringend empfolen !
Das gesamte Projekt kann in Einzeldateien oder als tar.bz2 heruntergeladen werden.
Da die so erstellten Graphiken recht gross sind (ca. 4 MB unkomprimiert, ca. 450 KB gzip komprimiert) verlinke ich sie hier nur.
Der von mir generierte Turtle-Code <- $ setzt factor auf 2, #RRGGBB setzt die Farbe auf RRGGBB
SVGZ mit Painting-Renderer und Option Speedup=10 <- Sorry, keine Internet Explorer Unterstuetzung
SVGZ mit Blending-Renderer <- Sorry, ich kann nix dafuer, dass der Internet Explorer Scheisse ist
SVGZ ohne Schnickschnack im Internet Explorer Kompatibilitätsmodus
Alle Codes sind unter Firefox und Chrome getestet. Internet Explorer 9 funktioniert nur mit dem IE-Renderer. Opera ist ungetestet, waere also schoen, wenn mir jemand bescheid geben koennte, ob dort alles funktioniert.
Als Programmiersprache habe ich GNU Awk verwendet. Warum ? Weil ich kann und sie dafuer eigentlich gar nicht gedacht ist.
OK, in Wahrheit mag ich diese tolle Scriptsprache und wollte mit meiner Einsendung demonstrieren, dass man durchaus anspruchsvolle Dinge mit Awk anstellen und auch große Datenmengen schnell verarbeiten kann. Zwar liegt der Schwerpunkt von Awk auf Regulaeren Ausdruecken und Textverarbeitung, aber mit ein paar kleinen Tricks kann man, wie hier gezeigt, durchaus auch byteweise arbeiten. Diejenigen von euch, die die BSD-Variante von awk benutzen, haben allerdings Pech gehabt, denn selbige unterstuetzt (noch) nicht die fuer meine Farbreduktion notwendigen binaeren Operatoren AND, RSHIFT und LSHIFT. Schade.
Was mich an Awk allerdings besonders stoehrt, ist, dass in der Sprache keine lokalen Variablen vorgesehen sind. ALLE Variablen sind global. Das fuehrt natuerlich unweigerlich zu Namenskollisionen. Der einzige Trick, mit dem man dies umgehen kann, ist, lokale Variablen mit uninitialisierten und unbenutzten optionalen Funktionsparametern zu emulieren, was ich an einigen Stellen auch getan und im Quelltext kommentiert habe. Die Syntax ist ziehmlich gewoehnungsbeduerftig, aber besser als gar nichts lokales. Leider ist Awk auch nicht objektorientiert, doch fuer so ein kleines Projekt, wie dieses hier, kann man ja mal darueber hinweg sehen. Wenigstens gibt es Funktionen, von denen ich auch regen Gebrauch mache.
So, jetzt ist aber genug geschwafelt. Viel Spass beim Begutachten meiner Einsendung. Ueber kosntuktives Feedback freue ich mich natuerlich besonders.