Bernhard Häussner
Tags: Artikel mit dem Tag «Art» durchstöbern

Fraktale klicken

27.03.2009, 14:22
DHML fun

DHML fun

Letzte Woche bin ich über I could not stop auf dhteumeuleu gestolpert, wo es auch noch ein paar andere nette Javascript (DHTML) Spielereien zu sehen gibt. Mir waren diese roten und schwarzen Kacheln des Originals etwas zu langweilig, und so habe ich beschlossen (da die Demo ja auch unter einer CC-Lizenz steht) mal ein paar andere Bilder aus zu testen, die lustige Muster ausspucken.

Zuerst hatte ich vor etwas ähnliches wie das hier zu basteln, doch das stellte sich als nicht zu einfach heraus, da die schrägen Linien beim Unterteilen nicht richtig aneinander passen. Darum habe ich zunächst einen Rand und ein paar vertikale und horizontale Streben eingebaut, die sich dann immer weiter unterteilen Lassen.

» Demo

Dann wollte ich etwas Farbe ins Spiel bringen und habe noch die bisher weißen Zwischenfelder mit (sehr) bunten Farbvariationen gefüllt. Das ergibt dann ein paar nette, mehr oder weniger zufällig angeordnete Farbkacheln.

» Demo

Wenn sich das Ganze mit Farbe abspielt, kann man die inneren Verzweigungen eigentlich auch weg lassen. Das Ergebnis sind noch buntere Bilder. Leider hat man kaum noch Kontrolle über die Farbkomposition.

» Demo

Am Ende habe ich dann noch, nur um zu sehen, wie sich Schrägen machen, ein weiteres Derivat erstellt. Diesmal sind die Quadrate in zwei Dreiecke unterteilt und unterteilen sich bei Mausklick noch weiter. Im Endeffekt entsteht ein total zufälliger Mix aus Dreieckflächen, der ein wenig an Tangram erinnert.

» Demo

Die Muster sind dann so etwas wie teils zufällige, teils interaktiv gestaltete Fraktale.

Kommentare: 4 Einträge

Bilder züchten

12.02.2009, 17:32

Mit freeSq gezüchtetes Bild

Der neueste Trend ist es ja anscheinend genetisch zu Programmieren (bzw. programmieren zu lassen). Der Webcomic xkcd greift das Thema auf und Roger Alsing zeigt wie es geht. Mir geht es natürlich nicht darum Algorithmen genetisch zu basteln, oder Bilder nach zu stellen, sondern ich wollte einfach mal den Computer etwas herumprobieren lassen. Da wir in Kunst zurzeit kubistische Bilder malen müssen, habe ich mir gedacht, so etwas könnte doch auch ein Computer hin bekommen. Der Computer malt also Rechtecke, und versucht sie so hin zu bekommen, dass es ungefähr aussieht, wie das Originalbild.

Da das Vorgehen ja ein bisschen an die Biologie angelehnt sein sollte, benutzte ich so etwas, wie einen genetischen Algorithmus. (Es ist also nicht der Algorithmus, der „genetisch“ erzeugt wurde). Im ersten Versuch habe ich dem Computer fünfhundert, zunächst gleiche, weiße Rechtecke auf schwarzem Hintergrund vorgesetzt. Der Computer hat dann immer ein zufälliges Rechteck genommen und zufällig platziert. Die neuen Bilder waren also so etwas wie Kinder. Dann hat eine Fitting-Funktion überprüft, ob sich die Ähnlichkeit zur Vorlage verbessert hat. Wenn ja, hat er dieses neue zufällige Rechteck gespeichert (also in die „DNA“) aufgenommen und dieses Kind als neues Mutterelement verwendet. Hat sich nichts verbessert, hat er einfach ein weiteres Kind erzeugt.

Die Fitting-Funktion

Ich habe ein kleines Python-Script gebastelt, dass die Übereinstimmung zweier Bilder ausrechnen kann. Da alles in schwarz-weiß passiert, geht es jeden Pixel durch und addiert jeweils die Differenz der Rotwerte. Je größer die Zahl ist, desto schlechter passt das Bild. Der Computer favorisiert also Kinder mit kleineren Werten.

Zweiter Algorithmus

Da der erste Algorithmus zwar mit nur 500 Rechtecken immer bessere Näherungen erreicht hat, aber zum Ende hin sehr viele Versuche brauchte um wieder ein besser angepasstes Kind zu finden habe ich einen zweiten Algorithmus gebastelt, der diese Probleme vermeiden soll:

Er züchtet aus einem Elternelement zunächst 500 Kinder. Die Zucht-Funktion fügt allerdings jetzt jeweils ein schwarzes oder weißes Rechteck hinzu, wodurch Fehler schneller korrigiert werden können. Beim alten Algorithmus konnte ein fehlerhaftes Rechteck ja nur verschoben werden, wenn es zufällig gewählt und zufällig richtiger platziert wurde. Die Zahl der Rechtecke entspricht also der der Generation.

Die 500 Kinder sind zunächst noch klein und es werden nur 25% der Pixel gerastert. Die Kinder werden dann mit einer kleineren Version der Vorlage verglichen, und nur die besten 10 werden erwachsen und dann in voller Größe vergleichen. Damit werden nicht mehr so viel Ressourcen (Rechenzeit) für grobe Fehlplatzierungen verschwendet. Aus den letzten 10 Kindern wird dann das, welches in groß am Besten passt, als neues Elternelement gewählt, aus dem wiederum 500 neue Kinder-Bilder gezüchtet werden. Die 499 anderen Kinder werden für immer gelöscht, sodass nun nur noch die Elternelemente (die mit Verbesserungen) konserviert werden um meine Felsplatte zu schonen. So werden immer weiter bessere Merkmale vererbt, bzw. alte Fehler in den Merkmalen korrigiert.

Die DNA

Genau wie bei der echten DNA auch, werden die Informationen so gespeichert, dass die Kinder „wachsen“ können, nämlich als SVG. PHP kann durch seine DOM-Funktionen die DNA leicht verändern und die Rechtecke sind in einem angemessenen Format gespeichert. Mit dem Programm rsvg lassen sich die Rechtecke auch schnell rastern in allen beliebigen Größen.

Das Ergebnis

Der erste Algorithmus „500“ hat nach 21 Stunden 50830 Generationen erzeugt und einen dabei Das Original recht nett angenähert. Ursprünglich habe ich geplant ein kleines Video daraus zu erstellen, doch selbst bei 30 fps wäre es etwa eine halbe Stunde lang, und man würde hauptsächlich die Fehlschläge sehen. Deshalb nur einige Auszüge aus dem Werdegang:

Der zweite Algorithmus „freeSq“ ist so gebaut, dass er ohne Probleme unterbrochen werden kann und deswegen werde ich ihn wohl noch deutlich länger laufen lassen. Aber nach den ersten rund 2 Stunden und 255 Generationen (127500 Versuchen) ist das Entsanden (links Vorlage):

Seltsamerweise ist es etwas zu klobig, es wirkt bisher nicht so fein, dafür ein bisschen komplexer, doch es wird sich zeigen, wie es nach einigen weiteren Generationen aussieht. Da das Ganze sehr viel Zufall beinhaltet, könnte bei einem weiteren Durchlauf auch ein völlig anderes Bild entstehen. Ich bin gespannt.

Übrigens: So sieht Evolution bei den Simpsons aus.

Kommentare: keine

Caesar13

02.02.2009, 19:43

By André Mayer & Bernhard Häussner.

order prints

Tags:
Kommentare: 2 Einträge

Lego im Web 2.0

01.12.2008, 14:07
The Mechanical Stinkbug
The Mechanical Stinkbug

Stellen sie sich ein Netzwerk vor, in dem jeder etwas beitragen kann. Mancher ist da sehr kreativ. Ich denke jeder kennt zwar Lego und hat wahrscheinlich auch schon einmal selbst etwas gebastelt. Doch das Internet bietet kreativen Lego-Konstrukteuren die Möglichtkeit die Resultate ihrer kreativen Idden weltweit zu veröffentlichen. Und wen könnte das nicht interessieren?

Beim Videoportal Youtube findet man einige äußerst interessante technische Konstruktionen. So zum Beispiel ein Ottomotor, der jedoch auf Benzin verzichtet und stattdessen in die Lego-Hydraulikelemente Luft eines Kompressors pumpt. Jeder, der schonmal ein bisschen mit den Hydraulikelemnten herumexperimenteirt hat, weiß welche Power sie entfalten können. Dass das ganze dann auch noch mit 1440 rpm funktioniert wird hier eindrucksvoll bewiesen:


Lego 1440 rpm V8

Eine andere extreme Konstruktion ist die eines CD-Beschrifters. Die meisten Lego-Roboter erfüllen ja mehr oder weniger elementare und anschauliche, aber eigentlich nicht brauchbare Funktionen. Der CD-Beschrifter ist zwar leider nicht sehr schnell, macht seinen Job aber schon ganz gut:


Lego CD Writer

Besonders stylish sind die myriaden von kleinen Robotern und Kampfmaschienen, sowie Szenen aus Comics, Star Wars oder Matrix, die auf flickr ausgestellt sind. Zwei tolle Beispiele wären Bring It und Bloody Fang Battlesuit, jedoch findet man z.B. unter dem Tag MOC oder unter Lego Steampunk weiteres interessantes.

Kommentare: keine

Aufgewickelter Zahlenstrahl

12.11.2008, 21:08

Oben ein Bild der ersten ~700 000 Primzahlen, markiert auf einem „aufgewickelten“ Zahlenstrahl, auch bekannt als Ulam-Spirale. Eigentlich wollte ich ja nur die Primzahlen machen, aber als ich das PHP-Skript für den gewickelten Zahlenstrahl hatte, wollte ich das Ganze erstmal mit den Nullstellen von 0=x mod n testen, weil ich das Script um die Primzahlen zu laden noch nicht hatte. Dabei habe ich dann festgestellt, dass Modulo n (fester Abständ n; Vielfache von n) auch recht lustig aussieht:

(Tipp: In Originalgröße ansehen!)

Die Animation von Modulo 2-999 sieht auch recht cool aus:


Modulo 1-999 auf Ulam-Spirale

Das Primzahlenbild ist übrigens nicht unwesentlich inspiriert von Suzanne Daetwylers „Primzahlenbild 1-9216“, welches ich erstmals gesehen habe, bei einer Ausstellung im Würzburger Kulturspeicher rund um Kunst, von mathematischen Mustern angeregt.

Bei der Pixelweisen Darstellung, wie ich sie speziell für den Computerbildschirm erstellt habe, ist (das war meine Motivation) die von mir verwirklichte dargestellte Primzahl knapp unter 640 000 - bei einer Seitenlänge von 1200px sogar über 1,5 Millionen -, während ältere, durch das Medium Papier begrenzte Darstellungen, die Zahlen nur bist etwa 10 000 sinnvoll auflösen können. Um ein größeres Bild erstellen zu können hätte ich nur eine größere Primzahlendatenbank benötigt, bzw. einen guten Primzahltester.

Der Zahlenstrahl beginnt in der Mitte über den 3 zusammenhängenden Pixeln (2,3,11) und geht dann zuerst nach unten, dann nach links und im Uhrzeigersinn weiter. Die Diagonale von links oben nach rechts unten enthält die Quadratzahlen, weshalb sie keine einzige Markierung enthält.

Update: Lucky Numbers auf der Ulam-Spirale

Ich habe jetzt noch einen Zahlenstrahl mit den sog. Glücklichen Zahlen erstellt. Das bedeutet auf dem Strahl ist erst jede zweite Zahl geschwärzt, von den weißen dann jede dritte, von den übrigen weißen dann jede siebte usw. bis dann ein sehr sehr unregelmäßiges Muster entsteht. Es gibt auch noch einige Analogien zu den Primzahlen, dazu mehr bei Wikipedia.

Kommentare: keine
 
Χρόνογραφ
© 2008-2012 by Bernhard Häussner - Impressum - Login
Kurz-Link zur Homepage: http://1.co.de/