27. April 2009

randompaint-0.4.tar.gz

randompaint -W200 -H150 -s50000 -rg | convert - rg.png randompaint-0.4.tar.gz.

pict = create_canvas(width, height);
for (i=0; i<clrptr; i++)
	paint_randomly(pict, width, height, colors[i], length, steps);
dump_image(pict, width, height);
free_canvas(pict, height);

Et c’est quoi ça?

Die Menschen gehen ins Kino, um Menschen anzusehen. Hollywood macht es falsch, wenn es sie als Objekte behandelt. Man steckt sie in schöne Gegenden, in Rolls Royce Autos. Das ist alles unnütz, Menschen sind so phantastisch. Man kann mit ihnen keinen schlechten Film machen. Andy Warhol

16. April 2009

Mathematik und Natur

Pflanze Heute ein interessant klingendes Buch in einer Vorlesung kennen gelernt: The Algorithmic Beauty of Plants von Przemyslaw Prusinkiewicz und Aristid Lindenmayer. Unter anderem wird darin beschrieben, wie man auf den ersten Blick komplexe biologische Gebilde sehr einfach graphisch nachbilden kann. Grund dafür ist, laut Vorwort, erstens

… the elegance and relative simplicity of developmental algorithms, that is, the rules which describe plant development in time. The second is self-similarity, characterized by Mandelbrot as follows: When each piece of a shape is geometrically similar to the whole, both the shape and the cascade that generate it are called self-similar.

Dies kann man ausnutzen, indem man die Grundstruktur einer Pflanze mit Hilfe einer einfachen formalen Sprache beschreibt, die von einer turtle (vgl. Logo) interpretiert wird:

F: Gehe einen Schritt vorwärts
+: Drehe dich um den Winkel δ nach links
-: Drehe dich um den Winkel δ nach rechts
[: Merke dir deine Position
]: Springe zurück zur zuletzt gemerkten Position

FF-[-F+F+F]+[+F-F-F] Der Ausdruck F+F+F mit δ = 120° ergibt damit ein gleichseitiges Dreieck, F[-F]+F mit δ = 45° ergibt ein Y. Interessant wird es nun, wenn man jedes Vorkommnis von F innerhalb eines Audrucks mit einer sogenannten rewriting rule noch einmal durch denselben Ausdruck ersetzt und so eine Struktur erzeugt, die der oben erwähnten self-similarity gerecht wird. Diesen Ersetzungsvorgang kann man beliebig oft wiederholen und die Komplexität immer weiter erhöhen. Nimmt man zum Beispiel δ = 22,5° und startet mit dem Ausdruck FF-[-F+F+F]+[+F-F-F], der das Bild links erzeugt, erhält man schon nach dreimaligem Anwenden der rewriting rule FFF-[-F+F+F]+[+F-F-F] das Ergebnis rechts oben.

Wer sich für mehr Theorie interessiert, kann sich das Buch komplett als PDF herunterladen (siehe Link oben) und in Ruhe durchlesen oder sich den Wikipedia-Artikel zu L-Systemen angucken. Zum Herumspielen gibt es hier ein kleines Java-Tool.

Ein Eintrag mehr in meiner Muss-Ich-Irgendwann-Mal-Lesen-Liste.

13. April 2009

Einmal kurz Luft holen…

img_4238 img_4370 img_4304 img_4483

Møn.

100.000 SchritteNach meiner kleinen Serie von Experimenten mit dem Zufall und der zufälligen Misinterpretation von nicht-zufälligen Daten hatte ich heute Lust, noch ein bisschen mehr mit dem in diesem Satz bereits dreimal erwähnten, von mir so geliebten Konzept des Fehlens einer vom menschlichen Verstande feststellbaren Ordnung zu spielen.

Diesmal habe ich meinem Computer einen Stift in die Hand gedrückt und ihn auf eine 200×200 Pixel messende Leinwand kritzeln lassen, unter der Bedingung, den Stift niemals abzusetzen, nicht über den Bildrand hinauszumalen (wäre eine fiese Sauerei, im segmentation-fault-Sinn), und, was wohl das Wichtigste ist: sich keine großen Gedanken darüber zu machen, wohin er denn den Stift als nächstes bewegen soll. Dass der Computer sich darüber wohl ohnehin noch keine Gedanken machen wird und die ganzen Bedingungen eigentlich Bedingungen an mich als Instruktionsgeber sind, tut nichts zur Sache und bringt uns im schlimmsten Fall in einen gefährlichen Dschungel aus ontologischen und gar theologischen Fragen, die an dieser Stelle nicht so einfach zu erörtern sind und die ich deshalb erstmal hinten anstellen muss.

Nun zur Technik. Der Computer bekommt ein 2-dimensionales Array, das eine 200×200 Pixel große Bitmap bei einer Farbtiefe von 24 Bit (was eigentlich unnötig ist, da er erstmal nur Schwarzweiß malt, aber ichhattedashaltschonvorbereitet) repräsentiert. Beginnend an Position (0,0) wird dann per Zufall entschieden, in welche Richtung er seinen Stift um genau einen Pixel bewegen soll, wobei jeder Pixel, über den der Stift fährt, schwarz eingefärbt wird. Ein Startparameter legt fest, wie viele Positionswechsel insgesamt vollführt werden sollen. Ein paar der Ergebnisse seht ihr hier.

40.000 Schritte 200.000 Schritte 150.000 Schritte

Jetzt könnte ich noch ein schönes Fazit schreiben und eventuell den ein oder anderen geistreichen Kommentar zum Zusammenhang zwischen Titel dieses Beitrags und seinem Inhalt bringen, aber das tu ich nicht. Ich mag einfach die Bilder.

Archiv · Impressum · RSS
Copyright (c) Erik Scharwächter

April 2009 ·