ElectricSheep endlos

Ich hab vor ner Woche oder so den Electric Sheep screen saver entdeckt. Geniales Teil. Der Autor beschreibt es so:

electricsheep demo

  • You're looking at 320×240@200kbps, it ain't impressive, it's too blurry
  • This is more impressive: 640x480@1500kps
Electric Sheep is a free, open source screen saver run by thousands of people all over the world. It can be installed on any ordinary PC or Mac. When these computers „sleep“, the screen saver comes on and the computers communicate with each other by the internet to share the work of creating morphing abstract animations known as „sheep“. The result is a collective „android dream“, an homage to Philip K. Dick's novel Do Androids Dream of Electric Sheep?.

Es ist also ein verteiltes Rendering-System; jeder laufende Screensaver rendert Einzelbilder der „sheep“ (ein „sheep“ ist eine 4-sekündige Animation) und sendet diese an den zentralen Server. Dieser rendert die Einzelbilder zu einer MPEG2-Datei, die wiederum an alle Clients verteilt wird. Nun kann der Client auch anzeigen, woran er die ganze Zeit rechnet.

Es gibt zwei Arten von Sheep: Loops und Edges. Ein Loop ist ein Durchlauf eines Themas, eine Edge stellt den Übergang zwischen zwei Themen dar. So kann der Screensaver ein flüssiges Bild zeigen, indem er einfach die aneinanderpassenden Animationen nacheinander abspielt. Manchmal erreicht er dann ein totes Ende in der Kette und muss irgendwo neu anfangen… dann bemerkt man den Bildwechsel mal.

Mit der Zeit hat man dann ein recht großes Archiv an „sheep“ auf dem Rechner… und ich muss meine Datenstrukturierungs- und Programmierfähigkeiten mal wieder auf Vordermann bringen. Also hab ich jetzt in Python ein Progrämmchen geschrieben, das mir die längste Kette in meinem sheep-cache liefert. Das Ergebnis seht ihr im Video rechts – eine Sequenz von elf sheep aneinandergehängt.

Und jetzt bastel ich an einem Progrämmchen, das mir die größte starke Zusammenhangskomponente liefert. Aber dafür lern ich erst mal noch die Boost Graph Library bzw. die Python Bindings dazu ;-)

Und dann ist der Algorithmus von Tarjan zur Bestimmung starker Zusammenhangskomponenten dran.

tag_kunst_python_programmierung_informatik